DDD: вопрос о совокупных границах - PullRequest
0 голосов
/ 03 августа 2010

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

У меня есть 2 сущности: запрос и миссия. Пользователь создает запросы, а затем он может создавать миссии и назначать существующие запросы миссии.

Запросы и миссии могут быть созданы независимо. Другими словами, мне не нужно иметь Миссию при создании запроса и наоборот.

Итак, я предполагаю, что у нас здесь есть 2 разных Агрегата: Запрос Агрегата и Агрегата миссии, при этом каждая сущность является корнем своего Агрегата.

ОДНАКО, у нас есть инвариант, который нарушает это предположение: вы можете отложить или отменить миссию, что приводит к соответствующему обновлению статуса всех назначенных ей запросов.

Как я могу применить это ограничение, если Запрос и Миссия находятся в двух разных Агрегатах? Если я помещу их в один и тот же агрегат, невозможно определить, кто является агрегатным корнем, потому что каждый объект может быть создан независимо.

Любой совет?

Мош

Ответы [ 2 ]

1 голос
/ 05 октября 2010

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

1 голос
/ 03 августа 2010

Вы уже на правильном пути. Кусок, который вам не хватает: Агрегаты могут содержать другие агрегаты.

Это нормально, что ваши Mission могут инициировать Status изменения на любых Requests, которые в нем содержатся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...