什么是活动图?
一个活动图是一种行为UML 图它作为一种功能强大的、形式化的流程图,用于软件应用程序。作为统一建模语言(UML)规范的重要组成部分,它描绘了系统组件、业务流程或算法执行循环的逐步操作流程。通过跟踪从初始起点到最终结论的控制流顺序,这种特定的UML 图类型有助于软件工程师、产品经理和业务分析师绘制复杂的系统逻辑,识别边缘情况,并在编写任何后端逻辑之前,直观地分离并行执行路径。
使用VPasCode您无需手动排列流程框、计算箭头交叉点或平衡布局间距。该引擎采用现代化的、类似脚本的格式标准,让您在编码时即可即时生成清晰、高度可读的布局向量。
核心语法指南:元素与构造
要在 PlantUML 中设计出优雅且符合标准的 UML 活动图,您需要掌握执行检查点、活动状态、条件分支、并行拆分和垂直泳道。
1. 执行检查点与基本活动
与传统的 UML 符号不同,现代活动脚本使用简洁、明确的命令标签来标记工作流的边界。活动节点只需在冒号和分号之间放置文本即可定义:

2. 条件逻辑分支(if / else / switch)
为了根据操作参数分支您的控制逻辑,请使用标准编程语法循环。您可以在括号内附加标签,以表示箭头线通过所需的特定评估条件:
- 二元分支(if / elseif / else): 适用于简单的真/假验证检查:
Plantuml Edit Plantuml in VPasCode
if (令牌是否有效?) then (是) :授予 API 访问权限; else (否) :重定向到登录页面; endif
- 多路径开关(switch): 非常适合评估数值范围、角色层级或字符串匹配模式,而无需嵌套无尽的 if 语句:
Plantuml Edit Plantuml in VPasCode
切换 (用户角色类型) 情况 ( 管理员 ) :渲染完整控制台; 情况 ( 审核员 ) :渲染控制面板; 情况 ( 访客 ) :渲染只读信息流; 结束切换
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引擎上的支付处理与实体仓库中的打包单生成是并发进行的,在终端之前能够干净地合并回来停止块。