TP1 - Créer des commandes de cuisine avec logique métier et invariants
1. Résumé
La première responsabilité d’un agrégat est de maintenir les invariants métier du concept de domaine qu’il représente et de garantir la cohérence transactionnelle de ces invariants.
Dans ce TP, nous mettrons en œuvre ces préoccupations en traitant l’agrégat comme une machine à états. Cela garantira que les agrégats ne changent d’état que lorsque les conditions appropriées sont remplies.
Nous réaliserons 18 scénarios :
-
Lorsqu’une commande «
CommandeCuisine» est créée, son état est «NOUVELLE». -
Lorsqu’un cuisinier commence à préparer une commande «
CommandeCuisine», son état devient «EN_PREPARATION». -
Seule une commande «
CommandeCuisine» «NOUVELLE» peut commencer à être préparée. -
Lorsqu’un cuisinier commence à cuire une commande «
CommandeCuisine», son état devient «EN_CUISSON». -
Seule une commande «
CommandeCuisine» «EN_PREPARATION» peut commencer à être cuite. -
Lorsqu’un assembleur commence à assembler une commande «
CommandeCuisine», son état devient «EN_ASSEMBLAGE». -
Seule une commande «
CommandeCuisine» au état «EN_CUISSON» peut commencer à être assemblée. -
Lorsqu’un assembleur termine l’assemblage d’une commande «
CommandeCuisine», son état devient «ASSEMBLEE». -
Seule une commande «
CommandeCuisine» au état «EN_ASSEMBLAGE» peut terminer son assemblage.
-
Lorsqu’une
Pizzaest créée, son état estNOUVELLE. -
Lorsqu’un cuisinier commence à préparer une
Pizza, son état devientEN_PREPARATION. -
Seule une
PizzaNOUVELLEpeut commencer à être préparée. -
Lorsqu’un cuisinier termine la préparation d’une
Pizza, son état devientDRESSEE. -
Seule une
PizzaEN_PREPARATIONpeut terminer sa préparation. -
Lorsqu’un cuisinier commence à cuire une « Pizza », son état devient «
EN_CUISSON».. -
Seule une «
Pizza» «DRESSEE» peut commencer à cuire. -
Lorsqu’un cuisinier termine la cuisson d’une « Pizza », son état devient «
CUITE». -
Seule une « Pizza » «
EN_CUISSON» peut terminer la cuisson.
Vous pouvez exécuter com.pizzeria.suites.Lab1Suite pour vérifier votre progression dans ce TP.
mvn -PLab1 test
2. Instructions
-
Les agrégats
CommandeCuisineetPizzaseront chargés de maintenir les invariants métier. -
Chaque commande qu’un acteur peut exécuter sur un agrégat existe sous forme de méthode sur cet agrégat.
La méthode de commande est chargée de maintenir les règles métier et d’exécuter les transitions d’état.-
Par exemple, lorsqu’un cuisinier commence à cuire une pizza, la méthode
Pizza::commencerCuisson()est appelée.
-
-
Implémentez chacune de ces méthodes de commande sur les deux agrégats.
-
Chaque état d’un agrégat dispose d’une méthode d’état qui expose explicitement l’état de la machine à états, mais masque l’implémentation.
-
Par exemple, pour vérifier si une pizza est en cours de cuisson, la méthode
Pizza::estEnCuisson()est appelée. -
Implémentez chacune de ces méthodes d’état sur les deux agrégats.
| Si vous cherchez des conseils sur la manière d’implémenter ces méthodes de commande et d’état, consultez les agrégats dans les contextes Commandes ou Paiements. |