Événements d'application dans DDD?
Cette question est similaire à: Existe-t-il un terme d'événement d'application dans DDD? , mais je ne sais pas comment appliquer les explications qui y sont données à mon problème spécifique.
J'ai un SearchFilmUseCase
et je souhaite déclencher un événement FilmSearchedEvent
une fois qu'il a terminé son exécution. Actuellement, la couche application déclenche l'événement. La seule manière dont je pourrais soulever cet événement du domaine est dans le FilmRepository
. Cependant, le référentiel n'est qu'une interface, je ne peux donc pas y soulever d'événement.
Je pense que déclencher l'événement au niveau de la couche application n'est pas correct. Comment aborder cette situation?
Réponses
Une solution pourrait être de créer un service de domaine pour effectuer la recherche et déclencher l'événement.
Tous les événements de domaine doivent être déclenchés à partir de la couche de domaine. Le meilleur endroit est une racine agrégée où l'action doit vraiment être effectuée. La racine agrégée peut contenir tous les événements de domaine qui ont été déclenchés et, dans la couche d'application, vous pouvez les obtenir et les publier sur le bus d'événements.