Всякий раз, когда B C зависит от данных из другого, у вас, вероятно, будет сценарий возможной согласованности.
Вы можете сохранить Pool
как объект значения в зависимом B C и обновлять свои данные на основе, скажем, событий, полученных от восходящего B C, или вы можете сохранить данные Pool
как VO на самих зависимых объектах. Это будет приговор с вашей стороны. Поскольку у вас будут соответствующие данные локально, вы можете проверить их локально. Однако это не гарантирует, что данные не устарели. После того, как данные будут изменены для обеспечения согласованности, вы должны будете убедиться, что компенсируете любые неправильные изменения.
Логи вашего домена c требуется для обеспечения соблюдения инвариантов. Мне нравится передавать в домен любые данные, которые могут потребоваться для обеспечения соблюдения этих инвариантов. В вашем случае проблема интеграции / приложения будет извлекать текущий статус пула и передавать его в метод домена в качестве параметра. Это позволяет упростить тестирование. Вы можете решить перенести эту ответственность из домена во многом так же, как это делается с авторизацией, но, опять же, это ваш вызов и YMMV. должен быть выполнен. То же самое касается заказа товаров в Интернете. Возможно, вы добавили товар в корзину, но при оформлении заказа этот товар больше не доступен.