我一直在努力设计用于聚集域的聚合根。
域: 会议有一个或多个议程项目。 每个AgendaItem都有一个注释部分,每个AgendaItem都有一个或多个任务。
设计 现在基于准则,我试图在满足有限上下文的情况下保持较小的聚合根。所以我有MeetingAggregateRoot和AgendaItemAgreegateRoot。
业务规则: 每次会议将有多个议程项目(每个议程项目可能有一个或多个子议程项目)。但是它们应按顺序排序,并且不应有重复的序列。
如果我将单个AR保留为MeetingAR,而AgendaItem作为实体,则MeetingAR可能负责保持AgendaItem Sequence的顺序。但是随后每个AgendaItem也有多个任务,因此我决定保留两个单独的AR,即MeetingAR和AgendaItem AR(AgendaItemAR将具有任务实体)。
现在的问题是... 我应该如何设计AR,以便MeetingAR仅“负责”执行相关的操作。 AgendaItemAR仅负责其自己的操作,并且仍为会议中的所有议程项目保持顺序。
对此有任何帮助。
答案 0 :(得分:0)
我认为这不是决定。如果议程项目的生命周期取决于会议,则议程将是会议的子实体。这将是一个组合,一个议程项目不可能一个人存在。