Aller au contenu

Créer / modifier / supprimer un rapport

La configuration du rapport est faite avec un fichier au format XML. Il s'agit de définir :

  • La requête sur la base de données cyberelements Identity pour récupérer les informations souhaitées,
  • Les propriétés de chaque colonne à afficher au format XML : Type d'objet, nom dans la base SQL, nom à afficher, index d'affichage...
  • Les options d'affichage des graphiques (histogramme, Camembert, pastilles de couleur).

Cliquez sur le bouton « Nouveau rapport » pour créer et configurer un nouveau rapport

Sélectionnez un rapport et cliquez sur le bouton « Modifier » pour modifier sa configuration.

Nouveau rapport

Propriétés d'un rapport

Paramètre Description Types et valeurs possibles
Nom Nom d'affichage du rapport. Chaîne de caractères. Obligatoire.
Code Représente l'identifiant de l'objet. Sa valeur doit être unique parmi tous les rapports. Chaîne de caractères, sans espace et sans caractère spécial. Obligatoire
Catégorie Catégorie du rapport au sein de laquelle s'affichera dans la liste des rapports. Liste des catégories prédéfinies.
Description Chaîne de caractères.
XML Balises XML décrivant la requête SQL dans la base Hpliance, les propriétés de chaque colonne du rapport et les propriétés des éléments graphiques. Texte sous format XML.
Choix d'un modèle de rapport Modèle graphique du rapport (en plus du tableau de données). Sans graphique, Histogramme, Histogramme empilé, Camembert ou Boule de couleur par seuil.
Avec paramètres Permet d'ajouter des variables saisies par l'utilisateur. Il faudra ajouter la balise au XML. Case à cocher.

Écrire le XML d'un rapport simple

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<Config> 

   <!--  S'il y a un graphique, indique s'il faut afficher le graphique sur le tableau de bord  --> 

   <DisplayGraphicInDashboard>true</DisplayGraphicInDashboard> 

   <!--  S'il y a un graphique, indique l'index d'affichage du graphique sur le tableau de bord  --> 

   <DashboardDisplayIndex>0</DashboardDisplayIndex> 

   <!--  Indique si les données sont affichées dès l'arrivée sur la page du rapport  --> 

   <DirectDisplay>true</DirectDisplay> 

   <!--  La requête SQL permettant de récupérer les données à afficher  --> 

   <Query></Query> 

   <!--  Définition de la liste des colonnes mises à la disposition de l'utilisateur. --> 

   <!--  La visibilité et l'index d'affichage de la colonne sont configurables par l'utilisateur lors de la consultation du rapport.  --> 

   <Columns> 

       <!--  Définition d'une colonne (à dupliquer autant de fois que nécessaire)  --> 

       <Column> 

           <!--  Le Type d'objet  --> 

           <ObjectType></ObjectType> 

           <!--  Nom de la colonne qui contient les IDs  --> 

           <Column_Link_Id></Column_Link_Id> 

           <!--  Le nom du champs tel qu'il est défini dans la requête.  --> 

           <Name></Name> 

           <!--  Le nom par défaut à afficher à l'utilisateur.  --> 

           <DisplayName></DisplayName> 

           <!--  Indique si cette colonne est visible par défaut. TRUE ou FALSE  --> 

           <Visible></Visible> 

           <!--  L'index d'affichage par défaut.  --> 

           <DisplayIndex></DisplayIndex> 

       </Column> 

   </Columns> 

</Config> 

Exemple : Liste des utilisateurs sans numéro de téléphone

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<Config> 

   <DisplayGraphicInDashboard>true</DisplayGraphicInDashboard> 

   <DashboardDisplayIndex>0</DashboardDisplayIndex> 

   <DirectDisplay>true</DirectDisplay> 

   <Query> 

SELECT personne_uid,personne_display_name FROM PERSONNE 

WHERE personne_id NOT IN(SELECT personne_id FROM PERSONNE_MULTIVALUED WHERE personne_schema_attribut_id = 7) 

AND personne_hidden=0 

