Rapports DSW - Générateur de rapports DeepSeeWeb
Souvent, dans les applications analytiques, les utilisateurs doivent générer et envoyer périodiquement des rapports PDF constitués d'éléments du tableau de bord. Dans les développements basés sur les technologies InterSystems, cette tâche est résolue par le projet DSW Reports , qui est une extension de DeepSeeWeb. Cet article décrit comment utiliser les rapports DSW pour générer des rapports PDF et les envoyer par e-mail.
Qu'est-ce que les rapports DSW?
La technologie de développement d'applications analytiques d' InterSystems IRIS Business Intelligence (anciennement DeepSee) fait partie intégrante de la plate - forme de données InterSystems IRIS . Il existe un projet distinct, DeepSeeWeb , qui utilise une interface Web plus moderne (AngularJS) pour visualiser les tableaux de bord InterSystems IRIS BI. Pour communiquer avec le côté serveur, DeepSeeWeb utilise MDX2JSON , un projet qui fournit un accès API REST à InterSystems IRIS BI.
À propos de DeepSeeWeb et MDX2JSON, nous avons déjà écrit dans les articles un et deux .
DSW Reports est une extension DSW écrite en AngularJS qui implémente la fonctionnalité de base pour le reporting automatique. DSW Reports utilise DeepSeeWeb pour rendre les widgets et MDX2JSON pour gérer les requêtes MDX.
Capacités:
- Rendu des widgets sélectionnés avec des filtres définis.
- La sortie du calcul des requêtes MDX arbitraires.
- Imprimez automatiquement des rapports PDF et envoyez-les par courrier
- Personnalisation de l'apparence du rapport à l'aide de styles CSS

Création de rapport
Pour générer un rapport dans DSW Reports, créez simplement au moins 2 fichiers:
- index.html - la structure filaire et la page principale du rapport, ne changent généralement pas.
- config.js - la configuration du rapport, les changements pour différents rapports, est responsable de remplir le rapport.
Le fichier de configuration du rapport doit contenir la fonction getConfiguration .
La fonction getConfiguration accepte un objet params , qui contient des paramètres de la chaîne URL et un paramètre supplémentaire " serveur ", qui est l'adresse du serveur. Le paramètre " serveur " a la forme: protocol://host:port
.
Grâce à l'objet params , toutes les données peuvent être transmises au rapport via la chaîne URL. Par exemple, si vous souhaitez modifier les filtres de widget comme vous le souhaitez, nous passons le paramètre de filtre avec le paramètre URL et il sera disponible via l'objet params .
La fonction getConfiguration renvoie un objet contenant 3 propriétés:
- REPORT_NAME - nom du rapport
- BLOCS - un tableau de blocs de rapport
- NAMESPACE - zone de données pour le rapport
Examinons de plus près le tableau de blocs BLOCKS. Bloquer - un objet avec des paramètres de widget, des paramètres de champ calculés, etc.
Type de bloc:
{ "title": String,
Tous les champs sont obligatoires si le champ n'a pas besoin d'être mieux défini par une chaîne vide.
Exemple de bloc { title: "Persons", note: "", widget: { url: server + "/dsw/index.html#!/d/KHAB/Khabarovsk%20Map.dashboard" + "?widget=1&height=420&ns=" + namespace, width: 700, height: 420 } }
Un autre exemple { 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 }] }] }
Comment remplir le bloc?
Les principaux champs à remplir dans le bloc sont url pour les paramètres du widget et mdx pour les paramètres des valeurs calculées.
- MDX peut également être compilé manuellement, mais il est recommandé de le faire à l'aide du constructeur Visual Analyzer intégré à InterSystems IRIS BI / DeepSee.

- Les URL peuvent être obtenues à l'aide de DeepSeeWeb. Les widgets intégrés dans le rapport sont des iframes provenant de widgets DeepSeeWeb. Pour obtenir un lien vers la source, sélectionnez l'élément "Partager" dans le menu contextuel du widget.

Personnalisation de l'apparence du rapport
Avec les bibliothèques de rapports, un fichier style.css est fourni qui vous permet de modifier l'apparence du rapport. Il contient un ensemble standard de classes qui contrôle tous les éléments du rapport. Vous pouvez également ajouter vos propres classes de style et les utiliser dans le fichier index.html .
Bulletin électronique
Supposons que le rapport soit prêt et placé dans le dossier de rapport de DeepSeeWeb. C'est-à-dire Un rapport HTML interactif est maintenant disponible ici. Que faut-il faire pour le convertir en PDF et l'envoyer par mail? Pthantomjs et le client SMTP intégré le feront automatiquement. Vous pouvez voir comment installer et configurer phantomjs ici ( windows , ubuntu ). Ensuite, vous devez configurer le client SMTP et créer une tâche dans le Gestionnaire des tâches .
Configuration SMTP
Tous les réglages sont effectués dans le terminal.
- Vous devez d'abord configurer le courrier pour l'envoi
// SMTP do ##class(DSW.Report.EmailSender).setConfig(server, port, username, password, sender, SSLConfig)
- serveur - l'adresse du serveur SMTP.
- port - port pour les messages sortants.
- nom d'utilisateur et mot de passe - données d'authentification.
- expéditeur - Adresse e-mail de la newsletter.
- SSLConfig - Facultatif . Le nom de la configuration SSL .
- Ensuite, vous devez configurer la liste des utilisateurs pour la distribution.
// do ##class(DSW.Report.EmailSender).addRecipient(email) // do ##class(DSW.Report.EmailSender).deleteRecipient(email)
- Après les étapes précédentes, vous pouvez démarrer la newsletter.
// do ##class(DSW.Report.Task).Run(url, reportname)
- url - lien vers le rapport.
- reportname - le nom du rapport. Utilisé lors de la génération de PDF.
Démarrer automatiquement la liste de diffusion
Pour automatiser la distribution, nous utilisons le gestionnaire de tâches . Créez une nouvelle tâche avec les paramètres suivants:
- Sur la première page, la zone de lancement est configurée et nous prescrivons notre fonction pour démarrer la newsletter.

- Sur la deuxième page, l'heure et la périodicité du lancement de la tâche sont configurées.

- Dernière étape - cliquez sur "Terminer" .
Tout, après toutes ces manipulations, nous avons obtenu un rapport auto-généré, composé de widgets DeepSeeWeb, qui à un moment donné est envoyé par mail sous forme de PDF.
→ Un exemple de rapport fini peut être trouvé ici.
→ Voir le fichier de configuration de ce rapport ici.
→ Et ici, vous pouvez vous inscrire à la livraison du rapport hebdomadaire
→ Lien vers le référentiel