V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kkkkkrua
V2EX  ›  程序员

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

  •  
  •   kkkkkrua · 2018-10-25 13:43:27 +08:00 · 2230 次点击
    这是一个创建于 2203 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    5 条回复    2018-10-26 08:02:57 +08:00
    cwx391497
        1
    cwx391497  
       2018-10-25 14:59:50 +08:00
    “断开”的流程是指什么情况?
    kkkkkrua
        2
    kkkkkrua  
    OP
       2018-10-25 16:09:14 +08:00
    @cwx391497 假如用状态机的话,必须要每次修改状态的时候,启动状态机,然后把状态更新到当前状态,然后进行事件处理,“断开”的意思,不是启动一次,然后一路往下走的意思
    smeraldo
        3
    smeraldo  
       2018-10-25 17:35:45 +08:00
    加个状态码?
    starmoon1994
        4
    starmoon1994  
       2018-10-25 17:52:14 +08:00
    通过 state 控制 然后用适配器模式,不同的 state 用不同的处理器,传参只传业务流水号,适配器再自己取业务信息
    cwx391497
        5
    cwx391497  
       2018-10-26 08:02:57 +08:00
    @kkkkkrua 哦,在时间上非连续发生的事件,我以前做过一个很简易的,其实就是用数据库的一个字段去记录订单当前状态,当前状态码可以往哪些状态转直接用业务逻辑实现,然后更新数据库就行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3183 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:37 · PVG 20:37 · LAX 04:37 · JFK 07:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.