PlantUML 活动图语法指南

什么是活动图?

一个活动图是一种行为UML 图它作为一种功能强大的、形式化的流程图,用于软件应用程序。作为统一建模语言(UML)规范的重要组成部分,它描绘了系统组件、业务流程或算法执行循环的逐步操作流程。通过跟踪从初始起点到最终结论的控制流顺序,这种特定的UML 图类型有助于软件工程师、产品经理和业务分析师绘制复杂的系统逻辑,识别边缘情况,并在编写任何后端逻辑之前,直观地分离并行执行路径。

使用VPasCode您无需手动排列流程框、计算箭头交叉点或平衡布局间距。该引擎采用现代化的、类似脚本的格式标准,让您在编码时即可即时生成清晰、高度可读的布局向量。

核心语法指南:元素与构造

要在 PlantUML 中设计出优雅且符合标准的 UML 活动图,您需要掌握执行检查点、活动状态、条件分支、并行拆分和垂直泳道。

1. 执行检查点与基本活动

与传统的 UML 符号不同,现代活动脚本使用简洁、明确的命令标签来标记工作流的边界。活动节点只需在冒号和分号之间放置文本即可定义:

start
:初始化应用上下文;
:加载本地配置缓存;
stop

2. 条件逻辑分支(if / else / switch)

为了根据操作参数分支您的控制逻辑,请使用标准编程语法循环。您可以在括号内附加标签,以表示箭头线通过所需的特定评估条件:

3. 并行执行(分叉 / 汇合)

在建模现代云环境或多线程代码循环时,你通常需要表示同时发生的任务。使用 分叉 构造将你的执行流程拆分为独立的并行路径,并以 汇合 标记将它们重新合并为单一线程:

分叉
    :生成电子邮件账单;
再次分叉
    :扣除仓库库存;
结束分叉

4. 使用泳道组织责任

为了明确界定哪个参与者、服务团队或微服务基础设施边界负责特定操作,使用称为泳道的垂直分区。通过在管道字符(|泳道标题|):

|客户端应用|
开始
:点击购买按钮;
|#浅蓝色 支付网关|
:授权信用卡;

清晰活动流程的最佳实践

  • 使用主动动词标签: 通过以行动导向的动词开头,使你的活动文本块紧凑且清晰(例如,:解析负载; 而不是 :由工作应用程序解析负载数据;).
  • 对高风险节点进行颜色编码: 将自定义十六进制颜色直接附加到敏感背景节点上(例如,:#Crimson:清除数据库记录;) 以使关键步骤在大型企业地图中视觉上更加突出。
  • 避免交叉线条: 如果你的多分支图开始显得杂乱,可以通过使用分离符号(detach) 或终端锚点来插入一个干净的圆形连接节点,以分割文本块。

现实世界中的 PlantUML 活动图示例

示例 1:用户入职与身份验证(分支与开关)

此模板展示了一个标准的用户入职工作流,其中包含深层的二元条件逻辑和身份验证检查,并以清晰的 UML 图表布局呈现。

@startuml
start
:用户提交注册表单;
if (邮箱已存在?) then (是)
    :显示账户冲突警告;
    stop
else (否)
    :创建待处理用户记录;
endif

:发送验证 OTP 代码;
repeat
    :等待用户输入 OTP;
backward:记录失败尝试警报;
repeat while (OTP 是否正确?) is (否) not (是)

switch (账户选择层级)
case ( 高级付费 )
    :配置数据库集群;
    :触发 Stripe 订阅循环;
case ( 免费层级 )
    :应用基础 API 速率限制;
endswitch

:将用户档案标记为已验证;
stop
@enduml

语法解析: 此模板展示了标准的 repeat / backward / repeat while 验证循环,持续捕获用户输入,直到通过正确的安全密钥。多路径 switch 包装器根据层级状态值清晰地分离账户设置逻辑。

示例 2:分布式订单履行引擎(泳道与并行分支)

此复杂的企架构图利用结构化的垂直泳道,精确追踪自动化结账流程如何在浏览器客户端、API 网关和实体履行中心之间并行处理任务。

@startuml
|#White|客户端应用程序|
start
:提交购物车;
:选择配送地址;

|#LightCyan|结账 API 引擎|
:验证产品库存;
if (商品有库存?) then (否)
    :返回缺货错误;
    stop
else (是)
    :锁定库存分配;
endif

fork
    :通过 Stripe 处理付款;
    :生成数字 PDF 收据;
fork again
    |#Lavender|仓库管理系统|
    :打印实体包装单;
    :分配仓库机器人拣货员;
end fork

|#LightCyan|结账 API 引擎|
:分发订单确认钩子;
stop
@enduml

语法解析: 使用彩色泳道(如 |#Lavender 仓库管理系统|) 会强制自动布局引擎生成清晰、独立的列。并行 分叉该语句明确表明,API引擎上的支付处理与实体仓库中的打包单生成是并发进行的,在终端之前能够干净地合并回来停止块。

滚动至顶部