Когда вступают в игру обработчики событий домена?

У меня есть простой домен examle из двух агрегатных корней и одной регулярной сущности. Tenant, UserGroup и User, где в данном конкретном примере Tenant и User составляют два AggregateRoots.

Когда команда поступает от уровня UI/Service, она достигает обработчика команды, который манипулирует доменом write only.

Можно сказать, что User вообще не должен быть AggregateRoot, но поскольку на него будут ссылаться другие, он не может быть обычной сущностью. (Да?)

Эти два AggregateRoots должны общаться. Пользователь User не может быть создан без принадлежности к UserGroup, которая является сущностью в ограниченном контексте Tenant. Предположительно, мы можем создать, поскольку это простое ограничение, пользователя через конструктор. User.Create(TenantId, UserGroupId)

Он генерирует DomainEvent с Date, AggregateVersion и AggregateId (пользователя). Теперь мы переходим к самым размытым частям.

Открытая фиксация этого события в хранилище, это событие транслируется на шину (память, что угодно). Это тот момент, когда обработчики событий домена, подобно обработчикам команд, ловят созданного пользователя и уведомляют/манипулируют Tenant's UserGroup для добавления UserId?

Не идут ли мои мысли о решении этой проблемы в совершенно неверном направлении?

10
задан Chris Simmons 3 April 2016 в 15:57
поделиться