STUDIO Arbres
1. Principe d’un arbre paramétré
Les arbres paramétrés sont des outils de paramétrage de Work-Flow, permettant d’afficher des données sous forme d’arbre, ergonomie équivalente aux présentations de nomenclatures ou les explorateurs applicatifs de DIAPASON, permettant aussi de paramétrer des actions, de la même manière qu’une liste paramétrée et un tableur dynamique.
![](../__attachments/115210533/att_19_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
A la différence d’une liste, un arbre permet de hiérarchiser des données. Par contre les fonctionnalités de recherche, filtre et tris n’étant pas présentes, il faut dans le cas d’un arbre limiter le nombre de données à afficher.
L’exécution d’un arbre paramétré se fera de manière équivalente à une Liste Paramétrée, on le retrouvera :
Dans les explorateurs.
Depuis une application à cœur standard
Depuis une application à cœur paramétré
Comme père de couplage
Remarque : contrairement à une liste paramétrée, un arbre n’est pas lançable depuis le navigateur.
2. Définition d’un arbre
Le paramétrage des arbres est accessible dans l’explorateur « studio DIAPASON », à la branche « arbres ».
![](../__attachments/115210533/att_20_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Onglet généralités :
![]() | Les informations de cet onglet sont générales à tous les objets de DIAPASON.
|
Onglet Démarrage :
![]() |
|
Onglet Définition
![]() |
|
Onglet Interface
![]() |
|
Onglet Actions
![]() |
|
Onglet Critères conditions
![]() |
|
3. Actions de gestion sur les arbres
Actions standard de gestion : création, modification, duplication, suppression…
Accès aux nœuds: Action permettant d’ouvrir l’application de définition du détail des arbres.
Cas d’Emploi dans les Actions: Présente la liste des cas d’utilisation de l’arbre (Explorateurs Applicatifs, AME, etc.).
Créer un Raccourci: Affiche la fiche standard de définition d’un raccourci. Le raccourci créé permettra de lancer l’arbre directement depuis la barre de raccourcis du bureau.
4. Définition du détail de l’arbre
Onglet général
![]() | On va saisir ici la référence du nœud et celle de son père, cela va permettre de positionner le nœud dans l’arbre. La zone libellé initialise le libellé du nœud, l’icône, sera celle de ce nœud, et le bouton « Lst. Action » permet de définir la liste des actions disponibles sur ce nœud.
|
Onglet Informations
![]() | Cet onglet contient l’initialisation des informations générales que porte le nœud. On peut y renseigner trois clés, cinq valeurs alphanumériques, cinq valeurs numériques, cinq date, cinq logique. |
Onglet Couplage
![]() |
|
5. Construction d’un arbre
La structure de l’arbre à son démarrage peut être établie depuis l’application de gestion de structure de l’arbre, si celle-ci est statique, dans le cas ou elle peut dépendre de critères ou de données, une requête de type REB dite de construction de l’arbre permet de déterminer sa structure, à partir d’une liste standard DIALOG.
La méthode de construction d’un arbre paramétré sera différente selon son mode de chargement. Il existe deux modes de chargement :
Complet : au démarrage de l’arbre, toute sa structure est définie, elle ne pourra être modifiée que lors d’une actualisation. Cette structure initiale peut être définie statiquement depuis l’application de gestion de structure de l’arbre.
Par niveau : Une requête de construction sera nécessaire dans ce cas, le principe est que pour chaque ouverture de nœud, la requête de construction est exécutée, une liste standard DIALOG contiendra les nœuds à afficher.
La structure d’un arbre est déterminée par deux listes standard DIALOG :
WfArbEnt : liste accessible seulement en lecture, elle représente la structure de l’arbre au moment de l’exécution de la requête.
WfArbSor : liste en écriture. Elle contient soit une liste de nœuds fils du nœud ouvert dans le cas du mode par niveau, soit la structure complète de l’arbre.
Leur structure est la suivante :
Champs | Description |
NodIdeEnc | Identifiant du nœud courant. UNIQUE. A initialiser seulement dans le cas du mode complet. |
NodIdePer | Identifiant du nœud père. UNIQUE . A initialiser. |
NodRef | Référence du noeud |
NodRefPere | Référence du nœud père |
NodNOrd | Numéro d’ordre |
NodLib | Libellé du nœud |
NodIco | Icône du nœud |
NodIcoFer | Icône fermé du nœud |
NodCl1 | Clé information liée |
NodCl2 | Clé information liée |
NodCl3 | Clé information liée |
NodVa1 | Valeur alphanumérique |
NodVa2 | Valeur alphanumérique |
NodVa3 | Valeur alphanumérique |
NodVa4 | Valeur alphanumérique |
NodVa5 | Valeur alphanumérique |
NodNu1 | Valeur numérique |
NodNu2 | Valeur numérique |
NodNu3 | Valeur numérique |
NodNu4 | Valeur numérique |
NodNu5 | Valeur numérique |
NodDa1 | Valeur Date |
NodDa2 | Valeur Date |
NodDa3 | Valeur Date |
NodDa4 | Valeur Date |
NodDa5 | Valeur Date |
NodLo1 | Valeur Logique |
NodLo2 | Valeur Logique |
NodLo3 | Valeur Logique |
NodLo4 | Valeur Logique |
NodLo5 | Valeur Logique |
NodTab | Table de l’enregistrement lié au nœud (DiaTab) |
NodIde | Identifiant de l’enregistrement lié au nœud (DiaIde) |
NodLstAct | Liste des actions disponibles sur le nœud |
AppCouEnfTyp | Type d’enfant de couplage lié au nœud (dans le cas où l’arbre est père de couplage) |
AppCouEnfRef | Référence de l’enfant de couplage lié au nœud (dans le cas où l’arbre est père de couplage) |
Une troisième liste DIALOG permet de donner le chemin d’un nœud. Celle-ci sera utilisée, lors d’une actualisation ou d’un rafraîchissement, ou pour le mode « par niveau » lors de l’ouverture d’un nœud, et servira à donner des informations permettant de retracer le chemin de l’origine de l’arbre jusqu’au nœud concerné par l’action.
Champs | Description |
NodNiv | Niveau du nœud (en commençant par 1 pour l’origine). |
NodRef | Toutes les variables : récupération de toutes les variables SCR, VCR, VBP de l’application père. |
NodNOrd | Numéro d’ordre |
Construction d’un arbre complet
Le principe de ce mode est d’alimenter la totalité de la structure de l’arbre au démarrage de celui-ci. Lors du démarrage de l’arbre, suite à l’exécution de la requête de démarrage, la requête de construction est exécutée.
Dans le cas où tout ou partie de la structure de l’arbre a été initialisée dans le détail de l’arbre, celle-ci est pré chargée dans la liste WfArbSor. Cela permet de se dispenser de la requête qui va construire l’arbre.
Dans le cas où l’initialisation de WfArbSor par l’application de gestion de la structure de l’arbre n’est pas suffisante, la requête de construction de l’arbre va permettre de modifier cette liste et de la compléter.
En mode complet, le principe de filiation entre deux nœuds se base sur les champs NodIdeEnc et NodIdePer. Le champ NodIdeEnc doit être unique dans tout l’arbre, c’est la valeur à laquelle on fait référence dans le champs NodIdePer.
Enfin, lorsqu’une action nécessite une actualisation, ou un rafraîchissement, la requête de construction peut être exécutée, un critère permet d’identifier ce cas, la liste WfArbSor de vra entièrement être initialisée pour une actualisation, ou contenir les modifications sur les nœuds existant (il faut récupérer l’identifiant sur WfArbEnt et le recopier sur WfArbSor) pour un rafraîchissement.
Construction d’un arbre par niveau
La construction par niveau permet par rapport au chargement global d’améliorer les performances. La requête de construction va dans ce cas là être exécutée pour chaque ouverture de nœud, et elle va retourner la liste des nœuds fils de celui qui est en cours d’ouverture.
Dans le cas où tout ou partie de la structure de l’arbre a été initialisée dans l’application prévue à cet effet, la liste WfArbSor va être initialisée avec tous les fils du nœud en cours d’ouverture trouvés dans cette structure initiale.
La requête de construction de l’arbre va être exécutée dans un premier temps au démarrage pour renseigner le nœud d’origine. Ensuite, celle-ci va être exécutée à chaque ouverture de nœud, en donnant un contexte en entrée permettant d’identifier le nœud ouvert, puis, en sortie de la requête, la liste WfArbSor va contenir la liste des fils de ce nœud si il en existe.
Le système de filiation dans ce cas va se baser sur les champs NodIdeEnc et NodIdePer, sauf que pour NodIdeEnc, il ne sera pas nécessaire de l’initialiser dans la requête, DIAPASON va attribuer une valeur. L’initialisation de NodIdePer va se faire en lui attribuant la valeur de l’identifiant du nœud père passé en entrée de la requête (voir tableau récapitulatif).
Variables contextuelles pour une construction complète
Contexte en entrée :
Toutes les variables critères de type IAP permettant d’identifier l’arbre et son application père.
SCR.ARB_ArbRef
SCR.ARB_ActCtx = « CONS »
Si la requête est exécutée au démarrage de l’application :
SCR.ARB_ActCtxCons = « DEM »
La liste standard WfArbSor initialisée par le détail de l’arbre.
Si la requête est exécutée lors d’une actualisation :
SCR.ARB_ActCtxCons = « ACT »
SCR.RCT_TypeAction : Code de l’action ayant déclenché le réaffichage
SCR.ARB_NodIdeEnc : Identifiant du nœud courant
SCR.ARB_NodIdePer : Identifiant du nœud père du courant
La Liste standard WfArbEnt disponible en lecture contenant la structure actuelle de l’arbre
La liste standard WfCheEnt disponible en lecture contenant les nœuds menant au nœud courant
Si la requête est exécutée lors d’un réaffichage :
SCR.ARB_ActCtxCons = « REA »
SCR.RCT_TypeAction : Code de l’action ayant déclenché le réaffichage
SCR.ARB_NodIdeEnc : Identifiant du nœud courant
SCR.ARB_NodIdePer : Identifiant du nœud père du courant
La Liste standard WfArbEnt disponible en lecture contenant la structure actuelle de l’arbre
La liste standard WfCheEnt disponible en lecture contenant les nœuds menant au nœud courant.
Traitement à réaliser :
Il s’agit d’initialiser la liste WfArbSor avec toute la structure de l’arbre, si la requête est exécutée au démarrage.
S’il s’agit d’une actualisation, la liste WfArbSor doit être initialisée avec toute la structure de l’arbre, et la variable SCR.NodPosSor donnant l’identifiant du nœud de positionnement (par défaut le nœud courant).
S’il s’agit d’un rafraichissement, la liste WfArbSor doit être initialisée avec seulement les nœuds qui seront modifiés, ceux-ci ne changeant pas d’identifiant, ni de référence, et la variable SCR.NodPosSor donnant l’identifiant du nœud de positionnement (par défaut le nœud courant).
Contexte en sortie :
La liste WfArbSor
SCR.NodPosSor
Variables contextuelles pour une construction par niveau
Contexte en entrée :
Toutes les variables critères de type IAP permettant d’identifier l’arbre et son application père.
SCR.ARB_ArbRef
SCR.ARB_ActCtx = « CONS »
Si la requête est exécutée au démarrage de l’application :
SCR.ARB_ActCtxCons = « DEM »
La liste standard WfArbSor initialisée par la racine.
Si la requête est exécutée lors de l’ouverture d’un nœud
SCR.ARB_ActCtxCons = « OUV »
SCR.ARB_NodIdeEnc : Identifiant du nœud ouvert
SCR.ARB_NodIdePer : Identifiant du nœud père de celui ouvert
La Liste standard WfArbEnt disponible en lecture contenant la structure actuelle de l’arbre
La liste standard WfCheEnt disponible en lecture contenant les nœuds menant au nœud courant
La liste standard WfArbSor initialisée avec les nœuds fils du nœud ouvert qui ont été définis sur l’application de définition du détail de l’arbre.
Si la requête est exécutée lors d’une actualisation :
SCR.ARB_ActCtxCons = « ACT »
SCR.RCT_TypeAction : Code de l’action ayant déclenché le réaffichage
SCR.ARB_NodIdeEnc : Identifiant du nœud courant
SCR.ARB_NodIdePer : Identifiant du nœud père du courant
La Liste standard WfArbEnt disponible en lecture contenant la structure actuelle de l’arbre
La liste standard WfCheEnt disponible en lecture contenant les nœuds menant au nœud courant
Si la requête est exécutée lors d’un réaffichage :
SCR.ARB_ActCtxCons = « REA »
SCR.RCT_TypeAction : Code de l’action ayant déclenché le réaffichage
SCR.ARB_NodIdeEnc : Identifiant du nœud courant
SCR.ARB_NodIdePer : Identifiant du nœud père du courant
La Liste standard WfArbEnt disponible en lecture contenant la structure actuelle de l’arbre
La liste standard WfCheEnt disponible en lecture contenant les nœuds menant au nœud courant.
Traitement à réaliser :
Il s’agit d’initialiser la liste WfArbSor avec la racine de l’arbre, si la requête est exécutée au démarrage.
S’il s’agit de l’ouverture d’un nœud, la liste WfArbSor doit être initialisée avec la liste des nœuds enfants du nœud ouvert, la variable SCR.ARB_NodPosSor donnera l’identifiant du nœud de positionnement (par défaut le nœud courant).
S’il s’agit d’une actualisation, la liste WfArbSor doit être initialisée avec la liste des nœuds fils du nœud représenté par la variable SCR.ARB_NodIdeSor. Pour le nœud de positionnement en sortie de requête, deux solutions, soit le nœud de positionnement existe déjà, la variable SCR.ARB_NodPosSor sera l’identifiant de ce nœud de positionnement dans WfArbEnt, sinon la SCR.ARB_NodRefCre sera la référence du nœud parmi ceux qui sont dans WfArbSor.
S’il s’agit d’un rafraichissement, la liste WfArbSor doit être initialisée avec seulement les nœuds qui seront modifiés, ceux-ci ne changeant pas d’identifiant, ni de référence, et la variable SCR.ARB_NodPosSor donnant l’identifiant du nœud de positionnement (par défaut le nœud courant).
Contexte en sortie :
La liste WfArbSor
SCR.ARB_NodPosSor
SCR.ARB_NodIdeSor (uniquement si SCR.ARB_ActCtxCons = « ACT »)
SCR.ARB_NodRefCre (uniquement si SCR.ARB_ActCtxCons = « ACT »)
7. Définition des actions
Les actions d’un arbre paramétré vont toutes être définies sur l’application de gestion des arbres, de la même manière que celles d’une liste paramétrée, via l’application de définition des actions.
Lors de la construction de l’arbre, il sera nécessaire de déterminer les actions qui doivent y être actives.
8. Exemple : Arbre simple statique
Ce premier exemple est le plus simple, il permet de définir un arbre, dont la structure est entièrement pré déterminé via l’application de définition de structure de l’arbre. Celle-ci est accessible depuis une action sur la définition des arbres.
Informations générales
Dans l’application de définition de l’arbre, accessible de puis l’explorateur « studio DIAPASON », l’onglet généralité va nous servir à renseigner les informations permettant d’identifier notre arbre dans l’explorateur et en action :
![](../__attachments/115210533/att_24_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
La désignation sera présente dans le(s) explorateur(s) lançant l’arbre :
![](../__attachments/115210533/att_11_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Elle sera également présente dans le cas où l’arbre est lancé depuis une action paramétrée définie dans une application à cœur standard :
![](../__attachments/115210533/att_12_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
![](../__attachments/115210533/att_13_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Le libellé court lui sera présent sur la barre de commande pour représenter cette action :
![](../__attachments/115210533/att_14_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Voici le résultat que l’on obtiendra en paramétrant cet exemple, on retrouve bien le titre et l’icône définis sur l’application :
![](../__attachments/115210533/att_15_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Démarrage
Les différents démarrages, et la récupération des critères du père vont être paramétrés sur l’onglet « démarrage », dans le cas de l’exemple, aucun critère n’est nécessaire au démarrage, cet arbre sera démarré depuis l’explorateur de « Gestion Commerciale » :
![](../__attachments/115210533/att_25_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Le mode de démarrage est « Visualisation », cet exemple n’ayant pas d’action de gestion, il est à noter que comme aucun critère n’est nécessaire pour démarrer, les valeurs de « Typ. Ctx. App. » et « Typ Ctx Dia » sont « Pas de relation », c'est-à-dire que rien n’est récupéré sur le père.
Paramétrage du fonctionnement de l’arbre
Les onglets « définition » et « Interface » permettent de piloter le fonctionnement de l’arbre
![](../__attachments/115210533/att_16_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
![](../__attachments/115210533/att_17_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Cet exemple est un arbre statique, c'est-à-dire que toute sa structure est définie via l’application de gestion des nœuds. Le mode de chargement utilisé est complet, la structure n’étant pas sensible à un changement, il est inutile de cocher le champs « Exe Règ. Reinit », on peut donc se passer de règle de construction. La référence origine de l’arbre est obligatoire à sa création, une fois saisie, elle est automatiquement reportée dans les données concernant la structure pré initialisée de l’arbre.
Au niveau interface, les nœuds de cet exemple étant bien identifiés, et chacun d’entre eux ayant déjà une icône, l’icône défaut n’est pas renseignée.
Actions
Aucune action n’est prévue sur cet exemple, ni de modification des données lors du démarrage, ni d’initialisation de données en sortie, l’onglet est donc vide.
![](../__attachments/115210533/att_18_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
Critères Conditions
Cet exemple n’ayant pas de règles de construction, cet onglet est vide.
Initialisation de la structure des noeuds
Pour obtenir l’arbre de cet exemple, il faut initialiser sa structure :
![](../__attachments/115210533/att_26_for_206373119.png?inst-v=2e0628d9-a170-4eb1-b774-b0d7a84fa1a1)
L’enregistrement concernant l’origine a été créé lors de la création de l’entête de l’arbre, il ne reste donc qu’à renseigner la désignation permet d’identifier le nœud dans cette application, le libellé sera celui du nœud, de même pour l’icône. Cet exemple n’ayant pas d’action, le champ Lst Action est vide.