Skip to main content
Skip table of contents

ARBRE DE CONDITIONS


Les arbres de conditions permettent de définir sous forme d’une arborescence, l’enchaînement de différents tests conduisant à l’exécution de matrice de MAJ d² e module ou la mise à jour de VBA, VBP.

Entête Arbre de condition

La définition et la maintenance des arbres de condition s’effectuent à l’aide de la liste paramétrée IGeEntArb.

Les cadres d’utilisation des arbres de conditions sont les suivants :

  • Des : Gestion Objets Dessins Librairie

    • Ce type d’arbre doit être affecté en tant que Référence Modèle à dessiner en sortie de VBA.

L’exécution de l’arbre permet de générer plusieurs objets en fonction du conditionnement de ses différentes branches.

La génération des objets dessins doit être effectuée à partir de matrices de type DES devant être paramétrées directement sur les branches de l’arbre.

  • Log : Arbre de Test

    • Ces arbres ont pour but de renvoyer la valeur logique d’un test via une formule de recherche sur arbre.

  • Lst : Liste d'Aide et Contrôle

    • Ces arbres ont pour but de conditionner sous forme d’une arborescence l’exécution de différentes listes d’aides.

  • PCIT : Pour chaque IT nomenclature

    • Ces arbres de conditions ont pour but de pouvoir parcourir les ITs nomenclature d’une ou plusieurs branches de la nomenclature

Le principe est de pouvoir spécifier sur la branche d’un arbre de ce type le pointeur à partir duquel on souhaite parcourir les IT et périmètre de recherche (Locale au pointeur ou avec l’arborescence de ce pointeur).

Pointeur Recherche : l’identification du pointeur de recherche doit être codifié sous forme d’une liste chainée séparateur) : Composé ; Numéro d’Ordre ; Composant ; Clé Pointeur.

Cette liste chainée peut être définie à partir d’une VBA, VBP ou d’une Formule

Type recherche : ce paramètre permet de spécifier la portée de la recherche des ITs :

  • Locale : le parcours des ITs ne s’effectuera que sur le pointeur de recherche

  • ArboNom : le parcours s’effectuera sous forme récursive depuis le pointeur de recherche et sur tous les pointeurs fils liés au pointeur de recherche

Pour chacune des ITs parcourues, la condition de sélection / IT sera appliquée afin de pouvoir n’extraire que les ITS désirées.

Les VBP suivantes sont alimentées lors de l’application de la condition de sélection sur IT :

  • INoRefCseASel : Reference Compose à Sélectionner

  • INoRefLieASel : N° Lien A sélectionner

  • INoRefCsaASel : Reference Composant à Sélectionner

  • INoClePtrASel : Clé Pointeur à Sélectionner

  • INOdi-t-typeASel : Type Information Technique A Sel

  • INOdi-t-sstypeASel : Sous-Type IT à Sélectionner

  • INOdi-t-codeASel : Code Information Technique à Sel

  • INOdi-t-valeurASel : Valeur Information Technique à Sel

Pour chacune des ITs sélectionnées, le traitement de maj de la branche sera déclenché :

Les VBP suivantes seront alimentées lors de l’exécution du traitement de maj :

  • INoRefCseSel : Reference Compose Sélectionné

  • INoRefLieSel : N° Lien sélectionné

  • INoRefCsaSel : Reference Composant Sélectionné

  • INoClePtrSel : Clé Pointeur Sélectionné

  • INOdi-t-typeSel : Type Information Technique Sélectionné

  • INOdi-t-sstypeSel : Sous-Type IT Sélectionné

  • INOdi-t-codeSel : Code Information Technique Sélectionné

  • INOdi-t-valeurSel : Valeur Information Technique Sélectionné

  • MAJ : Arbre de Mise à Jour

Chaque branche de l’arbre peut être conditionnée par une formule logique (condition d’existence). Dans le cas où le test n’est pas valide, les maj liées à cette branche ne sont pas exécutées, et le parcours de l’arbre se poursuit sur les branches de niveau inférieur.

Si la branche est active, les maj liées à cette branche peuvent être effectuées de manière itérative en fonction du cadre d’utilisation du lien :

  • Condition TantQue : la branche va être exécutée autant de fois que la condition « tant que » est valide. Les itérations peuvent s’effectuer uniquement sur la branche courante si le champ Boucle/Arbo = No ou prendre en compte la branche courante et son arborescence si le champ Boucle /Arbo = Yes.

  • ListeChaine : Ce type de cadre d’utilisation lien permet de faire boucler une branche de lien nomenclature (avec ou sans arborescence ; voir Champ Boucle/Arbo) par rapport au nombre d’éléments d’une liste chainée. L’origine de la liste chainée et le séparateur doivent être identifiés sur le lien.

Les MAJ de la branche seront exécutées pour chacun des éléments de la liste chainée. Les VBP suivantes seront disponibles dans le traitement de MAJ :

  • VBP. IMDObjSelArc : référence de l’élément en cours sur lequel les MAJ sont effectuées

  • VBP. IMDLstObjSel : liste de tous les éléments de la liste chainée

  • VBP. IMDNbTotObjSel : Nombre total d’éléments

  • VBP. IMDIndObjSel : Indice de l’élément en cours

  • CDM : Objet du Calcul Dimensionnel

Ce cadre d’utilisation permet d’effectuer une recherche sur des éléments du calcul dimensionnel et faire boucler une branche de calcul sur chacun des éléments sélectionnés.

