Visual LabINTERACTIVE LEARNING
05 · WORKFLOWP014 MIN

业务状态机与合法迁移

用状态、事件、守卫和参与者明确业务对象下一步能做什么。

MENTAL MODELFINITE STATE MACHINE
01DRAFT
02SENT
03ACCEPTED
04CONVERTED
状态机是一张允许迁移的图;事件尝试沿边移动,Guard 决定这次能否通过。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

State

对业务对象当前阶段的有限、互斥描述,例如 Quote.DRAFT。

02

Transition

由事件触发,从一个允许状态转移到另一个状态。

03

Guard

迁移前必须满足的条件,例如报价未过期、操作者有 approve 权限。

04

Actor

执行状态转换的用户、系统或外部事件,决定授权与审计。

02 · BLIND BOTS CASE

已过期 Quote 还能被接受

问题现场

前端隐藏 Accept 按钮,但旧页面仍能调用通用状态更新 API。

  1. 01

    只允许 SENT → ACCEPTED。

  2. 02

    Guard 验证 expires_at、版本和角色。

  3. 03

    转换记录 actor 与原因,失败返回领域错误。

得到什么

合法性由服务端状态机保护,与页面是否刷新无关。

03 · PRACTICE

马上动手

  1. 画出 Order 的合法迁移和终态。
  2. 为每条边标出角色与 Guard。
04 · PITFALLS

常见坑

  • 状态数量无限增长
  • 状态同时混合多个维度
  • 只画图不在服务端执行
05 · KNOWLEDGE CHECK谁能执行状态转换应该放在哪里?查看答案⌄
答案

进入领域命令前后的服务端授权/Guard 中,并以当前 actor、组织、资源和转换动作共同判断。