V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kkkkkrua
V2EX  ›  程序员

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

  •  
  •   kkkkkrua · Oct 25, 2018 · 2994 views
    This topic created in 2742 days ago, the information mentioned may be changed or developed.

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

    5 replies    2018-10-26 08:02:57 +08:00
    Persona0x4343
        1
    Persona0x4343  
       Oct 25, 2018
    “断开”的流程是指什么情况?
    kkkkkrua
        2
    kkkkkrua  
    OP
       Oct 25, 2018
    @cwx391497 假如用状态机的话,必须要每次修改状态的时候,启动状态机,然后把状态更新到当前状态,然后进行事件处理,“断开”的意思,不是启动一次,然后一路往下走的意思
    smeraldo
        3
    smeraldo  
       Oct 25, 2018
    加个状态码?
    starmoon1994
        4
    starmoon1994  
       Oct 25, 2018
    通过 state 控制 然后用适配器模式,不同的 state 用不同的处理器,传参只传业务流水号,适配器再自己取业务信息
    Persona0x4343
        5
    Persona0x4343  
       Oct 26, 2018
    @kkkkkrua 哦,在时间上非连续发生的事件,我以前做过一个很简易的,其实就是用数据库的一个字段去记录订单当前状态,当前状态码可以往哪些状态转直接用业务逻辑实现,然后更新数据库就行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5865 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 06:37 · PVG 14:37 · LAX 23:37 · JFK 02:37
    ♥ Do have faith in what you're doing.