Remarques générales sur les datasources


Généralités

  • Les types de datasources présents dans chaque catégorie de la bibliothèque sont définis par Logo - EasyVista.png. Vous ne pouvez pas en créer de nouveaux.
  • Les datasources sont définis une seule fois dans la bibliothèque de l'application et sont disponibles pour l'ensemble des widgets de cette application.
  • Afin d'optimiser les performances de chargement de la page courante en mode Conception, seuls les datasources utilisés par celle-ci sont ouverts.
  • Les datasources utilisés par l'application sont affichés en cliquant sur Apps - Manage datasources icon.png dans le volet Objets de l'éditeur graphique.
    • Ils sont précédés de l'icône identifiant leur type. 
    • Ceux pointant sur un alias sont inscrits en gras
    • Un compteur Utilization counter icon.png indique le nombre de fois où le datasource est utilisé dans l'application. La liste des widgets est affichée en survolant le compteur.
               EVApps - GUI - Manage Datasources.png
  • Chaque datasource possède des propriétés qui lui sont propres, définies via l'inspecteur de propriétés. Les propriétés obligatoires sont regroupées dans la catégorie Content.
  • Lorsqu'un datasource est supprimé, l'association avec tous les widgets qui l'utilisent est automatiquement supprimée.

Best Practice big icon.pngBonnes pratiques

  • Utilisez de préférence les alias pour associer un datasource à une base de données. Pointez sur un connecteur lorsque la base de données ne change pas, quelle que soit l'étape du processus de mise en production.
  • Dès que vous créez un datasource, renommez-le afin d'identifier rapidement sa fonction. À la création, le nom par défaut est le type du datasource suivi du numéro d'incrément ( n ) du datasource du même type.
             Example documentation icon FR.png  CSV Online ( 3 ) ==>  3ème datasource "CSV Online" défini pour l'application
  • Utilisez la propriété Configure Field Types pour avoir un aperçu des données du datasource. Utilisez ensuite le Data Transformer sur chaque widget pour définir la structure et le périmètre du datasource.
             Example documentation icon FR.png   Apps - datasources Properties - Preview button.png   ==>  Apps - datasources Properties - Preview datasource.png

Datasources statiques / dynamiques

  • Les datasources statiques :
    • Ils donnent une vision des données à un instant t. 
    • Pour réactualiser leur contenu, vous devez à nouveau télécharger le fichier de données.

               Example documentation icon FR.png  Datasource CSV

  • Les datasources dynamiques :
    • Ils affichent des données en temps réel. 
    • Leur contenu est mis à jour, sans intervention de l'utilisateur ni de l'administrateur de l'application, par une réexécution automatique de la requête ou un rechargement automatique du fichier Online. 
    • La réactualisation des données se fait à chaque lancement de l'application et à chaque réaffichage de la page, à la fois en mode Exécution et en mode Édition. 
    • Vous pouvez également définir une fréquence de rafraîchissement automatique via la propriété Auto Refresh.

               Example documentation icon FR.png Datasource REST

Best Practice big icon.pngBonnes pratiques

  • Utilisez un datasource statique pour afficher des données figées dans le temps ou pour effectuer les tests de mise en page de l'application, lorsque les sources de données applicatives ne sont pas encore en place.
  • Utilisez un datasource dynamique lorsque les données sont susceptibles de varier régulièrement.

 

Structure habituelle d'un datasource

