VO-07 · Ce qui vient d’un autre bounded context entre comme un value object
Signal
- Le bounded context downstream reconstruit un objet upstream en entity ou en aggregate local, avec du code pour le garder synchronisé, alors qu’une copie figée de quelques attributs suffirait.
- Un concept local qui recopie de nombreux attributs du bounded context upstream.
Pourquoi
Modéliser en value object ce qui vient d’un autre bounded context, c’est laisser moins de propriétés à la charge du bounded context downstream.
Par exemple, un Approver est un value object créé une fois, avec quelques attributs (l’identité du mandataire, le nom affiché). Il ne recopie aucun attribut du mandat qui lui donne ce rôle : le nom de sa classe dit déjà le rôle. Il n’est pas synchronisé avec son bounded context d’origine, et c’est voulu. Le bounded context downstream s’en trouve bien plus léger.
Exceptions
Un objet qui doit suivre, en eventual consistency, une partie de l’état d’un aggregate distant. Une entity ou un aggregate local se justifie alors, mais il vaut mieux l’éviter quand c’est possible.
Correction
Un value object local, construit à la frontière. Pas de synchronisation, sauf si le métier en a explicitement besoin.
Voir aussi
ACL-02 ne traduit que le minimum. CTX-05 traduit à la frontière en un concept local.