</Query> 

   <Columns> 

       <Column> 

           <ObjectType/> 

           <Column_Link_Id/> 

           <Name/> 

           <DisplayName/> 

           <Visible/> 

           <DisplayIndex/> 

       </Column> 

       <Column> 

           <ObjectType/> 

           <Column_Link_Id/> 

           <Name>personne_uid</Name> 

           <DisplayName>UID</DisplayName> 

           <Visible>TRUE</Visible> 

           <DisplayIndex>1</DisplayIndex> 

       </Column> 

       <Column> 

           <Name>personne_display_name</Name> 

           <DisplayName>Nom</DisplayName> 

           <Visible>TRUE</Visible> 

           <DisplayIndex>2</DisplayIndex> 

       </Column> 

   </Columns> 

</Config>

Balises XML décrivant les colonnes d'un rapport

Balises XML Définition Valeurs possibles
Name Le nom du champ tel qu'il est défini dans la requête SQL. Chaîne de caractères.
Column_Link_Id Utilisé pour construire des colonnes dont le contenu est cliquable. Correspond au nom de la colonne contenant l'ID utilisé pour gérer le lien. Chaîne de caractères. Facultatif
ObjectType Type de l'objet cible du lien cliquable (Personne, structure). Personne = 1 => Redirection sur la page userDetails.aspx
Structure = 2 => Redirection sur la page structure.aspx
Facultatif
DisplayName Nom de la colonne à afficher dans l'interface. Chaîne de caractères.
Visible Indique si la colonne est visible ou cachée. 'TRUE' ou 'FALSE'
DisplayIndex Index de la colonne (ordre d'affichage). Entier supérieur à 0

Ajouter des paramètres saisis par l'utilisateur dans le rapport : balise

Sélectionnez la case à cocher « Avec paramètres » et ajoutez au XML les balises ci-dessous :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!--  Définition de la liste des paramètres attendus par la requête du rapport.  --> 

   <Parameters> 

       <!--  Définition d'un paramètre (à dupliquer autant de fois que nécessaire)  --> 

       <Parameter> 

           <!--  Le nom de la variable tel qu'elle est définie dans la requête.  --> 

           <Variable></Variable> 

           <!--  Le libellé à afficher à l'utilisateur.  --> 

           <Label></Label> 

           <!--  Un entier indiquant le type de données attendu (cf. la documentation pour les valeurs possibles) --> 

           <DataType></DataType> 

           <!--  Indique si l'utilisateur doit absolument préciser une valeur 'TRUE' ou 'FALSE'  --> 

           <Mandatory></Mandatory> 

           <!--  Dans le cas des paramètres optionnels, la valeur par défaut à mettre en cas de non-saisie par l'utilisateur.  --> 

           <DefaultValue></DefaultValue> 

       </Parameter> 

   </Parameters> 

Exemple : Droits arrivant à expiration

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<Query>DECLARE @DateNow AS DATETIME; SELECT @DateNow = GETDATE(); SELECT * FROM vHABILITATIONS_FULL WHERE (date_debut_lien IS NULL OR @DateNow > date_debut_lien) AND date_fin_lien IS NOT NULL AND ((0 = @ApplicationId) OR (application_id = @ApplicationId)) AND DATEADD(dd, @NbJours, @DateNow) > date_fin_lien ORDER BY date_fin_lien ASC</Query> 

<Parameters> 

      <Parameter> 

           <Variable>ApplicationId</Variable> 

           <DataType>4</DataType> 

           <Mandatory>TRUE</Mandatory> 

           <Label>Selectionnez l'application</Label> 

       </Parameter> 

      <Parameter> 

           <Variable>NbJours</Variable> 

           <DataType>23</DataType> 

           <Mandatory>TRUE</Mandatory> 

           <Label>Sélectionnez le nombre de jour</Label> 

       </Parameter> 

   </Parameters> 

Balises XML dans <Parameter> décrivant les paramètres pouvant être saisis par l'utilisateur :

Balise XML Définition Valeurs possibles
Variable Nom de la variable utilisé dans la requête SQL (sans l'@). Chaîne de caractères.
Data Type Type de l'objet cyberelements Identity du paramètre. Si ce n'est pas un type de base (date, string, int, ...), la paramètre sera une liste déroulante contenant les valeurs possibles. Structure=2 ; Règle d'habilitation=3 ; Application=4 ; Référentiel=5 ; Droit=8 ; StructureType=11 ; Arbre=12 ; AdminProfil=18 ; PersonType=19 ; Chaîne de caratères=22 ; Entier=23 ; Booléen=24 ; Date=25.
Label Libellé à afficher à l'utilisateur. Chaîne de caractères.
AttributeCode Code de l'attribut PSA. Chaîne de caractères correspondant à un code PSA.
Mandatory Indique si l'utilisateur doit absolument préciser une valeur. 'TRUE' ou 'FALSE
DefaultValue Dans le cas des paramètres optionnels, la valeur par défaut à mettre en cas de non-saisie par l'utilisateur. Chaîne de caractères.

Définir les paramètres des graphiques

Sélectionner le modèle graphique dans la liste déroulante et ajoutez au XML les balises ci-dessous :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<GraphicConfig> 

       <!--  Le type de graphique (1=Histogramme, 2=Histogramme empilé, 3=Camembert, 4=Boule de couleur par seuil  --> 

       <GraphicType>1</GraphicType> 

       <!--  Titre du graphique (s'il n'est pas mentionné, le nom du rapport sera utilisé  --> 

       <Title></Title> 

       <!--  La requête à utiliser pour récupérer les données qui vont servir à générer le graphique  --> 

       <Query></Query> 

       <!--  Le nom du champ de la requête qui servira d'abscisse  --> 

       <ColumnX></ColumnX> 

       <!--  Le nom du champ de la requête qui servira d'ordonnée  --> 

       <ColumnY></ColumnY> 

       <!--  Le libellé de l'abscisse  --> 

       <LabelX>Libellé colonne X</LabelX> 

       <!--  Le libellé de l'ordonnée  --> 

       <LabelY>Libellé colonne Y</LabelY> 

       <!--  Indique si le graphique est en 3 dimensions  --> 

       <ThreeDimension>false</ThreeDimension> 

   </GraphicConfig>

Histogramme empilé

Ajoutez les balises ci-dessous au sein de la balise :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 <!--  0 = chaque bloc compilé correspond à une colonne de données (valeur par défaut)  --> 

       <!--  1 = chaque bloc compilé correspond à un groupement de données à partir d'une seule colonne de données  --> 

       <StackColumnMode></StackColumnMode> 

       <!--  Définition de la liste des colonnes à empiler. --> 

       <StackedColumns> 

           <!--  Définition d'une colonne (à dupliquer autant de fois que nécessaire)  --> 

           <StackedColumn> 

               <!--  StackColumnMode = 0: Le nom du champs qui contient les données tel qu'il est défini dans la requête.  --> 

               <!--  StackColumnMode = 1: Le nom du champs qui permet de créer les blocs à empiler. (YColumn contient les données) --> 

               <DataField></DataField> 

               <!--  Le nom à afficher à l'utilisateur.  --> 

               <DisplayName></DisplayName> 

               <!--  Définit la couleur du bloc empilé (code HTML ou un nom du couleur)  --> 

               <Color></Color> 

           </StackedColumn> 

       </StackedColumns>

Boule de couleur par seuil

Ajoutez les balises ci-dessous au sein de la balise :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!--  Définition des seuils  --> 

       <Intervals> 

           <!--  Définition d'un seuil (à dupliquer autant de fois que nécessaire)  --> 

           <Interval> 

               <!--  Borne minimum incluse  --> 

               <Min></Min> 

               <!--  Borne maximum exclue  --> 

               <Max></Max> 

               <!--  Couleur de la boule pour le seuil défini (code HTML ou un nom du couleur)  --> 

               <Color></Color> 

           </Interval> 

       </Intervals>

Traduire les noms des colonnes d'un rapport

Les colonnes et les valeurs du résultat d’un rapport peuvent être traduites en plusieurs langues.

Voici un exemple d’un rapport ayant des colonnes traduites :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<Config> 

   <DisplayGraphicInDashboard>True</DisplayGraphicInDashboard> 

   <DashboardDisplayIndex>5</DashboardDisplayIndex> 

   <GraphicConfig> 

       <GraphicType>1</GraphicType> 

       <Title>Nombre de personnes par application et type de compte</Title> 

       <Query>SELECT APPLICATION.application_nom + ' - ' + compte_type_nom as Administrateur, T_PERSONNE_APPLICATION_GROUPED.total FROM (SELECT application_id, compte_type_id, COUNT(*) AS total FROM (SELECT DISTINCT personne_id, vPERSONNE_COMPTE_DROIT.application_id, compte_type_id FROM vPERSONNE_COMPTE_DROIT INNER JOIN DROIT ON DROIT.droit_id = vPERSONNE_COMPTE_DROIT.droit_id) T_PERSONNE_APPLICATION GROUP BY application_id, compte_type_id) T_PERSONNE_APPLICATION_GROUPED INNER JOIN APPLICATION ON APPLICATION.application_id = T_PERSONNE_APPLICATION_GROUPED.application_id INNER JOIN COMPTE_TYPE ON COMPTE_TYPE.compte_type_id = T_PERSONNE_APPLICATION_GROUPED.compte_type_id ORDER BY total DESC</Query> 

       <ColumnX>Administrateur</ColumnX> 

       <LabelX>Nom de l'administrateur</LabelX> 

       <ColumnY>total</ColumnY> 

       <LabelY>Nombre de compte</LabelY> 

       <ThreeDimension>false</ThreeDimension> 

   </GraphicConfig> 

   <Query>SELECT APPLICATION.application_culture, APPLICATION.application_nom, compte_type.compte_type_nom, compte_type.compte_type_culture, T_PERSONNE_APPLICATION_GROUPED.total FROM (SELECT application_id, compte_type_id, COUNT(*) AS total FROM (SELECT DISTINCT personne_id, vPERSONNE_COMPTE_DROIT.application_id,  

compte_type_id FROM vPERSONNE_COMPTE_DROIT INNER JOIN DROIT ON DROIT.droit_id = vPERSONNE_COMPTE_DROIT.droit_id)T_PERSONNE_APPLICATION GROUP BY application_id, compte_type_id) T_PERSONNE_APPLICATION_GROUPEDINNER JOIN APPLICATION ON APPLICATION.application_id = T_PERSONNE_APPLICATION_GROUPED.application_id INNER JOIN COMPTE_TYPE ON COMPTE_TYPE.compte_type_id = T_PERSONNE_APPLICATION_GROUPED.compte_type_id ORDER BY total DESC</Query> 

   <Columns> 

       <Column> 

           <Name>application_nom</Name> 

           <DisplayName>Application</DisplayName> 

           <Visible>True</Visible> 

           <DisplayIndex>1</DisplayIndex> 

           <Internationaldisplayname Lang="FR">Application_FR</internationaldisplayname> 

           <Internationaldisplayname Lang="EN">Application_EN</internationaldisplayname> 

           <CultureColumnName Prop="Name">application_culture</CultureColumnName>  

       </Column> 

      <Column> 

           <Name>compte_type_nom</Name> 

           <DisplayName>Compte type</DisplayName> 

           <Visible>True</Visible> 

           <DisplayIndex>2</DisplayIndex> 

          <Internationaldisplayname Lang="FR">Compte type</internationaldisplayname> 

           <Internationaldisplayname Lang="EN">Account type</internationaldisplayname> 

           <CultureColumnName Prop="Name">compte_type_culture</CultureColumnName>  

       </Column> 

       <Column> 

           <Name>total</Name> 

           <DisplayName>Nombre</DisplayName> 

           <Visible>True</Visible> 

           <DisplayIndex>3</DisplayIndex> 

           <internationaldisplayname Lang="FR">Nombre</internationaldisplayname> 

           <internationaldisplayname Lang="EN">Number</internationaldisplayname> 

       </Column> 

   </Columns> 

</Config>

Balises XML

  • Internationaldisplayname :
    • Définition : Balise utilisée pour traduire le nom des colonnes retournées par le rapport. Il doit y avoir autant de fois cette balise que de langues configurées dans cyberelements Identity.
    • Attribut : Lang=«<code_langue>» où <code_langue> représente le code de la langue defini dans la configuration des langues dans l'onglet General > Paramètre de l'application
    • Valeur possible : Chaîne de caractères. Nom de la colonne affichée dans le rapport pour la langue.
  • CultureColumnName :
    • Définition : Définition du XML de culture pour traduire le contenu du tableau résultant du rapport.
    • Attribut : Prop=«<Attribut_XML>» où <Attribut_XML> représente l'attribut de la propriété du XML de culture correspondant aux différentes valeurs de la colonne.
    • Valeur possible : Chaîne de caractères. Colonne de culture de la requête SQL.

Afficher le rapport en fonction du contexte de l'utilisateur

Dans la version 4000 d’Hpliance, il est possible d’ajouter à un rapport un paramètre invisible qui sera défini en fonction de la personne qui exécute le rapport. Les valeurs du rapport s'afficheront en fonction des valeurs d'un attribut de l'utilisateur. Par exemple, il ne verra que les résultats pour sa structure.

Exemple de rapport : Lister tous les droits des personnes qui sont dans la même structure. Affiche les noms, prénoms, droits et applications de toutes les personnes dont l'attribut de type structure « Responsabilité » est égale à celui de l'utilisateur connecté.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
<Config> 

   <DirectDisplay>true</DirectDisplay> 

   <Query>select P.personne_id,P.personne_nom, P.personne_prenom, D.droit_nom, A.application_nom 

from vHABILITATIONS_ALLAS VHA 

inner join LIEN_PERSONNE_STRUCTURE AS LPS ON LPS.personne_id = VHA.personne_id 

inner join DROIT AS D ON D.droit_id = VHA.droit_id 

inner join PERSONNE AS P ON P.personne_id = VHA.personne_id 

inner join APPLICATION AS A ON A.application_id = D.application_id 

where structure_idin  

(select * from dbo.fctSplitString(dbo.fctGetAttributeValueByPersonneIdAndPersonneSchemaAttributCode(@personneId, 'responsabilite'), '|')) 

</Query> 

   <Columns> 

       <Column> 

           <Name>personne_id</Name> 

           <DisplayName>ID</DisplayName> 

           <Visible>False</Visible> 

           <DisplayIndex>1</DisplayIndex> 

       </Column> 

       <Column> 

           <Name>personne_nom</Name> 

           <DisplayName>Nom</DisplayName> 

           <Visible>True</Visible> 

           <DisplayIndex>2</DisplayIndex> 

           <ObjectType>1</ObjectType> 

           <Column_Link_Id>personne_id</Column_Link_Id> 

       </Column> 

       <Column> 

           <Name>personne_prenom</Name> 

           <DisplayName>Prénom</DisplayName> 

           <Visible>True</Visible> 

           <DisplayIndex>2</DisplayIndex> 

           <ObjectType>1</ObjectType> 

           <Column_Link_Id>personne_id</Column_Link_Id> 

       </Column> 

       <Column> 

           <Name>droit_nom</Name> 

           <DisplayName>Droit</DisplayName> 

           <Visible>True</Visible> 

           <DisplayIndex>3</DisplayIndex> 

       </Column> 

       <Column> 

           <Name>application_nom</Name> 

           <DisplayName>Application</DisplayName> 

           <Visible>True</Visible> 

           <DisplayIndex>4</DisplayIndex> 

       </Column> 

   </Columns> 

<Parameters> 

       <Parameter> 

           <Variable>personneId</Variable> 

           <AttributUserConnected>True</AttributUserConnected> 

           <AttributeCode>personne_id</AttributeCode> 

      </Parameter> 

   </Parameters> 

</Config>

Balises XML décrivant les paramètres selon le contexte de l'utilisateur

  • Variable :
    • Définition : Nom de la variable utilisé dans la requête SQL (sans l'@).
    • Valeur possible : Chaîne de caractères.
  • AttributUserConnected :
    • Définition : Défini si le paramètre est défini en fonction du contexte de l'utilisateur courant ou si c'est un paramètre à saisir manuellement depuis l'interface.
    • Valeur possible :
      • True : Contexte utilisateur
      • False : Saisie manuelle
  • AttributeCode :
    • Définition : Code de l'attribut PSA.
    • Valeur possible : Chaîne de caractères correspondant au code PSA.