Совокупный корневой дизайн заказанных элементов "один ко многим"

Я изо всех сил пытался разработать совокупные корни для области встреч.

Домен. Встреча содержит один или несколько пунктов повестки дня. Каждый AgendaItem имеет раздел примечаний, а также каждый AgendaItem имеет одну или несколько задач.

Дизайн. Теперь, руководствуясь рекомендациями, я пытаюсь сохранить более мелкие совокупные корни в рамках ограниченного контекста. поэтому у меня есть MeetingAggregateRoot и AgendaItemAgreegateRoot.

Бизнес-правило: у каждого собрания будет несколько пунктов повестки дня (каждый пункт повестки дня может иметь один или несколько подпунктов). Но они должны быть упорядочены по порядку, и они не должны иметь повторяющейся последовательности.

Если я сохраню один AR как MeetingAR с AgendaItem как Entity, то MeetingAR может взять на себя ответственность за поддержание последовательности AgendaItem в порядке. Но тогда у меня также есть несколько задач для каждого AgendaItem, поэтому я решил сохранить два отдельных AR как MeetingAR и AgendaItem AR (AgendaItemAR будет иметь объект задачи).

Теперь вопрос в том ... Как мне разработать AR, чтобы MeetingAR отвечал только за действия, связанные с встречами. AgendaItemAR несет ответственность только за свои действия, и при этом сохраняется последовательность для всех пунктов повестки дня собрания.

Любая помощь приветствуется по этому поводу.


person Hiten    schedule 19.09.2018    source источник
comment
каждый пункт повестки дня может иметь один или несколько подпунктов - ›Существует ли максимальная глубина, равная одному, потому что в противном случае ваш текущий дизайн AgendaItem --* Task не позволит этого.   -  person plalx    schedule 19.09.2018
comment
только один уровень подпунктов.   -  person Hiten    schedule 20.09.2018


Ответы (1)


Я думаю, что это не решение. Если жизненный цикл пунктов повестки дня зависит от собрания, повестка дня будет дочерним элементом собрания. Это была бы композиция, пункт повестки дня не мог существовать сам по себе.

person choquero70    schedule 23.09.2018
comment
Подобно повестке дня, добавленной к собранию, задача может быть добавлена ​​к пункту повестки дня, так что состав задачи-повестки дня. Но тогда, если у меня есть больше AR \ Entities к повестке дня (например, задач и документов), тогда повестке дня действительно нужна собственная личность, поэтому в этом случае не лучше сохранить повестку дня как AR? - person Hiten; 25.09.2018
comment
Что ж, вы всегда можете разбить агрегаты и применить возможную согласованность между ними, предполагая, что будет задержка для выполнения инвариантов. Тебе решать - person choquero70; 25.09.2018