状态机:choice 与 fork
简介 / Introduction
状态机(State Machine)常用于描述对象在其生命周期内的状态流转。除了普通的状态节点,还依赖两种重要的伪状态(Pseudostate):
- choice — 条件分支,类似于
if/else,根据守卫条件选择下一个状态。 - fork — 并行分支,同时从一点分叉出多个并发执行路径。
本文用同一个业务场景(订单处理)分别演示 PlantUML 与 Mermaid 的写法,并做横向对比。
PlantUML 版
1 | @startuml |
PlantUML 使用 <<fork>> 与 <<join>> 关键字在状态图上标注伪状态,fork 之后多个箭头并行发出。
Mermaid 版
1 | stateDiagram-v2 |
Mermaid 使用 Fork 与 Join 关键字作为特殊状态节点,实现与 PlantUML 相同的效果。
对比 / Side-by-side
| 特性 | PlantUML | Mermaid |
|---|---|---|
| 分支伪状态 | state X <<choice>> |
X --> [*] : guard(内联守卫) |
| fork 语法 | <<fork>> + <<join>> |
Fork / Join 节点 |
| 并行箭头 | 多个 --> Target 从 fork 发出 |
从 Fork 节点分出多条路径 |
| 语法风格 | 类图/活动图风格 | YAML 风格简洁语法 |
小结 / Wrap-up
choice 与 fork 是状态机建模的核心伪状态。PlantUML 通过 <<choice>>、<<fork>>、<<join>> 标注实现,语义清晰但语法略繁;Mermaid 用内置的 Fork/Join 节点实现,语法更简洁但不支持显式 choice 伪状态,守卫直接写在转移线上。选择哪个工具取决于项目对语义精确度和语法简洁性的取舍。
- 标题: 状态机:choice 与 fork
- 作者: puml.online
- 创建于 : 2026-09-06 09:00:00
- 更新于 : 2026-09-07 01:06:15
- 链接: https://puml.online/blog/state-diagram-choice-fork/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。