Généralement, un datasource comporte une colonne Dimension (1) (la première colonne) et une ou plusieurs colonnes Mesure (3) (les colonnes suivantes). Note : Si la disposition Dimension / Mesures est inversée dans le datasource, renseignez la propriété Data > First Row Contains Dimension Elements.
         EVApps - widgets Properties - Datasource Structure.png

  • la dimension (1) comprend des éléments de dimension (2) :
    • l'intitulé de la dimension correspond à l'en-tête de la première colonne (ex. : Services) ;
    • le libellé de chaque élément de dimension correspond aux en-têtes de la première colonne de chaque ligne (ex. : Ventes, Marketing, Administration).
  • chaque mesure (3) comprend des valeurs (4) définies pour chaque élément de dimension (ex. : valeur 4,3 pour la mesure Incident par employé et l'élément de la dimension Ventes).

Relation maître-détail

Une relation maître-détail permet de relier, via une clé commune, 2 ensembles de données de 2 datasources différents de sorte que tous les enregistrements de l'un - ensemble de données détail - correspondent toujours à un enregistrement unique dans l'autre - ensemble de données maître. Cette relation peut être de 2 sortes :

  • relation (1,n) : à un enregistrement du datasource maître correspond n enregistrements du datasource détail ;

     Example documentation icon FR.png  Afficher toutes les lignes (détail) d'une commande (maître) ; Afficher toutes les commandes (détail) d'un client (maître) ; Afficher toutes les actions (détail) d'un incident (maître) ; Afficher tous les matériels (détail) d'un utilisateur (maître) ; Afficher tous les matériels (détail) d'une marque (maître)

  • relation (1,1) : à un enregistrement du datasource maître correspond un enregistrement du datasource détail.

     Example documentation icon FR.png  Afficher toutes les informations du destinataire (détail) d'un incident (maître)

Caractéristiques

  • Le datasource maître s'appuie sur n'importe quel type de datasource et permet de sélectionner la clé parmi tous les champs de celui-ci.
  • Le datasource détail s'appuie obligatoirement sur un datasource EasyVista et permet de sélectionner la clé parmi tous les champs de la vue associée.
  • Une relation maître-détail de type (1,1) est définie uniquement au travers d'un formulaire de détail d'un widget Data Viewer.

Best Practice big icon.pngBonnes pratiques

  • Utilisez une relation maître-détail de type (1,n) pour afficher une liste d'enregistrements via un widget Data Viewer reposant sur le datasource maître (présentation des informations principales en mode Liste) et affichez la liste des enregistrements liés à l'enregistrement en cours via un second widget Data Viewer reposant sur le datasource détail  ==>  Cette configuration s'effectue au niveau du datasource détail qui doit être un datasource EasyVista.
  • Utilisez une relation maître-détail de type (1,1) pour afficher une liste d'enregistrements via un widget Data Viewer reposant sur le datasource maître (présentation des informations principales en mode Liste) et sollicitez le datasource détail via un second widget Data Viewer uniquement au moment de l'affichage du détail de l'enregistrement en cours (présentation en mode Forme) ==>  Cette configuration garantit des performances optimisées et s'effectue au niveau des propriétés Form du widget Data Viewer.
  • Ne confondez pas relation maître-détail et drill-down : utilisez le drill-down lorsque le datasource contient des données agrégées via une vue Product name - ev itsm.png (ex. : Matériels par localisation).
  • Utilisez des datasources maître-détail ne remontant pas trop de lignes pour garantir des performances optimales.
         Example documentation icon FR.png  Afficher tous les employés d’un site peut ralentir le système s'il y a des milliers d’employés sur le site

Exemples

Afficher la liste des actions d'un incident  ==>  relation (1,n)

       Master-Detail relation - Example Incidents-Related actions.png

1. Créez un datasource pour rechercher la liste des incidents (datasource maître Incidents défini via la requête parent Operation  > Incidents > Tous les incidents) et un datasource EasyVista pour rechercher la liste des actions de chaque incident (datasource détail Actions liées défini via la requête parent Operation > Actions > Toutes les actions).

  • Le datasource EasyVista détail doit être lié au datasource maître via les propriétés suivantes :
    • Master Datasource = datasource Incidents 
    • Master Field = PK identifiant la colonne Incident_ID de la table Incidents (clé principale de la table ou Primary Key)
    • Detail Field = FK_AM_ACTION_REQUEST_ID identifiant le numéro de l'action liée à l'incident (clé étrangère de la table ou Foreign Key)

2. Ajoutez un widget Data Viewer Liste des incidents et reliez-le au datasource maître Incidents.

3. Ajoutez un widget Data Viewer Actions de l'incident et reliez-le au datasource détail Actions liées pour afficher la liste des actions de l'incident en cours.
 

Afficher les informations du destinataire d'un incident  ==>  relation (1,1)

       Master-Detail relation - Example Incidents-Recipient.png
1. Créez un datasource pour rechercher la liste des incidents (datasource maître Incidents défini via la requête parent Operation > Incidents > Tous les incidents) et un datasource EasyVista pour rechercher la liste des employés (datasource détail Utilisateurs défini via la requête parent Administration > Gestion des accès > Employés).

2. Ajoutez un widget Data Viewer Incidents et reliez-le au datasource maître Incidents.

3. Définissez la propriété Line Cell Format du datasource :
      Example documentation icon FR.png

<div>Creation Date: #[FIELD('{*RTZCONVERT(SD_REQUEST.SUBMIT_DATE_UT)*}')]#</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; ==> Recipient: #[FIELD('AM_RECIPIENT.LAST_NAME')]#</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; ==> Incident: #[FIELD('SD_REQUEST.RFC_NUMBER')]#</div>

4. Définissez les propriétés Form du datasource : 

  • Form Detail Datasource : Datasource Utilisateurs contenant les informations du destinataire de l'incident
  • Form Detail Data Transformer : Si nécessaire, sélectionnez les champs que vous souhaitez afficher en mode Fiche
  • Form Cell Format : Définissez le formulaire Fiche affichant les informations du destinataire via l'éditeur de texte

            Example documentation icon FR.png

<div>
   <table style="border-collapse:collapse;width:100%;">
      <tbody>
         <tr>
            <td><img src="#[FIELD('AM_EMPLOYEE.PICTURE_PATH')]#" /><br /></td>
            <td><span style="text-decoration: underline;">Contact</span>:&nbsp; #[FIELD('AM_EMPLOYEE.E_MAIL')]#<br /></td>
         </tr>
         <tr>
            <td><br /><span style="text-decoration: underline;">Recipient</span>: <span style="font-size: 18pt;">#[FIELD('AM_EMPLOYEE.LAST_NAME')]#</span><br /></td>
            <td><br /></td>
         </tr>
      </tbody>
   </table>
</div>
Tags :

Raccourcis

Portail client

Tous les changements
•  Service Manager
•  Service Apps
•  Self Help
•  Service Bots

Powered by XWiki © EasyVista 2022