Informes DSW - Generador de informes DeepSeeWeb

Informes DSW - Generador de informes DeepSeeWeb


A menudo, en aplicaciones analíticas, los usuarios necesitan generar y enviar periódicamente informes PDF que constan de elementos del panel de control. En desarrollos basados ​​en tecnologías InterSystems, esta tarea es resuelta por el proyecto DSW Reports , que es una extensión de DeepSeeWeb. Este artículo describirá cómo usar DSW Reports para generar informes PDF y enviarlos por correo electrónico.


¿Qué son los informes DSW?


Una parte integral de InterSystems IRIS Data Platform es la tecnología para desarrollar aplicaciones analíticas de InterSystems IRIS Business Intelligence (anteriormente conocido como DeepSee). Hay un proyecto separado, DeepSeeWeb , que utiliza una interfaz web más moderna (AngularJS) para visualizar los paneles de control de BI de InterSystems IRIS. Para comunicarse con el lado del servidor, DeepSeeWeb utiliza MDX2JSON , un proyecto que proporciona acceso API REST a InterSystems IRIS BI.


Sobre DeepSeeWeb y MDX2JSON ya escribimos en los artículos uno y dos .


DSW Reports es una extensión DSW escrita en AngularJS que implementa la funcionalidad básica para informes automáticos. DSW Reports usa DeepSeeWeb para representar widgets y MDX2JSON para manejar solicitudes MDX.


Capacidades:


  • Representación de widgets seleccionados con filtros establecidos.
  • La salida del cálculo de consultas MDX arbitrarias.
  • Imprima automáticamente informes PDF y envíelos por correo
  • Personalizar la apariencia del informe usando estilos CSS

Informe HTML


Creación de informes


Para generar un informe en DSW Reports, solo cree al menos 2 archivos:


  • index.html : la estructura alámbrica y la página principal del informe, por lo general, no cambian.
  • config.js : configuración del informe, cambios para diferentes informes, es responsable de completar el informe.

El archivo de configuración del informe debe contener la función getConfiguration .


//    function getConfiguration(params){...} 

La función getConfiguration acepta un objeto params , que contiene parámetros de la cadena URL y un parámetro adicional " servidor ", que es la dirección del servidor. El parámetro " servidor " tiene la forma: protocol://host:port .


Gracias al objeto params , cualquier dato se puede transmitir al informe a través de la cadena URL. Por ejemplo, si desea cambiar los filtros de widgets como desee, pasamos el parámetro de filtro con el parámetro URL y estará disponible a través del objeto params .


 //<protocol://host:port>/dsw/reports/report_dir/index.html?filter=NOW function getConfiguration(params){ var filter = params["filter"]; // filter = "NOW" } 

La función getConfiguration devuelve un objeto que contiene 3 propiedades:


  • REPORT_NAME - nombre del informe
  • BLOQUES : una serie de bloques de informes
  • NAMESPACE : área de datos para el informe

Echemos un vistazo más de cerca a la matriz de bloques BLOCKS. Bloque: un objeto con configuraciones de widgets, configuraciones de campo calculadas, etc.


