Créer un arbre dynamique
Dans un arbre dynamique, les nœuds sont déterminés par requêtes ! Alors que pour un arbre statique, ils sont rentrés en “dur” dans le paramétrage de l’arbre et seront toujours les mêmes ( cas d’un arbre associé à un couplage permettant de présenter un menu statique )
Ici, on souhaite créer un arbre paramétré pour afficher la liste des devis et des commandes rattachés à un client :
Et on souhaite pouvoir ouvrir ces devis/commandes en lançant une action depuis l’arbre:
Cet arbre sera donc dynamique, car selon le client on aura des branches avec des commandes ou devis différents !
Comment faire ? 🧐 Déjà, ayez bien en tête le schéma de votre arbre, et les actions à lancer sur chaque branche ! 🙂
ETAPE 1: Créer la définition de l’arbre
On commence par créer la définition de l’arbre. Pour cela, on va ici:
Et on vient créer un nouvel arbre ! On va ensuite pouvoir le remplir comme ceci:
Ici, vous trouverez uniquement les champs principaux. Pour aller dans le détail de tous les champs, c’est par ici !
Ces champs permettent de transmettre le contexte entre le père de l’arbre et l’arbre. Si ce n’est pas renseigné l’arbre est “aveugle” il n’aura pas le contexte d’entrée. Dans cet exemple par exemple, on ne saura pas quel est le client en cours… | |
Dans un arbre, le “vrai” nœud de plus haut niveau s’appelle *ORI, et il n’est pas visible dans l’arbre. Ici, on indique à DIAPASON quel nœud doit être rattaché au nœud père *ORI, celui de plus haut niveau.
| |
| |
On créé les actions qu’on souhaite lancer depuis les branches de notre arbre
|
ETAPE 2: Créer la requête REB de constitution de l’arbre
On va ensuite pouvoir la requête REB de constitution de notre arbre.
Pour cela, il faut bien avoir en tête ce à quoi notre arbre doit ressembler: quels sont les nœuds pères et fils !
Quelles sont les listes utilisées ?
Les arbres peuvent être gérés par requête REB à l’aide de 3 listes standards :
WfArbEnt : cette liste contient le contenu de l’arbre existant, dans le cas d’un réaffichage ! Elle n’est accessible qu’en lecture.
WfArbSor : cette liste permet de construire l’arbre, et mettre à jour les nœuds construits par l’application. Chaque enregistrement alimenté dans cette liste correspond à un nœud à afficher dans l’arbre. Cette liste est accessible en écriture ! On y retrouve les champs de la https://diapason-documentation.atlassian.net/wiki/spaces/T0/pages/147592897 😉
WfArbCheEnt : En lecture, permet de donner le chemin d’un nœud à partir de l’origine de l’arbre (NodNiv = 1 pour l’origine) Cette liste est 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.
Qu’avons nous, en entrée de la requête de création de la structure de l’arbre et que faut il définir en sortie ?
On a donc, en entrée de la requête : | Et il nous faut, en sortie de la requête : |
---|---|
|
|
Voici comment on peut écrire notre requête
Il est possible, depuis la définition de notre arbre, de construire une partie de l'arbre de manière statique, comme on le fait ici. Ces noeuds seront automatiquement enregistrés dans la liste WfArbSor. ( les arbres statiques sont souvent utilisés comment des points d’entrée menu, lorsque l’arbre est utilisé comme père d’un couplage) !
1- On récupère les critères d’entrée Quels sont les critères dont on a besoin pour créer notre arbre ? On les récupère ! | |
Optionnel-On réactualise notre arbre en retour d’action ➡️ si vous comptez lancer des actions depuis une/plusieurs branches de votre requête, et que vous souhaitez actualiser votre arbre en conséquence, vous pouvez utiliser ce bout de requête, qui est complètement générique 😉 Pourquoi ? on récupère les branches de l’arbre déjà définies, à partir de la liste WfTabEnt, et on s’en sert pour reconstruire le nouvel arbre à afficher, en remplissant la liste WfArbEnt. En bref, dans cette démarche on réactualise ! Que se passe-t-il ?
| |
2-On peut modifier le nœud principal de notre arbre On va maintenant passer sur la construction de notre arbre. On peut commencer par modifier dynamiquement le nœud principal. Mais comment DIAPASON va t’il reconnaitre quel est le premier nœud de notre arbre ? 🧐
Par exemple ici, on l’avait simplement nommé “CLIENT” dans la définition de l’arbre, et ici on le renomme dynamiquement avec le nom du client sur lequel on est ! | |
On vient ensuite définir des nœuds fils Pour chacun des nœuds fils , on va créer une liste WfArbSor, avec obligatoirement:
On peut également définir dans la liste WfArbSor:
Toutes les variables disponibles sont décrites plus haut dans le chapitre “Quelles sont les listes utilisées ? ” |
Et voilà, notre requête est écrite et on peut tester ! 🙂 Ci-dessous, on peut voir le parallèle entre le requête et notre arbre:
ETAPE 3- Optionnel-Lancer des actions depuis les branches de l’arbre
Il est possible de créer des actions qu’on peut lancer depuis les branches de notre arbre. Comment faire ? 🤓
Dans la première étape de ce tuto, nous avons créée l’arbre. Il est possible de définir les actions à lancer dans l’onglet Actions ! C’est le même principe que dans le moteur RCT.
Si on veut définir ces actions par requête, il faut y entrer également une requête RCT. On pourra y récupérer des variables depuis l’arbre dans des SCR ! Par exemple:
On rentre la référence de l’action/des actions à lancer sur chaque nœud où elles peuvent être lancées ( s’il y a plusieurs références d’action, elles doivent être séparées par une virgule).
Ces références d’actions sont celles qu’on a entrée dans la définition de l’arbre dans l'étape 1, dans l’onglet Action ! 😉
Et il n’y a plus qu’à tester !