示例代码
|
|
stateDiagram-v2
[*] --> 正常运行(Measure)
state "正常运行 (Measure)" as Measure {
[*] --> 采样中
采样中 --> 数据处理
数据处理 --> 采样中
}
state "故障状态 (Fault)" as Fault {
[*] --> 诊断中
诊断中 --> 锁定输出: 保护下游
锁定输出 --> 等待维修
}
state "维修模式 (Maintenance)" as Maint {
[*] --> 识别FRU
识别FRU --> 更换模块: 拔插操作
更换模块 --> 自动自检: 握手通信
自动自检 --> [*]
}
%% 状态流转逻辑
Measure --> Fault: 监测到光强过低 (光源老化)
Fault --> Maint: 运维人员到达,切换至维修模式
note right of Maint
这里体现 FRU 的优势:
不需要焊接,不需要示波器
换完自动握手
end note
Maint --> Measure: 自检通过,系统复位
核心语法要素
开头结尾画只眼
[*], 箭头必须两横线-->, 名字太长用别名as, 条件说明加冒号:
- 起点与终点:
[*],这是状态图的标志性符号- 放在开头:表示“系统启动”。
- 放在结尾:表示“系统关机”或“流程结束”。
- 流转箭头:
-->- 注意!Mermaid 的状态图箭头必须是 两个横杠
-->
- 注意!Mermaid 的状态图箭头必须是 两个横杠
- 状态描述:冒号
:- 如果你想解释“为什么”会从 A 变成 B,就在箭头后面加冒号
- 格式:
状态A --> 状态B : 触发条件
- 别名法
- 给状态起个简单的英文代号(ID),然后在引号里写复杂的中文名字
- 语法:
state "复杂的中文名字" as ID
避坑指南
- 坑 1:方向没控制好,状态图默认是从上到下(Top-Bottom),如果流程很长,图会变得巨长无比
- 解决: 在第一行加上
direction LR(Left to Right)。
- 解决: 在第一行加上
- 坑 2:忘记闭环
- 状态图最怕“死胡同”。比如:状态到了“故障”,然后就没下文了。
- 逻辑检查: 故障修好了去哪?要画一条线指回“正常”或指像“结束
[*]”。
- 坑 1:箭头少画一横
- ❌ 错误:
A -> B - ✅ 正确:
A --> B
- ❌ 错误: