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.

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_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>
<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_ALL AS 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_id in
(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.