本章进度 8 / 18
44%
正文已完成
L139找出状态图里那条危险捷径
审查越级迁移、重复事件、终态复活和并发覆盖四类状态错误。
把“状态机”从听懂变成会判断,避免遇到真实任务时仍靠感觉选择。
建议先理解同主题上一课的核心概念,再完成本课判断练习。
- 无需安装新工具
- 准备一个可对照的真实问题或样本
状态名称正确不等于流程安全。问题常藏在箭头上,草稿能否直接发布、取消后能否重新执行、两个事件能否同时覆盖状态。
能从状态图中发现至少一种绕过验证或审批的非法路径。
核心概念
先把关键判断说清楚
禁止越级迁移
高风险流程必须经过验证和批准状态,不能提供通用 set_status 接口。
终态默认不可复活
completed、cancelled 等终态若要重开,应创建新版本或显式 reopen 事件。
并发迁移需版本检查
使用 state_version 或条件更新,避免批准和取消同时到达时后写覆盖前写。
案例拆解
已取消订单被迟到的批准重新提交
取消事件先到,审批回调稍后到达并把状态覆盖为 approved。
- 01
为状态增加 version,审批回调只接受预期 awaiting_approval 版本。
- 02
cancelled 定为终态,普通 approve 事件不得离开。
- 03
重开需要创建新申请并关联旧单,而非修改历史。
案例结果
迟到事件被拒绝,取消状态不会因并发回调被意外复活。
提交前练习
现在轮到你
审查一张状态图的四类危险路径。
完成本课需要:完成以下内容用于本课收口。
内容会自动保存在当前设备
查看参考答案与评分标准
参考答案
草稿不得直接发布;published/cancelled 为终态;重复 publish_event 按 event_id 去重;批准更新要求 state_version=3,否则拒绝并重新读取。
评分标准
- 覆盖至少三类风险
- 每条风险有强制规则
- 并发方案不是依赖到达顺序
本课收口 · 应用检查
完成一次应用,再检查理解
完成一次必填练习,再通过理解检查;阅读标记和总结不设硬门槛。
你现在更接近哪一种状态?
尚有必填项未完成,请补齐后再继续。
资料来源
继续核对与延伸阅读
本课内容最近更新于 。
- Trustworthy agents in practice↗paper · 核对日期 2026-08-23
- OpenTelemetry Signals↗official-docs · 核对日期 2026-08-23