05 · WORKFLOWP014 MIN
业务状态机与合法迁移
用状态、事件、守卫和参与者明确业务对象下一步能做什么。
MENTAL MODELFINITE STATE MACHINE
01DRAFT
→02SENT
→03ACCEPTED
→04CONVERTED
先把概念与边界说清楚
定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。
State
对业务对象当前阶段的有限、互斥描述,例如 Quote.DRAFT。
Transition
由事件触发,从一个允许状态转移到另一个状态。
Guard
迁移前必须满足的条件,例如报价未过期、操作者有 approve 权限。
Actor
执行状态转换的用户、系统或外部事件,决定授权与审计。
已过期 Quote 还能被接受
前端隐藏 Accept 按钮,但旧页面仍能调用通用状态更新 API。
- 01
只允许 SENT → ACCEPTED。
- 02
Guard 验证 expires_at、版本和角色。
- 03
转换记录 actor 与原因,失败返回领域错误。
合法性由服务端状态机保护,与页面是否刷新无关。
马上动手
- 画出 Order 的合法迁移和终态。
- 为每条边标出角色与 Guard。
常见坑
- 状态数量无限增长
- 状态同时混合多个维度
- 只画图不在服务端执行
05 · KNOWLEDGE CHECK谁能执行状态转换应该放在哪里?查看答案⌄
答案
进入领域命令前后的服务端授权/Guard 中,并以当前 actor、组织、资源和转换动作共同判断。