TP4 - Référentiel d’agrégats

1. Résumé

Lorsque vous utilisez Event Sourcing sans CQRS, la seule façon de trouver un agrégat est de le « réhydrater » à partir de la liste des événements qu’il a publiés. Cette opération de recherche ne peut être indexée que par clé primaire.

Dans ce TP, nous allons implémenter la recherche par référence pour les agrégats du contexte Cuisine.

Nous allons réaliser deux scenarios :

  1. Nous allons prendre en charge la recherche d’une commande CommandeCuisine à partir de sa référence ReferenceCommandeCuisine

  2. Nous allons prendre en charge la recherche d’une Pizza à partir de sa référence ReferencePizza.

Vous pouvez exécuter com.pizzeria.suites.Lab4Suite pour vérifier votre progression.

2. Instructions.

  1. Notre implémentation générique DepotEvenementsEnCoursDeTraitement dépend principalement de deux méthodes qui doivent exister dans chaque Agrégat :

    1. identite()

    2. fonctionAccumulateur()

  2. Les implémentations de ces deux méthodes dans les classes CommandeCuisine et Pizza sont défectueuses. Vous devez les corriger.

  3. L’implémentation de identite() est assez simple. Utilisez le générateur pour l’agrégat afin de construire une nouvelle instance, en définissant chaque propriété sur sa valeur IDENTITE, puis renvoyez-la.

  4. L’implémentation de fonctionAccumulateur() est correcte, mais vous devrez corriger l’objet Accumulateur qu’elle renvoie en implémentant sa méthode apply().

  5. Pour implémenter correctement la méthode apply(), vous devez vérifier le type de l'`EvenementAgregat` passé en argument et, pour chaque type d’événement publié pour cet Agrégat, effectuer la transformation d’état appropriée..

  6. Si vous cherchez des indications, essayez de consulter les implémentations apply() dans les contextes Commandes et Paiements.