2013-07-31 09:46 "@tangxuehua
"的内容
如果是这样,要要是prepared执行了,但是confirm一直未执行,那又该如何处理呢?呵呵 ...
prepared并不是真正扣款,而是坚持余额是否能够被扣款,如果余额只有5元,要转账出去10元,那就没有prepared,下一步就不会进行;如果准备好了,表示余额足够,而且B帐号也准备好能够被转入,不存在冻结等情况,再进行转出和转入,但confirm事件发生时,转出和转入已经发生。
我把原英文的过程大意翻译如下:
首先,聚合根Transaction转账这个实体发出prepared这个事件,实际是检查是否准备好的事件,如下图

prepared这个事件发往A和B两个账户,变成它们的命令command。图中黄色部分代表命令,从两个账户出来变成蓝色的事件了。

两个帐号检查自己余额等条件,认为具备转账条件,上图发出的蓝色事件,表示准备好了,变成向聚合根转账实体发出的命令,如下图的黄色:

同理,上图聚合根发出总攻命令,进行真正转账,余额扣除和增加,变成下图的黄色命令,下图两个账户在余额变动后,发出确认完成的事件,如下图蓝色部分,这两个事件发回聚合根实体转账,转账回复REST客户端200 OK。
