Eventos de aplicativos em DDD?
Esta questão é semelhante a: Existe um termo de evento de aplicativo no DDD? , mas não sei como aplicar as explicações dadas lá ao meu problema específico.
Tenho um SearchFilmUseCase
e desejo gerar um evento FilmSearchedEvent
assim que terminar sua execução. Atualmente, a camada de aplicativo está gerando o evento. A única maneira de levantar esse evento no Domínio é no FilmRepository
. Porém, o repositório é apenas uma interface, então não posso gerar nenhum evento lá.
Acho que aumentar o evento na camada de aplicativo não é correto. Como posso abordar essa situação?
Respostas
Uma solução poderia ser criar um serviço de domínio para realizar a busca e gerar o evento.
Todos os eventos de domínio devem ser gerados da camada de domínio. O melhor lugar é uma raiz agregada onde a ação deve ser realmente executada. A raiz agregada pode conter todos os eventos de domínio que foram gerados e, na camada do aplicativo, você pode obtê-los e publicá-los no barramento de eventos.