Mermaid时序图进阶:4个关键字画清并发、分支与关键路径
【免费下载链接】mermaidGeneration of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown项目地址: https://gitcode.com/GitHub_Trending/me/mermaid
一条消息队列消息要驱动多个下游服务,还带重试和超时兜底,一张普通时序图根本画不下。本文用4个关键字,在Mermaid时序图里表达并行流程与条件分支:par、alt/opt、critical、rect。示例均可直接粘贴运行。
三个自检问题,确定用哪个关键字
动笔前先问自己三个问题,每个问题对应一个关键字:
- 有没有多个步骤同时执行?用
par - 流程会不会因状态不同而分叉?
alt是多选一,opt是满足条件才执行 - 有没有必须成功的路径,失败还要分情况处理?用
critical,异常挂在option上
分工一句话:par管"同时做多件事",alt/opt管"不同情况做不同的事",critical管"这条路必须成"。只想给某个阶段涂个底色,用rect就行,它不参与逻辑。
par关键字:并行流程怎么写
par开启一个并行块,块内每个and切出一个新分支,每个分支放各自的消息。分支标签写清楚"谁在并行做什么"。消息队列消费是典型场景:消费者收到消息后,同时写档案和日志。
⚠️
par与end必须一一配对;嵌套两层基本够用,三层以上图会很难读。
alt关键字:条件分支怎么写
alt类似 if/else:标签写条件,用else分多条路径,最后统一end收尾。opt没有 else,块只在条件成立时执行,相当于可选步骤。文件上传场景里,大小校验是必走分支,哈希校验是可选步骤。
⚠️ 最可能发生的分支放第一个;分支标签用动宾短语,如"文件超过上限",别写"异常"。
critical与rect:关键路径怎么标
critical声明"这段必须成功",内部可挂多个option块,一个对应一种失败情况。rect只负责涂背景色,用来视觉强调某个阶段。CI/CD 流水线很典型:构建必须成功,部署前阶段再高亮一下。
⚠️
option块是可选的,不带任何option的critical合法,表示只标记必须成功的段落。
完整案例:设备指令下发流程怎么画
指令下发几乎用上了全部特性:成功与失败走条件分支,兜底动作并行执行,兜底区再用背景色圈出来。
逐段拆一下:
- 顶部
autonumber给每条箭头编号,评审时直接说"第15步超时",不用数箭头。 Gateway->>+Device的+自动激活 Device,用激活条表示"正在处理";末尾deactivate释放。+/-与显式 activate/deactivate 别混用错配,否则激活条会错位。Device-xGateway: 连接超时用叉号箭头-x表示消息失败,比虚线箭头更直白。- alt 块里成功分支在前、失败分支在后,读者先看到主线。
- par 里两个
and分支是同时执行的兜底动作,外面套rect圈成独立的"兜底区"。 %%注释行用来标注兜底策略,解析器忽略,渲染后不可见。
特性速查表
| 关键字 | 作用 | 何时用 |
|---|---|---|
| par / and | 并行流程块 | 多个动作同时执行 |
| alt / else | 多条件分支 | 状态不同结果不同 |
| opt | 可选流程 | 满足条件才执行 |
| critical / option | 关键路径与异常处理 | 必须成功且失败要分情况 |
| rect | 背景高亮 | 强调某个阶段 |
| loop | 循环块 | 定时或重复执行 |
| break | 流程中断 | 异常后跳过后续步骤 |
想继续深入,看这两篇:
- 时序图完整语法
- Mermaid配置项
【免费下载链接】mermaidGeneration of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown项目地址: https://gitcode.com/GitHub_Trending/me/mermaid
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考