You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sequence Diagrams中多次调用完整内部流程实现重试循环

带全流程跳转重试逻辑的序列图建模方案

针对需要从流程起点(Action1)重新执行全链路步骤、直至Action2校验通过的重试场景,不要使用孤立的ref块表达跳转,以下方案可以完全消除表意歧义:

方案1:使用标准loop组合片段(优先推荐,符合UML官方语义)

这是团队协作场景下沟通成本最低的画法,完全不会出现“仅重跑Action1”的误解:

  • 把「执行Action1 → 执行Action2 → 校验Action2执行结果」整段逻辑,完整包裹在loop组合片段的边界内
  • 在loop片段的守卫条件位置明确标注循环规则:重复执行片段内所有步骤,直至Action2校验通过
  • 逻辑语义:只要Action2校验失败,片段边界内从第一步Action1开始的所有步骤会自动重新执行,校验通过后才会跳出循环执行后续流程

常用的PlantUML实现示例如下:

@startuml
actor 流程触发方
participant 业务执行单元
loop 重复执行:直至Action2执行成功
    流程触发方 -> 业务执行单元: 执行Action1
    业务执行单元 --> 流程触发方: Action1执行完成
    流程触发方 -> 业务执行单元: 执行Action2
    业务执行单元 --> 流程触发方: 返回Action2执行结果
    流程触发方 -> 流程触发方: 校验Action2结果
end
@enduml

方案2:ref块复用场景的歧义消除写法

如果因为流程步骤过长、需要用ref块做逻辑复用避免重复绘图,不要只在ref块内写“重跑Action1”,要做两个明确标注:

  • 在流程起始位置的Action1旁增加明确锚点标记:[流程重试起点]
  • ref块内标注完整跳转语义,不要省略后续关联步骤:跳转至[流程重试起点],重新执行从Action1到结果校验的全量步骤

避坑提醒

不要直接画一条从校验失败分支指向Action1的无标注回线箭头,这种画法没有明确的流程边界,非常容易被误读为“校验失败后仅单独调用Action1,不会触发后续Action2执行”。

按照UML2.0序列图规范,loop是表达循环、重试逻辑的原生标准元素,语义共识度远高于自定义ref跳转,跨团队协作场景下优先选择该方案。

内容的提问来源于stack exchange,提问作者Ishan Saini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:21:25