【发布时间】:2015-07-04 06:44:11
【问题描述】:
我有以下域建模问题,我似乎最终会跨越一致性边界或创建一个巨大的聚合。有人可以帮我分解吗?
有两种工作类型JobA、JobB。 JobA 由任务 TaskA 组成。 JobB 由任务 TaskB 组成。 JobA 和 JobB 不相关。他们之间唯一的共同点是他们都需要设备资源。我原本想创建 5 个可以相互引用的聚合根 - JobA 将引用 TaskA 等等。
我可以将一份工作及其任务放在一个集合中。这是以引入其他开销为代价的,因为任务本身就是复杂的生物。但是,以下限制使我无法使用任一模型。
- 如果任何任务仍未完成,则无法将作业标记为完成。此检查会导致事务跨越聚合边界(例如,
TaskA和JobA)。 - 一个设备不能分配给多个作业。此检查将跨越两个作业聚合。
- 必须先释放设备,然后才能将作业标记为完成。此事务将跨越设备和作业聚合。
拥有单个聚合会将所有事务放在边界内,但这会使聚合变得不可能大。我错过的所有这些中是否隐藏着不同的模型?
【问题讨论】:
-
有些规则在实际中无法做到强一致,最终必须做到一致。
标签: transactions domain-driven-design domain-model aggregateroot