Как я могу создать две совокупности в разных ограниченных контекстах?
Вопрос об интеграции ограниченных контекстов. Например. я имею organization AR
в indentity BC
, А также courier service AR
в logistics BC
, Они должны быть связаны.
organization AR
состоит из:
- OrganizationId
- название
- Налоговый кодекс
- Юридический адрес
- ...
courier service AR
состоит из:
- CourierServiceId
- название
- TransportationPriority
- Рейтинг
- ...
Клиент отправляет всю эту информацию в одном запросе (имя, налоговый код, юридический адрес, транспортный приоритет, рейтинг).
Вопросы:
- В каком приложении я должен подать запрос на создание двух AR?
- Как я должен создать оба AR? После того, как я создал первый AR в первом веке до нашей эры, как я должен создать второй AR из второго до нашей эры?
Проблема, с которой я столкнулся:
Сначала я думал опубликовать доменное событие, когда organization AR
создан для уведомления logistics BC
и создать courier service AR
, Но когда я публикую событие домена в первом веке до нашей эры, я должен использовать TransportationPriority, Rating
(что нужно для создания AR во втором веке до нашей эры). Но этот язык понятия не относится к первой до нашей эры. Однако они используются в нем. Как я знаю, это неправильно.
Так как я могу решить мою проблему? Извини я плохо знаю английский. Спасибо.
1 ответ
Почему "они должны быть связаны"? Из того, что я понимаю, вы могли бы иметь OrgAR с несколькими CourServAR. Здесь можно сделать следующее:
- Пользователь попадает на страницу, где он помещает эту информацию (вы написали, что все данные собираются вместе, поэтому это должно быть сделано с помощью формы или чего-то подобного)
- как только он там, я даю ему пару удостоверений личности (это где-то на посту Уди Даана, я его сейчас не нахожу)
- с помощью этих идентификаторов, которые вы используете для OrganizationId и CourierServiceId, вы можете отправлять обе команды в разные домены без необходимости использовать события, которые обмениваются данными, которые они не знают / должны использовать
- Конечно, может случиться так, что хранение одного AR идет не так, поэтому вам нужен способ проверить целостность данных (с заданием или чем-то подобным - тогда вы должны уведомить пользователя о том, что что-то пошло не так во время процесса)
Чтобы получить идентификаторы, вам может понадобиться написать две службы, которые дадут вам следующий полезный идентификатор для OrgAR и CourServAR.
В любом случае, тот факт, что два AR связаны друг с другом, и вы должны хранить их вместе, вызывает тревогу в моем мозгу.
На самом деле, то, что я бы сделал, это:
- определить, что пользователь действительно должен хранить (OrgAR или CourServAR? например, я беру OrgAR)
- с помощью этого создайте форму для хранения OrgAR
- тогда дайте ему возможность хранить CourServAR
- второй AR уже имеет ссылку на первый (потому что у меня есть его идентификатор), теперь мне нужна команда (в OrgBC), которая говорит "assignCourServtoOrg", которая просто связывает два идентификатора в OrgAR