Я изо всех сил пытаюсь понять, как смоделировать мою проблему:
- Компания может иметь много Команд.
- Каждая Команда должна иметь уникальное имя для каждой Компании.
- Должны быть доступны отчеты для конкретной команды, а также список всех отчетов для компании.
Только что у меня есть 3 ограниченных контекста - компания, команда и отчет. Я считаю, что мне следует переместить команду в компанию, чтобы обеспечить соблюдение моего уникального инварианта имени, однако, насколько я понимаю:
«Ничто за пределами границы агрегата не может содержать ссылку на что-либо внутри, кроме корневой сущности».
Если я могу ссылаться на AR только из своего отчета AR, я не могу сохранить, к какой команде принадлежит мой отчет — только к компании.
Я посчитал, что Команда может существовать как собственная БК, так и в составе БК Компании. В этом случае создание Команды будет происходить только внутри Компании BC как Объекта. Здесь может быть обеспечено присвоение имени и инвариантное применение этого имени команды. В этом случае Team BC по-прежнему будет существовать, и отчет все еще может содержать ссылку на TeamId из отчета AR. Однако это приведет к дублированию TeamId и TeamName как в компании BC, так и в Team BC.
Этот подход звучит нормально, или я что-то упустил?
Я сбит с толку, если у меня есть 3 BC, которые должны быть 2 BC, или отсутствует концепция Team Entity в компании BC.
Может быть, я путаю ограниченные контексты. У меня есть/нужны только совокупные корни - я не уверен!
Гул, помоги!