Tipo de bloque:


 { "title": String, //  "note": String, //  .   HTML  "widget": { // iframe : "url": String, //URL   iframe "height": Number, // iframe "width": Number // iframe }, "totals":[{ //     MDX "mdx": String //MDX- "strings": [{ //    "title": String, // .   HTML. "value": String, //    "value_append": String, //  . //    %, $  .. //%     (x * 100). //  HTML. "row": Number //  MDX-, //   . //  0. },{...}] },{...}]} 

Todos los campos son obligatorios si el campo no necesita ser configurado mejor por una cadena vacía.


Ejemplo de bloque
 { title: "Persons", note: "", widget: { url: server + "/dsw/index.html#!/d/KHAB/Khabarovsk%20Map.dashboard" + "?widget=1&height=420&ns=" + namespace, width: 700, height: 420 } } 

Otro ejemplo
 { title: "Khabarovsky krai", note: "Something note (only static)", widget: { url: server + "/dsw/index.html#!/d/KHAB/Khabarovsk%20Map.dashboard" + "?widget=0&height=420&isLegend=true&ns=" + namespace, width: 495, height: 420 }, totals: [{ mdx: "SELECT NON EMPTY " + "[Region].[H1].[Region].CurrentMember.Properties(\"Population\") ON 0,"+ "NON EMPTY {[Region].[H1].[Region].&[]," + "[Region].[H1].[Region].&[--],"+ "[Region].[H1].[Region].&[ ]} ON 1 FROM [KHABCUBE]", strings: [{ title: "Khabarovsk: ", value: "None", value_append: " ." }, { title: "Komsomolsk-on-Amur: <br />", value: "None", value_append: " .", row: 1 }, { title: "Komsomolsky district: <br />", value: "None", value_append: " .", row: 2 }] }] } 

¿Cómo rellenar el bloque?


Los campos principales para completar el bloque son url para la configuración del widget y mdx para la configuración de los valores calculados.


  • MDX también se puede compilar manualmente, pero se recomienda hacerlo utilizando el constructor Visual Analyzer integrado en InterSystems IRIS BI / DeepSee.

    Analizador
  • Las URL se pueden obtener usando DeepSeeWeb. Los widgets incrustados en el informe son iframes que provienen de widgets de DeepSeeWeb. Para obtener un enlace a la fuente, seleccione el elemento "Compartir" en el menú contextual del widget.

    Compartir

Personalización de la apariencia del informe.


Junto con las bibliotecas de informes, se proporciona un archivo style.css que le permite editar la apariencia del informe. Contiene un conjunto estándar de clases que controla todos los elementos del informe. También puede agregar sus propias clases de estilo y usarlas en el archivo index.html .


Boletín informativo por correo electrónico


Digamos que el informe está listo y se coloca en la carpeta de informes en DeepSeeWeb. Es decir Un informe HTML interactivo ahora está disponible aquí. ¿Qué hay que hacer para convertirlo a PDF y enviarlo por correo? Pthantomjs y el cliente SMTP incorporado lo harán automáticamente. Puede ver cómo instalar y configurar phantomjs aquí ( windows , ubuntu ). A continuación, debe configurar el cliente SMTP y crear una tarea en el Administrador de tareas .


Configuración de SMTP


Todos los ajustes se realizan en el terminal.


  1. Primero debe configurar el correo para enviar

     //    SMTP do ##class(DSW.Report.EmailSender).setConfig(server, port, username, password, sender, SSLConfig) 

    • servidor : la dirección del servidor SMTP.
    • puerto : puerto para mensajes salientes.
    • nombre de usuario y contraseña : datos de autenticación.
    • remitente : dirección de correo electrónico del boletín.
    • SSLConfig : opcional . El nombre de la configuración SSL .
  2. Luego debe configurar la lista de usuarios para su distribución.

     //     do ##class(DSW.Report.EmailSender).addRecipient(email) //     do ##class(DSW.Report.EmailSender).deleteRecipient(email) 
  3. Después de los pasos anteriores, puede iniciar el boletín.

     //    do ##class(DSW.Report.Task).Run(url, reportname) 

    • url : enlace al informe.
    • nombre del informe: el nombre del informe. Se usa al generar PDF.

Iniciar automáticamente la lista de correo


Para automatizar la distribución, utilizamos el Administrador de tareas . Cree una nueva tarea con los siguientes parámetros:


  1. En la primera página, el área de inicio está configurada y prescribimos nuestra función para iniciar el boletín.

    Tarea1
  2. En la segunda página, se configuran el tiempo y la periodicidad del inicio de la tarea.

    Tarea2
  3. Último paso: haga clic en "Finalizar" .

Todo, después de todas estas manipulaciones, obtuvimos un informe generado automáticamente, que consta de widgets DeepSeeWeb, que en un momento dado se envía por correo en forma de PDF.


Aquí puede encontrar un ejemplo de informe terminado .
→ Vea el archivo de configuración para este informe aquí.
→ Y aquí puede suscribirse para recibir informes semanales
Enlace al repositorio

Source: https://habr.com/ru/post/es419433/


All Articles