非工作流,普通订单的状态流转,如何保证按照预期的希望进行,除了 if 逻辑控制之外,还有什么其他方案么?

2018-10-25 13:43:27 +08:00
 kkkkkrua

比如订单的状态是 创建订单-->支付成功-->出单成功
如何保证数据的状态是这么走,而不被跳过呢。例如:我先调用创建订单 api,再调用出单成功 api
因为 3 个状态分别对应 3 个 api,api 的操作就是 update 某订单的状态。
除了传统 If 逻辑控制,还有其他方式吗?
语言是 java,现在用的状态机,但是在“断开”的流程下,状态机应该不太符合这种情况?

2249 次点击
所在节点    程序员
5 条回复
cwx391497
2018-10-25 14:59:50 +08:00
“断开”的流程是指什么情况?
kkkkkrua
2018-10-25 16:09:14 +08:00
@cwx391497 假如用状态机的话,必须要每次修改状态的时候,启动状态机,然后把状态更新到当前状态,然后进行事件处理,“断开”的意思,不是启动一次,然后一路往下走的意思
smeraldo
2018-10-25 17:35:45 +08:00
加个状态码?
starmoon1994
2018-10-25 17:52:14 +08:00
通过 state 控制 然后用适配器模式,不同的 state 用不同的处理器,传参只传业务流水号,适配器再自己取业务信息
cwx391497
2018-10-26 08:02:57 +08:00
@kkkkkrua 哦,在时间上非连续发生的事件,我以前做过一个很简易的,其实就是用数据库的一个字段去记录订单当前状态,当前状态码可以往哪些状态转直接用业务逻辑实现,然后更新数据库就行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/501022

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX