Введение в доменбизнес-процесса «Transfer» один-ко-многим ассоциации
У меня есть коммивояжера. Коммерсант получает BusinessOpportunity. Оба имеют смысл в моем домене быть AR.
Есть два способа модели это:
- агрегат Salesman не знает о его возможностях для бизнеса, или
- коммивояжер знает о его списке возможностей (с использованием OpportunityId конечно)
BusinessOpportunity, я считаю, всегда должен знать его SalesmanId.
Вопрос
У меня есть бизнес-процесс, который я планирую на реализации с использованием схемы Process Manager. Это процесс «TransferAllBusinessOpportunities». Это означает, что 1 продавец и «переводит» все свои возможности другому.
Как мы должны это делать? и как мы должны моделировать домен?
Я могу придумать машину состояния процесса, если мы моделируем это как двунаправленную ассоциацию, но ее довольно активно. Я не знаю, как это сделать, если мы имеем только однонаправленную связь, потому что тогда нам нужно прибегнуть к модели для чтения, чтобы получить список возможностей для бизнеса, и я волнуюсь, что мы должны держать все в записи . Что ты об этом думаешь?
Любая помощь очень ценится. Приложите диаграмму ниже, чтобы помочь визуализировать, если это поможет.
Быстрая сводка новостей вопросы:
- Как бы вы решить эту проблему?
- Как бы вы могли моделировать домен, чтобы лучше всего справиться с этим?
- Можно ли использовать прочитанную модель в обработчике команд для выполнения бизнес-процесса?
Еще раз спасибо.
Благодаря @VoiceOfUnreason это очень проницательно. Вы находите, что это нормально делать $ repository-> save ($ bo) на нескольких BO AR в одном командном обработчике? Я пытался сохранить его простым и выполнять только один AR/транзакцию для каждого обработчика команд. Было бы удобно запросить модель чтения и пропустить все BOs во время одного обработчика команд, сохраняя каждый из них. В противном случае, я делаю много обмена сообщениями/слушанием, чтобы обрабатывать бизнес-процесс (и все это в пределах одного BC). Мысли? –
«Вы находите, что это нормально делать $ repository-> save ($ bo) на нескольких BO AR в одном командном обработчике?" Нет - если утверждение, которое вводится, приемлемо, почему эти вещи разделяют агрегаты? – VoiceOfUnreason
Когда я запрашиваю модель чтения, я получаю список, например, 20 BusinessOpportunityIds. Они должны быть переданы, поэтому я могу сделать 1 жирную команду с сообщением «transfer (BoList, otherSalesman)», для чего потребуется 20 обновлений для каждого из этих отдельных агрегатов. Или я должен вместо этого выпустить 20 команд с одним AR? то есть «передача (BO, otherSalesman)» x 20? –