Я прошел этот замечательный учебник: http://www.cqrs.nu/tutorial/cs/01-design и пытаюсь сделать свое приложение таким же образом.
По моим предыдущим вопросам я знаю, что то, что является сущностью в одной БК, может быть представлено как объект-значение, содержащий идентификатор сущности в другой БК и, опционально, любой другой параметр. (Я поместил эти идентификаторы в Core BC.)
Теперь, допустим, у меня есть два БК: PlansEditor
и Subscribing
.
В PlansEditor
, если есть Editor
(человек с ролью), когда он создает Plan
с некоторыми параметрами, такими как frequency
и vip
, то создается Plan
.
В Subscribing
при наличии Customer
и нескольких доступных Plan
, когда клиент подписывается на Plan
, создается Subscription
.
В планах тут может быть просто ВО с параметрами частоты и VIP, т.к. Подписке нужны именно они (для защиты инвариантов). Но клиент нажимает, чтобы подписаться на план, и отправляется запрос с идентификатором плана.
Итак, я начинаю свой жизненный цикл BC с идентификатором клиента и идентификатором плана, на который он подписался. Мне нужно загрузить/создать этот Plan
«объект значения» (который на самом деле является сущностью в PlansEditor
до н.э.) где-то по заданному идентификатору.
Где и как мне получить этот План VO в Subscribing
г. до н.э.?
Я думал на прикладном уровне через Event Repository - чтобы можно было отправить SubscribeCustomerToPlanCommand(Customer, Plan)
содержащее это значение объект. Но тогда Subscribing
BC нужно будет знать, что Plan
как объект в PlansEditor
существует, чтобы загрузить его и преобразовать в Plan
как VO, что неприемлемо - для правильного функционирования одному BC потребуется другой.
Или я должен просто получить информацию, необходимую для создания Plan
VO из некоторой модели чтения, и сделать это на прикладном уровне, удобно ли это? Или как и где? :)