组合片段是什么
顺序图的组合片段把交互分块并标注类型,用来表达分支、循环与并发。片段用方框包住若干消息,左上角标类型关键字,条件守卫写在方括号里。UML 2.5 常见的片段有 alt、opt、loop、par、break、critical、neg,另有 strict、seq、ignore 等使用频率较低的类型。
常用片段
| 片段 | 含义 | 典型场景 |
|---|---|---|
| alt | 多分支,条件互斥 | 支付成功与支付失败两条路径 |
| opt | 条件成立才执行 | 库存不足时触发补货通知 |
| loop | 按守卫条件或次数重复 | 每 100 条分批拉取订单 |
| par | 并行执行,各分支独立 | 同时调用风控与库存服务 |
| break | 条件成立则中断所在片段 | 鉴权失败直接结束流程 |
| critical | 临界区,消息不可与其他片段交错 | 扣减库存与记账必须原子执行 |
| neg | 声明无效的交互 | 展示错误调用顺序供评审纠正 |
典型使用场景
- 描述异常与降级路径:用 alt 把超时、失败、限流分支画全
- 表达分页或批量轮询:loop 配守卫条件与终止条件
- 表达并发编排:par 展示同时发起的多个下游调用
- 评审接口契约:用 neg 标注禁止出现的调用顺序
- 强调事务边界:critical 圈出不能被交错的步骤
与流程图的区别
顺序图强调参与者之间消息的先后与返回,组合片段只负责把消息集合按条件或次数分组,本身不表达业务步骤的价值。用组合片段画完整流程会迅速膨胀,异常分支一多就无法阅读。常见做法是把正常路径画成主顺序图,把异常与降级单独画成一张带 alt 的图,评审时对照阅读。
条件守卫应写业务条件,例如「库存充足」,而不是实现细节,例如「行数大于零」,否则图只在写代码的那一刻才有意义。
par 表示逻辑上的并行,不承诺真实并发;如果两条分支共享同一个资源,需要在图旁注明串行保护策略,否则实现方容易误以为可以完全并行执行。