Aller au contenu
EN FR

me, identité conceptuelle et Self

Statut documentaire : architecture — voir Maturité et preuves.

me et Self sont tous deux liés à l'identité, mais ce ne sont pas des alias.

me : identité structurelle de l'entité

Pour les concepts de type entité, me occupe la position d'identité de l'entité dans la structure conceptuelle. Il participe donc au sens d'une entité identifiée et peut apparaître dans les déclarations H-Logic qui distinguent l'instance d'entité de ses autres participants ou rôles.

Entity(me, role1, role2, ...)
       ^
       participant porteur d'identité

Cette identité est sémantique. Elle ne doit pas être ramenée à un pointeur objet ou à une référence de wrapper du langage hôte.

Self : accès réservé au nœud courant

Self est un accès étendu réservé qui renvoie le nœud conceptuel courant lui-même. Il appartient à la surface d'accès réservée du Runtime et non à la séquence positive des slots participants.

node.Self -> nœud inspecté

Il sert notamment à l'introspection et aux opérations Runtime, mais il ne crée ni ne redéfinit l'identité métier portée par me.

Trois identités à séparer

Dans une intégration en langage hôte, distinguez :

  • l'identité conceptuelle — l'identité portée par le modèle, dont me lorsqu'il s'applique ;
  • l'auto-référence du nœud — le nœud Runtime courant exposé via Self ;
  • l'identité du wrapper hôte — durée de vie et égalité d'un wrapper SDK/ABI généré.

Deux wrappers peuvent référencer le même nœud conceptuel, et un nœud peut exposer Self sans modifier l'identité modélisée par me.

Conséquence H-Logic

Quand me apparaît dans une déclaration H-Logic, traitez-le comme un élément de la structure logique/de l'entité. Ne le remplacez pas par un receiver implicite du langage hôte. Inversement, utilisez Self uniquement lorsqu'un véritable accès réservé au nœud courant est recherché.