Aller au contenu

Noeuds et listes

Nœud logique

Le nœud est un objet conventionnel pouvant prendre des formes multiples. En effet, dans VRmaze, toute entité est une instance d'un type de nœud et il existe environ 1000 types de nœuds différents dans le logiciel.

Un nœud dispose de sa propre logique qui s'appuie sur des propriétés et possiblement des nœuds enfant. Par exemple, le type Protocole est très simple, l'une de ses fonctionnalités est de sauvegarder les fichiers résultats lorsque toutes les expérimentations sont terminées. Pour savoir si les expérimentations sont terminées, il se tourne vers son enfant "Liste d'expérimentation" et demande à ce nœud de lui renvoyer l'état de finalisation. La logique du protocole repose donc en partie sur la liste d'expérimentation enfant.

Par définition, les nœuds ne sont pas extensibles, cela signifie qu'il n'est pas possible d'ajouter un enfant de tel ou tel type à un nœud. Chaque type de nœud aura toujours la même structure logique. Seules les listes permettent l'ajout de nœuds en tant qu'enfant direct, c'est ainsi que bien souvent, les nœuds disposent de listes enfants, leur permettant d'avoir leurs propres enfants indirects.

Dans l'arbre de protocole, les nœuds qui ne sont pas des listes sont représentés par leur nom et une icône qui informe sur le type général de nœud.

Quel que soit le type de nœud, il dispose de propriétés. Il existe des propriétés communes à tous les nœuds (le nom, la description, l'identifiant par exemple) et des propriétés propres à chaque type ce qui leur donne un comportement.

Mise à jour lors d'une passation

En mode passation, la mise à jour du nœud implique la mise à jour de tous les enfants du nœud. La mise à jour de l'entité Protocole, racine de l'arbre implique une mise à jour de tout l'arbre.

Menu contextuel d'ajout sur un nœud ?

Un clic droit de la souris sur un nœud permet l'ajout d'enfant de types différents, ce qui semble en contradiction avec cette section documentaire. En fait VRmaze propose une liste des entités pouvant être ajoutés : cette liste est une compilation des types d'entités pouvant être ajoutés via les listes enfants du nœud sélectionné.

Durée de vie en passation

La durée de vie d'un nœud lors d'une passation dépend de son positionnement dans l'arbre. La durée de vie d'une entité ne peut pas être supérieure à celle de son parent, elle sera obligatoirement équivalente ou inférieure.

Liste de nœuds logiques

La liste de nœuds est un type de nœud spécial qui, à l'inverse du nœud de base, peut contenir un nombre variable d'enfants directs conformément au besoin du concepteur du protocole. La contrainte principale réside dans le fait que les enfants directs soient de types similaires. Par exemple, une liste d'entités 3D peut contenir tout type d'entité disposant de coordonnées dans l'espace 3D (les objets maillés, les lumières, les nuages de points, etc.)

À la différence du nœud de base, il est donc possible d'ajouter ou de supprimer des enfants directs, qui plus est, l'icône représentant une liste est toujours la même quelle que soit la liste. VRmaze propose un ensemble d'outils disponibles pour gérer les listes :

  • Ajout d'élément
  • Suppression d'élément
  • Suppression complète (Vide la liste)
  • Sauvegarde
  • Fusion (Remplace le contenu de la liste par celui donné)
  • Déplacement
  • Déplacement liste à liste (Glisser-Déposer de l'élément)
  • Copie Liste à liste (Glisser-Déposer + majuscule)

Menu contextuel d'ajout sur une liste ?

Le menu contextuel permet l'ajout de nouveaux enfants à une liste. Ce menu contextuel est pourvu d'une fonctionnalité permettant de ne proposer que les types de nœuds compatibles dans le contexte de l'objet sélectionné.

Propriétés de liste

Assez rare, et tout comme un nœud logique duquel la liste découle, une liste peut avoir ses propres propriétés.

Mise à jour lors d'une passation

Lors d'une passation, les listes mettent à jour l'ensemble des enfants qui, en cascades, mettent à jour leurs enfants. Deux types de listes font exception : la liste d'expérimentations, qui ne met à jour que l'expérimentation courante et la liste d'essais, qui ne met à jour que l'essai courant, il en résulte une optimisation de la procédure de mise à jour de l'arbre de protocole.

Liste de liste ?

Il est tout à fait possible qu'une liste soit un conteneur de liste, même si cela est assez rare. Par exemple, une base de données de participants est une liste qui contient des groupes de participants. Les groupes de participants sont des listes de nœuds de type Participant.