Aller au contenu

Ajouter un évènement au domaine

Le domaine métier avec lequel Listsém travaille ne devrait pas être amené à trop évoluer. Mais dans le cas où un nouvel « évènement » viendrait à être découvert pendant une discussion avec les experts métier, voici un « petit » résumé des étapes à suivre. Je mets des guillements, car l'ajout d'un évènement, même s'il n'a rien de complexe, demande d'intervenir sur plusieurs composants.

Dans l'exemple ci-dessous, je me baserai sur le domaine gestion existant. Je ne traiterai que le cas d'un évènement généré par une nouvelle action. Le cas d'un nouvel évènement généré par une action existante est un cas plus simple et toutes les étapes expliquées ne seront pas nécessaires.

Modifier le domaine (write side)

  1. Ajouter un classe représentant l'évènement au module events du domaine Celui-ci doit hériter de la classe Evenement et avoir un attribut (ou une propriété) id qui permettra à l'historique de l'enregistrer.
  2. Décider quel agrégat (dans les modules entities ou services) génèrera cet évènement.
  3. Si l'évènement est émis par une entité, il faut rajouter une méthode implémentant les règles métiers et générant l'évènement.
  4. Toujours dans le cas d'une entités, il faut ajouter un méthode pour rejouer l'évènement.

Modifier les projections (read side)

  1. Modifier le projecteur (ou en créer un nouveau) en y ajoutant une méthode qui sera responsable de lire les données de l'évènement et de les passer à la bonne méthode de la projection liée.
  2. Modifier la projection pour refléter l'évènement.
  3. Ajouter une nouvelle méthode de requétage de la projection afin de pouvoir récupérer les nouvelles données.

Remarque : les projecteurs (lecture des évènements) et les projections (persistance) ont été séparées, mais ils auraient pû être implémentés dans une même classe. Dans l'implémentation actuelle, pour chaque nouvel évènement géré par le projecteur, il faut modifier 3 endroits : le projecteur, l'interface de la projection et la projection elle même.

Retour en haut de la page