Architecture hexagonale: Interactions entre hexagones

J’ai fait évoluer mon application hexagonale pour les bibliothèques, afin de comprendre les interactions entre hexagones.
Tu trouveras tout le code source dans ce repository git.

Je te conseille fortement de regarder mon premier article sur l’architecture hexagonale pour commencer, où se trouve le besoin métier.

Découpage et frontières métiers

Dans le DDD, une application découpe son domaine en frontière appelée “bounded context”. Chaque hexagone doit avoir ses propres frontières bien définies. Ainsi, pour mon application, j’ai découpé en 3 hexagones.

1) J’ai un premier contexte que je vais appeler “data”. C’est la donnée liée à mes livres.
Par exemple, je peux avoir un livre “Harry Potter” dans une bibliothèque et un autre dans une autre bibliothèque.
Ce sont physiquement deux livres différents, mais ils partagent la même donnée, sa “data”, comme son auteur, sa description ou les avis des utilisateurs …

2) J’ai un deuxième contexte, “user”, qui gère l’ensemble des utilisateurs qui peuvent emprunter des livres dans la bibliothèque.

3) Afin, j’ai le contexte “library”, qui permet de savoir et de modifier l’état des livres de chaque bibliothèque. Cet hexagone va utiliser les deux autres.

Implémentations

J’ai créé des modules pour chaque hexagone (“data-hexa”, “library-hexa” et “user-hexa”) et j’ai fait des modules qui les utilisent pour aider la compréhension (“data-hexa-impl-spring”, “library-hexa-impl-spring” et “user-hexa-impl-spring”). Ce découpage en module n’est pas obligatoire pour l’architecture hexagonale, mais cela permet de vérifier que chaque hexagone n’a aucune dépendance (avec leurs fichiers pom.xml).

D’un hexagone à un autre

Regardes la classe “LibraryBookOutputAdapter”. C’est un adaptateur de la porte de sortie “LibraryBookOutputPort”, afin de récupérer les données des bibliothèques pour l’hexagone “library”.

Mais c’est aussi un adaptateur des portes d’entrée “DataBookInputPort” de l’hexagone “data” et “UserInputPort” de l’hexagone “user”. Ainsi, les données récupérées des bibliothèques possèdent aussi les informations venant de ces deux autres hexagones.

Reste plus qu’à tester

Lance l’application via le runner “SpringApp”. Des que l’application est lancée, tu peux tester l’application via l’url “http://localhost:8080/takebook/index.html”.

J’ai installé l’application un serveur de test (pas très puissant), vous pouvez la tester dessus aussi.

Conclusion

J’espère que c’est clair pour toi. N’hésites pas à faire tes retours.

1 thought on “Architecture hexagonale: Interactions entre hexagones”

  1. Pingback: Architecture hexagonale: Prends ton livre et n’fais pas de bruit dans ma bibliothèque !! – La pause Dev'

Leave a Reply

Your email address will not be published. Required fields are marked *