交易涉及几个聚合根

时间:2014-06-22 09:13:53

标签: transactions domain-driven-design

如何处理涉及多个聚合根的交易? Imaginane我们有域名服务,在两个帐户之间进行一些银行交易。

      aggregateRoot1 = Repository.getById(id1);

      aggregateRoot2 = Repository.getById(id2);

      aggregateRoot1.increaseAmount(sum); //first transaction

      aggregateRoot2.decreaseAmount(sum); //second transaction

如果在第一次交易后电力故障或类似情况下如何处理?我是DDD(DDD + CQRS + EventSourcing)的新手,只是在寻找这种设计方法的所有优点和缺点。感谢。

1 个答案:

答案 0 :(得分:1)

这是一个有趣的问题,因为它揭示了关于DDD + CQRS + EventSourcing的两个有趣的事情。

首先,从表面上看,管理此流程的方法是使用流程管理器来跟踪流程的成功与否,因此知道何时以及如何持久保存结果。该经理可以确保其管理交易'并且它可以确保所有通过或全部失败。

第二部分是方法本身。 CQRS的一个主要优点是使用DDD的一个重要驱动因素是您最终会使用无处不在的语言'为您的系统。 IncreaseAmount没有说'为什么'金额正在增加。它是由同一个人所拥有的账户之间的转账还是正在进行的付款,或者是收取的费用......所以回顾一下,DDD的关键优势和CQRS中默认的关键优势就是你结束了用您和具有领域知识的非技术商人可以理解和推理的语言。这是DDD的一个非常强大和重要的好处,特别是CQRS。

不确定这是否真的回答了你的问题,但我希望能给你一些思考的东西。