跨越聚合边界的交易

341*_*008 5 domain-driven-design transactions aggregateroot domain-model

我有以下域建模问题,我似乎最终要么跨越一致性边界或创建一个巨大的聚合.有人可以帮我分手吗?

有两种作业类型JobA,JobB.JobA由任务组成TaskA.JobB由任务组成TaskB.JobA并且JobB是无关的.它们之间唯一共同点是它们都需要设备资源.我本来想创建5个聚合根,它们可以互相JobA引用- 将参考TaskA等等.

领域模型

我可以将一份工作及其任务集中在一起.这是以引入其他开销为代价的,因为任务本身就是复杂的生物.但是,以下约束阻止我使用任一模型.

  1. 如果任何任务仍未完成,则无法将作业标记为完成.此检查会导致事务跨越聚合边界(例如,TaskAJobA).
  2. 设备不能分配给1个以上的作业.此检查将跨越两个作业聚合.
  3. 必须在工作标记完成之前释放设备.此交易将跨设备和工作总计.

只有一个聚合会将所有交易放在边界内,但这会使得总量不可能大.是否有一个隐藏在这一切中的不同模型我错过了?

小智 1

我认为最好的解决方案可能是使用最终一致性。

当我对设计聚合有疑问时,我总是会看看Vaughn Vernon 的《有效聚合设计》