如何用图表展示两类业务状态的交互?求推荐最优技术方案
最优图表方案推荐
1. 正交状态机图(Orthogonal State Machine Diagram)
这是UML标准里的现成解决方案,刚好能解决你说的单状态机图要拆两张的问题。你可以在同一张图里划分两个正交区域,一个放订单状态的所有节点(placed/paid/cancelled),另一个放发货状态的节点(空/ready to ship/assigned/shipped/on delivery/delivered/being returned/received at the warehouse)。
直接用箭头把两类状态的触发关系画清楚:
- 订单从
placed变paid时,发货状态直接从「空」跳去ready to ship - 订单一旦设为
cancelled,如果发货状态正处于shipped或on delivery,就触发它转去being returned,之后再到received at the warehouse - 发货状态自己的顺序流转(ready to ship → assigned → shipped → on delivery → delivered)在对应区域里单独画就行,同时保持和订单状态的关联
这种方案的好处很明显:
- 一张图搞定所有状态交互,不用拆成两张
- 符合UML规范,团队里的人基本都能看懂
- 比活动图更聚焦状态之间的依赖关系,不会被流程步骤干扰,可读性强很多
2. 状态转换表(State Transition Table)
如果需要精准梳理所有规则,或者要给开发做参考,可以搭配这个表格用。把所有可能的状态组合、触发事件、新状态都列出来:
| 订单当前状态 | 发货当前状态 | 触发事件 | 订单新状态 | 发货新状态 |
|---|---|---|---|---|
| placed | 空 | 用户完成支付 | paid | ready to ship |
| paid | ready to ship | 仓库完成分配 | paid | assigned |
| paid | assigned | 仓库完成发货 | paid | shipped |
| paid | shipped | 物流开始配送 | paid | on delivery |
| paid | on delivery | 用户确认送达 | paid | delivered |
| paid | shipped | 用户取消订单 | cancelled | being returned |
| paid | on delivery | 用户取消订单 | cancelled | being returned |
| cancelled | being returned | 仓库确认收货 | cancelled | received at the warehouse |
这个表格的优势是结构化,能把所有边缘场景都列全,不会漏,和正交状态机图搭配起来,图文结合,不管是梳理逻辑还是给团队讲解都很方便。
为什么不选你提到的两种方案?
- 普通活动图:虽然能把流程走通,但状态之间的依赖关系被埋在步骤里,复杂起来就乱了,确实可读性差
- 两张独立状态机图:没法直观展示订单状态变了之后发货状态怎么跟着变,得读者自己脑补关联,很容易出错
内容的提问来源于stack exchange,提问作者Random Actions
相关产品推荐
相关产品推荐