Exemple : Pour une branche de l’arbre de calcul Parcours de tous les Ouvrants définis du Dormant D1 afin d’harmoniser les profils des cadres.

  • Le cadre d’utilisation local à la branche doit être OBJCDM (objet calcul Dimensionnel)

  • Type Objet Recherché : Nature de l’objet du calcul dimensionnel à rechercher

  • Objet Départ : référence de l’objet à partir duquel la recherche doit être effectuée (E, E_D1 ; E_D2_Z3…)

  • Mode Sélection : permet de sélectionner parmi les objets extraits de la recherche uniquement ceux qui ont été définis (RefMod<> ‘’), ceux non encore définis (exemple : l’objet E_D1 vient d’être calculé avec un modèle 3 zones, les objets E_D1_Z1, E_D1_Z2 et E_D1_Z3 sont existants dans le CDM mais ne sont pas encore définis à ce stade : on ne connait pas encore le type d’ouvrant qui va leur être attribué : RefMod = vide ; ces objets sont donc considérés non définis. Tous : permet d’extraire les objets définis et non définis

Suite à l’exécution des objets liés aux paramètres Type d’objet ; objet départ et mode de sélection l’utilisateur peut filtrer les objets sélectionnés pour n’en garder que certains sur lesquels l’itération de la branche sera réalisée. Les VBP suivantes sont alimentées afin que l’utilisateur puisse rajouter une condition dans le champ Cond / Obj Sel (l’exécution de la condition sera appliquée pour chacun des objets) :

  • VBP. IMDObjASelArc : référence de l’objet en cours sur lequel la condition va s’appliquer.

  • VBP. IMDCtxASelObj : référence du contexte lié à l’objet en cours sur lequel la condition va s’appliquer.

  • VBP. IMDIndObjCal : indice de l’objet en cours (5ème élément sur 8)

  • VBP. IMDNbTotObjCal : Nombre total d’objets extraits

  • VBP. IMDLstObjCal : liste des objets extraits

  • VBP. IMDLstCtxCalObj : liste des contextes rattachés aux objets extraits.

Suite à l’exécution de la condition / Objets sélectionnés, les MAJ de la branche seront exécutées pour chacun des objets valides / condition. Les VBP suivantes seront disponibles dans le traitement de MAJ :

  • VBP. IMDObjSelArc : référence de l’objet en cours sur lequel les MAJ sont effectuées

  • VBP. IMDCtxSelObj : référence du contexte lié à l’objet en cours

  • VBP. IMDLstObjSel : liste des objets sélectionnés

  • VBP. IMDLstCtxObjSel : liste des contextes rattachés aux objets sélectionnés

  • VBP. IMDNbTotObjSel : Nombre total d’objets sélectionnés

  • VBP. IMDIndObjSel : Indice de l’objet en cours

Le parcours d’un arbre de condition s’effectue de façon récursive selon l’ordre des branches d’un même niveau :

Il existe deux modes de parcours d’un arbre de condition :

  • parcours non exclusif : parcours de tous les liens respectant une condition juste et ensuite de ces fils

  • Parcours exclusif : pour un niveau recherche de la première condition juste et uniquement de la premier, et parcours de ses fils selon le même principe

La notion de parcours exclusif peut être définie pour l’intégralité de l’arbre de condition au niveau de l’entête de l’arbre, ou par branche. Dans ce cas dès qu’une branche est définie en parcours exclusif, les branches de même niveau ayant un niveau d’ordre inférieur ne sont pas exécutées.

Notion de Bloc Tant Que

Nous avons vu précédemment qu’il était possible de faire boucler une branche (avec ou sans arborescence) d’un arbre de condition. La notion de Bloc tant au sein des MAJ permet d’effectuer une ou plusieurs boucles locales au sein du traitement de MAJ.

Les blocs tant que sont définis par des lignes de MAJ successives pour lesquelles le flag Bloc Tant que est coché. La condition du « tant que » doit être définie pour la première ligne du bloc. Les différentes lignes du bloc seront exécutées tant que la condition définie sur la ligne définissant le ‘tant que’ est valide.

Plusieurs blocs peuvent être définis au sein d’un traitement de MAJ.

Dans l’exemple ci-dessus la boucle du « Tant que » est exécutée sur les lignes 20 -30 et 40 tant que la condition VBP.CdeNbPbLog >0.

Action Copier-Coller de branches

Chaque branche (et son arborescence) peut être copiée dans le but d’être collée sous une autre branche de l’arborescence.

L’action Duplication Arborescence d’un autre arbre, permet d’ouvrir l’arborescence d’un autre arbre dans le but d’en copier un lien pour le coller sur l’arbre courant.

Mise à jour par Branche de l’arborescence

Lorsque la condition liée à une branche est validée, les mises à jour liées sont exécutées. Ces mises à jour sont exécutées par N° ordre croissant et peuvent être à nouveau conditionnées.

Elles permettent de mettre à jour des VBA, des VBP, ou des clés d’affichage sur le principe de mises à jour des E/S scénario (Maj multiple), ou bien d’effectuer des mises à jour par matrices.

Le flag « Tant que » permet d’effectuer une boucle sur la ligne de mise à jour en cours (et uniquement cette ligne-là) tant que la condition liée est valide.

Remarques :

  • Lorsque le flag « Tant que » est coché rien ne doit être renseigné dans la colonne Maj si condition fausse.

  • Le nombre maximum d’itération par boucle « tant que » est fixé de manière arbitraire à 100 afin d’éviter les risques de bouclage. Dans le cas où le nombre d’itérations dépasse 100, le « tant que » est stoppé, la VBP.IGeBouArbERR est alimentée afin d’indiquer qu’une erreur s’est produite, et l’on passe à la mise à jour suivante.


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.