订单支付、售后审核、商品检测这类业务,都需要回答两个问题:当前处于什么状态,接下来允许做什么?当一个业务又包含多个任务、条件分支和异步等待时,还需要知道哪些任务已经完成,哪些任务可以继续执行。
状态机适合表达状态变化的规则,流程编排侧重组织任务及其依赖。 两者可以一起使用:流程引擎调度任务,任务内部用状态机约束“待执行、执行中、成功、失败”等状态的变化。
状态机解决什么问题?
一个常见的业务状态机包含以下元素:
| 元素 | 作用 | 售后申请示例 |
|---|---|---|
| 状态(State) | 描述当前业务阶段 | 待审核、待退款、已退款、已驳回 |
| 事件(Event) | 触发一次状态变化 | 审核通过、审核拒绝、退款成功 |
| 转移(Transition) | 定义状态之间允许的路径 | 待审核收到审核通过事件后进入待退款 |
| 守卫条件(Guard) | 判断当前是否允许转移 | 审核记录完整且退款金额合法 |
| 动作(Action) | 转移过程中执行的操作 | 保存审核结果、创建退款任务 |
2026/9/2大约 9 分钟
