简体中文
English 简体中文 繁體中文
Methodox 首页

状态图

状态图展示某个事物可能处于的各种状态,以及使它在这些状态之间转换的事件。它以 state 及其标题开头。

state Media player
direction: right
* -> Stopped
Stopped -> Playing: play
Playing -> Paused: pause
Paused -> Playing: play
Playing -> Stopped: stop
Paused -> Stopped: stop
Playing
  * -> Buffering
  Buffering -> Streaming: ready
  Streaming -> Buffering: stall

上面的文本:Stopped、Playing 和 Paused 通过各自的事件相连,Playing 是一个包含 Buffering 和 Streaming 的框

设置

设置 别名 值
direction flow, orientation, layout, rankdir 转换的走向:down(默认)、right、up 或 left

状态和转换

状态的创建方式与流程图的步骤相同 —— 在首次命名处创建 —— 并绘制为圆角形状。像其他工具那样写 state Name 也可以命名一个状态。两个状态之间的箭头是一个转换,冒号后的文字是触发该转换的事件:Playing -> Paused: pause。

开始和结束

箭头前的 * 表示状态机的开始,写在箭头后则表示状态机的结束:* -> Idle、Done -> *。Mermaid 的 [*] 也按同样方式读取。在其他任何种类的示意图中出现 * 都会被指出。

复合状态

下方有缩进行的状态是复合状态:一个包含其自身状态机的框,有自己的开始和结束。指向或来自其名称的箭头会连到它的框上。Playing: Playing music 为复合状态指定一个标签。

选择、分叉和汇合

特性 将状态绘制为
[choice](也可写作 decision) 菱形,状态机在此走向不同的分支
[fork] 横条,在此分裂为同时运行的多个状态
[join] 横条,它们在此重新汇合
state An order
* -> Placed
Placed -> split
split [fork]
split -> Paid
split -> Packed
Paid -> joined
Packed -> joined
joined [join]
joined -> Shipped
Shipped -> Returned?
Returned? [choice]
Returned? -> Refunded: yes
Returned? -> *: no
Refunded -> *
note Shipped: Tracked from here

上面的文本:分叉为 Paid 和 Packed,汇合进入 Shipped,一条注释,以及一个两个答案都通向结束的选择

方括号中的颜色和角色会为状态着色,详见语言页面。

注释

note State: what to say 会在某个状态旁边放置一条注释,并用虚线与之相连。