USECASE: Предположим, у меня есть следующие агрегатыВ CQRS/Eventsourcing, который лучше всего подходит для родителя, чтобы изменить состояние всех его детей ??
- Корневая агрегат - CustomerRootAggregate (управляет каждой CustomerAggregate)
- Ребенок совокупность корня совокупного - CustomerAggregate (есть 10 клиентов)
Вопрос: Как отправить DisableCustomer
комм. и всем 10 CustomerAggregate, чтобы обновить состояние, которое будет отключено?
customerState.enabled = false
Решения: Поскольку CQRS не позволяет стороне записи для запроса на стороне чтения, чтобы получить список идентификаторов CustomerAggregate Я думал следующее:
CustomerRootAggregate
всегда хранить идентификаторы всех этоCustomerAggregate
в базе данных как json. Когда команда дляDisableAllCustomers
принимаетсяCustomerRootAggregate
, она будет извлекать команду CustomerIds json и отправлять командуDisableCustomer
всем дочерним элементам, где каждый ребенок будет восстанавливать свое состояние перед применением командыDisableCustomer
. Но это означает, что мне придется поддерживать последовательность CustomerIds json.- Клиент (браузер - пользовательский интерфейс) должен всегда отправлять список CustomerIds для применения
DisableCustomer
. Но это будет проблематично для базы данных с тысячами клиентов. - В интерфейсе REST API Layer проверьте команду
DisableAllCustomers
и извлеките все идентификаторы со стороны чтения и отправите DisableAllCustomers (ids) с идентификаторами, заполненными для записи.
Какой рекомендуемый подход или лучший подход?