Gestion centralisée du statut du membre
Avoir un endroit central où on puisse voir et modifier les statuts d'un membre (au pluriel car un membre peut avoir plusieurs statuts).
Depuis cet endroit, il faut pouvoir faire une demande de changement de statut. Celui-ci devient alors "en attente d'être dans le nouveau statut" et une liste des choses à faire pour que le changement soit effectif, chaque élément de cette liste pointe vers l'endroit où réaliser cette action.
Lorsqu'une action est réalisée, l'élément de la liste apparaît comme réalisé.
Lorsque toutes les actions sont réalisées, on peut cliquer sur un bouton pour réellement passer le membre dans le nouveau statut.
Il faut pouvoir ignorer une action pour ne pas être bloqué, demander une raison et enregistrer qui a fait ça.
La création d'un membre devient alors extrêmement simple : demande des informations de base (civilité, nom, prénom) et du statut uniquement. C'est ensuite que chaque module demande ce dont il a besoin dans la liste des actions.
👍 Avantages
- Plus clair pour l'utilisateur d'avoir un seul endroit où gérer le statut : on voit ce qu'il se passe, où ça en est et comment agir.
- Meilleur modularité, simplification du code et des développements futurs.
👎 Inconvénients
- Un module ne pourrait plus provoquer un changement de statut (ex: la création d'un contrat CESA qui provoque le passage du statut d'entrepreneur en CESA). Est-ce que c'est vraiment un inconvénient finalement ?
🛠 Aspects techniques
Créer un nouveau bounded context (BC) Members dont le périmètre fonctionnel serait très limité :
- stockage des informations de base
- stockage (et implémentation) de l'information (et de la logique) du statut
Les autres BC utiliseraient l'information du statut provenant du BC Members (et immuable de leur point de vue) et adapteraient leur comportement en fonction.
❓ Questionnements
- Comment gérer l'échec de communication qui pourrait arriver entre un BC qui doit donner une liste d'actions et le BC Members ?
- Et le BC ExtendedMembers dans tout ça ?