- 4 Minutes à lire
- Imprimer
- SombreClair
- PDF
Guide Technique Stimulsoft
- 4 Minutes à lire
- Imprimer
- SombreClair
- PDF
Introduction
Ce document explique les briques techniques mises en place pour intégrer et adapter Stimulsoft pour permettre la création des Dashboards dans Xperience.
Intégrer Stimulsoft dans le LMS
Voici le lien pour intégrer Stimulsoft dans le LMS : Manuel de programmation Stimulsoft
Ajouter le NuGet Stimulsoft.Reports.Web
Mise en place du Designer (HTML5 Designer) (~\WebApplication\Features\Analytics\DashboardDesigner\)
Le controller DashboardDesignerController
Ce Controller contient toutes les méthodes appelées par le designer de Stimulsoft ainsi que l’activation par la clé de licence.
La view Index.cshtml
La view (associée à l’action Index) dans laquelle le designer sera rendu avec l’utilisation de la ligne :
@Html.Stimulsoft().StiMvcDesigner(Model.Options)
Le model Index.cs
Le model qui sera utilisé dans la view Index.cshtml avec une propriété Options qui contient :
Toutes les options de construction de la page du Designer de Stimulsoft,
Le mapping des Actions appelées par le code Stimulsoft :
Actions = new StiMvcDesignerOptions.ActionOptions
{
GetReport = nameof(DashboardDesignerController.Get),
SaveReport = nameof(DashboardDesignerController.Save),
DesignerEvent = nameof(DashboardDesignerController.DesignerEvent),
OpenReport = nameof(DashboardDesignerController.Import),
},
Mise en place du Viewer (HTML5 Viewer) (~\WebApplication\Features\Analytics\DashboardViewer\)
Le controller DashboardViewerController
Le Controller qui contient toutes les méthodes appelées par le Viewer de Stimulsoft ainsi que l’activation par la clé de licence.
La view Index.cshtml
La view (associée à l’action Index) dans laquelle le Viewer sera rendu avec l’utilisation de la ligne:
@Html.Stimulsoft().StiMvcViewer(Model.Options)
Le model Index.cs
Le model qui sera utilisé dans la view Index.cshtml avec une propriété Options qui contient :
Toutes les options de construction de la page du Viewer de Stimulsoft,
Le mapping des Actions appelées par le code Stimulsoft :
Actions = new StiMvcViewerOptions.ActionOptions
{
DesignReport = nameof(DashboardViewerController.Design),
GetReport = nameof(DashboardViewerController.Get),
ViewerEvent = nameof(DashboardViewerController.ViewerEvent),
},
Data adapter
Stimulsoft n’est pas conçu pour créer des Dashboard à partir des cubes. Nous utilisons pour cela un Custom Data Adapter. Consulter cet exemple d’utilisation d’un Custom Data Adapter pour PostgreSQL publié par Stimulsoft.
https://www.stimulsoft.com/en/samples/reports-net/net-framework/using-a-custom-data-adapter
Pour intégrer un custom Data Adapter pour les cubes, créer 3 classes comme dans l’exemple donné ici : ~\WebApplication\Features\Analytics\DataSource\Stimulsoft\
StiCubeDataAdapterService
Utilisé pour récupérer les données d’une Data Source à partir des filtres mis dans les composants ainsi que les dimensions demandées.
La méthode ConnectDataSourceToData
Cette méthode est appelée pour chaque Data Source si elle est utilisée dans un composant (Viewer et Designer).
A chaque fois que la méthode est appelée, elle crée un CubeInfoModel à partir des filtres et les dimensions des composants de la page puis exécute une requête sur le cube associé à la Data Source qui convertit les données vers DataTable et remplit la propriété DataTable de l’objet StiDataSource.
La classe de base est StiCubeSource.
Dans la page de designer les résultats pour une Data Source sont limités à 1000 lignes.
La méthode GetColumnsFromData
Appelée à partir de la page de designer lors d’un édit d’une Data Source pour récupérer la liste des colonnes d’une Data Source.
StiCubeDatabase
Sert à convertir les cubes vers un schéma compréhensible par Stimulsoft ainsi que instancier et ajouter les Data Sources.
La méthode GetDatabaseInformation
Retourne le schéma des cubes converti vers des DataTables. Elle est appelée lors de la récupération de tous les cubes disponibles avec ses colonnes.
La méthode ApplyDatabaseInformation
Appelée après la sélection des cubes à ajouter en tant que Data Sources. Elle permet de créer des Data Source à partir des cube sélectionnés.
La méthode RegData
Appelée lors d’un édit d’une Data Source à la récupération des colonnes. Cette méthode ajoute un StiData (cube DataTable) dans le DataStore pour que le code interne de Stimulsoft fasse appel à la méthode GetColumnsFromData de l’objet StiCubeDataAdapterService.
Pour des problème de performance rencontrés, la liste des colonnes retournées pour une Data Source sont les propriétés sans jointures et la clé étrangère de jointures avec d’autres cubes créés. Les autres propriétés de jointure avec des tables ne sont pas prises en compte. Vous pouvez rajouter la propriété dans la view édit d’une data source.
StiCubeSource
C’est l’objet Data Source qui représente un cube. Chaque Data Source possède une clé unique avec la format ( $"{cubeMetaId}{StimulsoftExtensions.KeySepartor}{Guid.NewGuid()}" ).
Dans le designer, il faut ajouter dans StiOptions, StiCubeDatabase et StiCubeDataAdapterService dans le constructeur du DashboardDesignerController.
Dans le viewer, il faut ajouter seulement StiCubeDataAdapterService dans le constructeur du DashboardViewerController s’il n’existe pas.
Limitations
Plusieurs améliorations ont été apportées afin d’améliorer la performance des Dashboards et la cohérence des données :
Ne pas afficher la liste des cubes en tant que Data Source à l’ouverture du designer et laisser l’administrateur ajouter les cubes et les colonnes dont il a besoin. Cela va permettre un affichage fluide de la page du designer, et éviter aussi de surcharger l’utilisateur d’informations qu’il n’exploitera pas lors de la création de son Dashboard.
Dans la popup d’ajout d’une nouvelle source de données, les cubes sont affichés mais il n’y a pas la liste totale des colonnes pour chaque cube. Seulement les colonnes du cube et les clés étrangères des jointures avec d’autres cube sont affichées.
Les autres colonnes de jointure avec d’autres tables ne sont pas affichées vu la volumétrie de la liste qui cause un problème de performance lors de récupération de la liste des cubes https://dev.azure.com/syfadis/Syfadis%20Experience/_workitems/edit/48635.
Les tableaux restent problématiques provoquant un problème de performance d’affichage du Dashboard si vous voulez afficher toutes les données avec plusieurs colonnes pour une base de données large. Il est préconisé lors de l’affichage de tableau de limiter les volumes affichés, et de jouer sur du drill-down pour permettre à l’utilisateur d’aller creuser ses données, en restant toujours sur des volumes limités et plus facilement exploitables.
Les fonctions
Les fonctions dans Stimulsoft servent à ajouter du traitement supplémentaire sur les data retournées par les cubes.
Ajouter une fonction dans Stimulsoft
Ajouter une methode static dans une classe static tel que la classe et la méthode décorées avec l’attribut StiDescription.
L’attribut sur la classe définit le groupe de la fonction. C’est un dossier qui sera créé dans Stimulsoft lorsqu’il n’y a plus qu’une fonction dans un groupe.
Dans une classe on peut ajouter une ou plusieurs fonctions du même groupe.
Ajouter le type du class dans la liste « functionGroupTypes » dans le fichier StiCustomFunctionsHelper.cs.
Exemple: