Construction d’un arbre par niveau
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 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 »)