Существует ли термин события приложения в DDD? - PullRequest
0 голосов
/ 28 мая 2020

Доменные события хорошо известны в DDD, которые могут быть опубликованы в агрегированных корнях или в доменных службах. Мой вопрос здесь: можно ли публиковать события домена в службах приложений / сценариях использования?

Например, упрощение. У меня есть служба приложений под названием UseCaseA, которая выполняет различные операции, вызывая некоторые агрегированные корни. Если я хочу вызвать событие по окончании этого варианта использования, могу ли я опубликовать sh событие UseCaseAFinished в этой службе приложения? Является ли это событием предметной области или следует называть его событием приложения? Существует ли терминология событий приложения в DDD?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Я думаю, тебе стоит посмотреть на это с другой точки зрения. Позволь мне объяснить.

Вместо того, чтобы вызывать событие как результат вашего UseCaseA для обработки ваших побочных эффектов, таких как отправка электронного письма, событие, которое вы хотите вызвать, все равно должно быть событием домена, как вы описали.

Затем во время обработки этого c Доменного события вы можете вызвать «Событие приложения» (я бы назвал их событиями интеграции), которое затем обработало бы побочный эффект отправки электронного письма, выполняя мониторинг , ведение журнала ..

Это событие интеграции может охватывать несколько BC, служб и даже приложений.

Пример пошагового алгоритма:

  1. Начать выполнение UseCaseA
  2. Выполнение операций с сущностями, изменение состояния и т.д. c.
  3. Вызов события домена из домена
  4. Отправка события домена непосредственно перед завершением выполнения UseCaseA
  5. Перехватить событие домена в одном или нескольких обработчиках событий домена
  6. В одном из этих обработчиков вызвать событие интеграции для обработки побочных эффектов «в масштабе всего приложения»
  7. Обработать событие интеграции в интеграции Обработчик событий и отправка электронных писем, ведение журнала, мониторинг уведомлений и т. Д. c.

Событие интеграции может быть отправлено несколькими способами, но обычно через так я вроде автобус для мероприятий.

1 голос
/ 28 мая 2020

Можно ли публиковать события домена в сервисах / сценариях использования приложения?

Обычно нет: информация о домене принадлежит модели предметной области, а не приложению.

Сейчас , это нормально для бизнеса быть заинтересованным в прогрессе / завершении процесса. Но это всего лишь подсказка, которая предполагает, что сам процесс должен также моделироваться в домене.

«События приложения», скорее всего, будут посвящены проблемам приложения: подумайте о «наблюдаемости» ".

...