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
melorsqu'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é.