События приложений в DDD?
Этот вопрос аналогичен следующему: существует ли термин события приложения в DDD? , но я не знаю, как применить приведенные там объяснения к моей конкретной проблеме.
У меня есть, SearchFilmUseCase
и я хочу вызвать событие, как FilmSearchedEvent
только оно завершит свое выполнение. В настоящее время уровень приложения вызывает событие. Единственный способ, которым я мог вызвать это событие из домена, - это FilmRepository
. Однако репозиторий - это просто интерфейс, поэтому я не могу создавать там никаких событий.
Я считаю, что поднимать событие на прикладном уровне некорректно. Как я могу подойти к этой ситуации?
Ответы
Одним из решений может быть создание службы домена для выполнения поиска и создания события.
Все события домена должны быть вызваны с уровня домена. Лучшее место - это совокупный корень, где действительно должно выполняться действие. Совокупный корень может содержать все инициированные события домена, и на уровне приложения вы можете получить их и опубликовать в шине событий.