本章进度 8 / 18
44%
Harness 与工作流·判断·13 分钟
正文已完成

找出状态图里那条危险捷径

审查越级迁移、重复事件、终态复活和并发覆盖四类状态错误。

L139
为什么现在学

把“状态机”从听懂变成会判断,避免遇到真实任务时仍靠感觉选择。

本课会用什么
  • 无需安装新工具
  • 准备一个可对照的真实问题或样本

状态名称正确不等于流程安全。问题常藏在箭头上,草稿能否直接发布、取消后能否重新执行、两个事件能否同时覆盖状态。

这一课的结果

能从状态图中发现至少一种绕过验证或审批的非法路径。

核心概念

先把关键判断说清楚

01

禁止越级迁移

高风险流程必须经过验证和批准状态,不能提供通用 set_status 接口。

02

终态默认不可复活

completed、cancelled 等终态若要重开,应创建新版本或显式 reopen 事件。

03

并发迁移需版本检查

使用 state_version 或条件更新,避免批准和取消同时到达时后写覆盖前写。

案例拆解

已取消订单被迟到的批准重新提交

取消事件先到,审批回调稍后到达并把状态覆盖为 approved。

  1. 01

    为状态增加 version,审批回调只接受预期 awaiting_approval 版本。

  2. 02

    cancelled 定为终态,普通 approve 事件不得离开。

  3. 03

    重开需要创建新申请并关联旧单,而非修改历史。

案例结果

迟到事件被拒绝,取消状态不会因并发回调被意外复活。

提交前练习

现在轮到你

审查一张状态图的四类危险路径。

完成本课需要:完成以下内容用于本课收口。

内容会自动保存在当前设备
查看参考答案与评分标准

参考答案

草稿不得直接发布;published/cancelled 为终态;重复 publish_event 按 event_id 去重;批准更新要求 state_version=3,否则拒绝并重新读取。

评分标准

  • 覆盖至少三类风险
  • 每条风险有强制规则
  • 并发方案不是依赖到达顺序

本课收口 · 应用检查

完成一次应用,再检查理解

完成一次必填练习,再通过理解检查;阅读标记和总结不设硬门槛。

0 / 2
02完成本课必填练习0 / 4 项必填内容已填写03通过理解检查点此去回答,约 30 秒
04补一句总结(可选)可以留空,不影响完成本课。
取消与批准回调可能乱序时,最可靠的迁移保护是?
你现在更接近哪一种状态?
尚有必填项未完成,请补齐后再继续。

资料来源

继续核对与延伸阅读

本课内容最近更新于 。