【发布时间】:2017-04-21 20:37:04
【问题描述】:
我是传奇的新手。
这里是一个简单的场景:
- 用户点击“创建订单”:创建订单(首先保持其状态 = NEW)
- 用户完成订单填写后,点击保存 --> 状态现在已提交
- 当另一个检查订单并验证它时,必须进行一个过程。仅当调用其他一些服务并给出其 GO 时,该订单才有效。
整个工作流程是:
-
NEW->SUBMITTED. - 从
SUBMITTED,用户可以取消提交并将订单切换回NEW。 - 验证可以将订单状态设置为
VALIDATED或REJECTED。 - 如果
REJECTED原始用户必须先修复他的订单,然后再将其提交给验证。
所以我需要避免在VALIDATION 正在进行时订单可以回滚到NEW。
我的问题是,对于第 3 步,是否更好:
- 将订单状态更新为 PENDING,引发事件并开始 saga(具有自己的状态以及流程的编排和例程失误)?
- 从订单聚合中移除状态并将其放入 saga(所以 saga 从步骤 1 开始)? saga 被命名为 OrderSaga,它封装了从开始到结束的所有过程,而不仅仅是需要外部服务的部分,即分布式事务。
- 还有别的吗? (感谢链接到博客或谷歌群组邮件)
谢谢
【问题讨论】: