活动图
活动图描述工作流或流程:各个步骤、它们的顺序,以及分支和并行路径。它适合用于业务流程、算法,以及任何从起点流向终点的过程。 在 PlantUML 中,每个活动写成一行,使用箭头和if、repeat、fork 等关键字来表达控制流。图形会自动生成。
- 文本输入,图形输出。 自上而下描述流程,包括分支和循环。
- 自上而下阅读。 文本中的顺序就是图中的顺序。
- 易于重组。 调整步骤顺序或添加分支,只需编辑文本,无需重画。
简单的行动
活动标签以: 开始,以; 结束。
文本格式可以使用克里奥尔语的维基语法。
它们的定义顺序是隐性链接的。
|
🎉 Copied!
|
|
Other simple action (defined as a list)
Simple action list separated by -
|
🎉 Copied!
|
|
Simple action list separated by *
With one level
|
🎉 Copied!
|
|
With several levels
|
🎉 Copied!
|
|
[Ref. GH-2376]
开始/停止/结束
你可以使用start 和stop 关键字来表示一个图的开始和结束
。
|
🎉 Copied!
|
|
你也可以使用
end 关键字。
|
🎉 Copied!
|
|
条件
你可以使用if,then, break和else 关键词来在你的图表中放入测试。
标签可以用圆括号提供。
有3种语法可供选择。
if (...) then (...)
|
🎉 Copied!
|
|
if (...) is (...) then
|
🎉 Copied!
|
|
if (...) equals (...) then
|
🎉 Copied!
|
|
[Ref.QA-301]
几个测试(水平模式)
你可以使用elseif 关键字来拥有几个测试(默认是水平模式)。
|
🎉 Copied!
|
|
几个测试(垂直模式)
你可以使用!pragma useVerticalIf on 命令,让测试处于垂直模式。
|
🎉 Copied!
|
|
你可以使用
-P command-line[命令行]选项来指定pragma。
java -jar plantuml.jar -PuseVerticalIf=on
[参考文献:QA-3931,issue-582] 。 *[Refs. [QA-3931](https:forum.plantuml.net/3931/please-provide-elseif-structure-vertically-activity-diagrams), [GH-582](https:github.com/plantuml/plantuml/issues/582)]*
WARNING
This translation need to be updated. WARNING
Switch判断 [switch, case, endswitch]
你可以使用 switch, case 和 endswitch 关键词在图表中绘制Switch判断.
使用括号表示标注.
|
🎉 Copied!
|
|
条件判断和终止 [kill, detach]
你可以在if判断中终止一个行为.
|
🎉 Copied!
|
|
但如果你想在特定行为上停止,你可以使用
kill 或 detach关键字:
kill
|
🎉 Copied!
|
|
[参考. QA-265]
detach
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
重复循环
你可以使用关键字repeat和repeatwhile进行重复循环。
|
🎉 Copied!
|
|
你同样可以使用一个全局行为作为
repeat目标, 在返回循环开始时使用backward关键字插入一个全局行为。
|
🎉 Copied!
|
|
[Ref. QA-5826]
WARNING
This translation need to be updated. WARNING
打断循环 [break]
你可以使用 break 关键字跟在循环中的某个行为后面打断循环.
|
🎉 Copied!
|
|
[参考: QA-6105]
WARNING
This translation need to be updated. WARNING
Goto和标签处理 [label, goto]
⚠ 目前只是实验性的 🚧
你可以使用label 和goto 关键词来表示Goto处理,其中:
label <label_name>goto <label_name>
|
🎉 Copied!
|
|
[Ref.QA-15026,QA-12526and initiallyQA-1626] 。
while循环
可以使用关键字while和end while进行while循环。
|
🎉 Copied!
|
|
还可以在关键字
endwhile后添加标注,还有一种方式是使用关键字is。
|
🎉 Copied!
|
|
如果你使用
+detach+ 来形成一个无限循环, 那么你可能需要使用 +-[hidden]->+ 来隐藏一些不完整的箭头。
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
并行处理 [fork, fork again, end fork, end merge]
你可以使用fork,fork again和end fork 或者 end merge 等关键字表示并行处理。
fork 示例
|
🎉 Copied!
|
|
fork 和合并示例
|
🎉 Copied!
|
|
[参考: QA-5320]
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[参考: QA-13731]
end fork 标注 (或 UML 连接规范):
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[参考: QA-5346]
其他示例
|
🎉 Copied!
|
|
分割处理
分割
你可以使用split, split again 和 end split 关键字去表达分割处理
|
🎉 Copied!
|
|
输入分割 (多个入口)
你可以使用包含hidden 指令的箭头去制造一个输入分割 (多入口):
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[参考: QA-8662]
输出分割 (多个结束点)
你可以使用kill 或 detach 去制造一个输出分割 (多个结束点):
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
注释
文本格式可以使用克里奥尔维基语法。
可以使用floating 关键字浮动注释。
|
🎉 Copied!
|
|
您可以为后向活动添加注释:
|
🎉 Copied!
|
|
[Ref.QA-11788] 可以添加分区活动注释:
|
🎉 Copied!
|
|
[参考QA-2398]
WARNING
This translation need to be updated. WARNING
改变颜色
你可以为一些活动指定颜色
|
🎉 Copied!
|
|
你通用可以使用 渐变色.
|
🎉 Copied!
|
|
[参考: QA-4906]
WARNING
This translation need to be updated. WARNING
无箭头连接线
您可以使用 skinparam ArrowHeadColor none 参数来表示仅使用线条连接活动,而不带箭头。
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
箭头
使用->标记,你可以给箭头添加文字或者修改箭头颜色。
同时,你也可以选择点状 (dotted),条状(dashed),加粗或者是隐式箭头
|
🎉 Copied!
|
|
Simple colored arrow [link]
You can use simple colored arrow with the link keyword.
|
🎉 Copied!
|
|
Multiple colored arrow
You can use multiple colored arrow.
|
🎉 Copied!
|
|
[Ref. QA-4411]
连接器(Connector)
你可以使用括号定义连接器。
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
连接器颜色
你可以在连接器上增加 颜色
|
🎉 Copied!
|
|
[参考. QA-10077] [Ref. QA-19975]
WARNING
This translation need to be updated. WARNING
组合(grouping)
通过定义分组(group),你可以把多个活动分组。
|
🎉 Copied!
|
|
分区
通过定义分区(partition),你可以把多个活动组合(group)在一起:
|
🎉 Copied!
|
|
这里同样可以改变分区颜色 color:
|
🎉 Copied!
|
|
[参考: QA-2793] 同样可以添加一个 链接 到分区:
|
🎉 Copied!
|
|
[参考: QA-542]
分组, 分区, 包, 矩形 或 卡片式
你可以分组活动通过定义:- group;
- partition;
- package;
- rectangle;
- card.
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
泳道(Swimlanes)
你可以使用管道符|来定义泳道。
还可以改变泳道的颜色。
|
🎉 Copied!
|
|
你可以在泳道中增加
if 判断或 repeat 或 while 循环.
|
🎉 Copied!
|
|
你同样可以在泳道中增加别名,使用
alias 语法:
|[#<color>|]<swimlane_alias>| <swimlane_title>
|
🎉 Copied!
|
|
[参考: QA-2681]
WARNING
This translation need to be updated. WARNING
分离(detach)
可以使用关键字detach 或 kill移除箭头。
detach
|
🎉 Copied!
|
|
kill
|
🎉 Copied!
|
|
Emoji as action (with icon stereotype)
You can use emoji as action, with the stereotype <<icon>>:
|
🎉 Copied!
|
|
[Ref. GH-2436]
SDL(规范和描述语言)
SDL 形状名称表
| 名称 | 旧语法 | 定型语法 |
| 输入 |
<
|
<<input>>
|
| 输出 |
>
|
<<output>>
|
| 程序 |
|
|
<<procedure>>
|
| 加载 |
\
|
<<load>>
|
| 保存 |
/
|
<<save>>
|
| 连续 |
}
|
<<continuous>>
|
| 任务 |
]
|
<<task>>
|
SDL using final separator (Deprecated form)
通过更改最终; separator,可以为活动设置不同的渲染:
|<>/\\]}
|
🎉 Copied!
|
|
使用正态分隔符和立体原型的 SDL(当前正式形式)
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
WARNING
This translation need to be updated. WARNING
UML (Unified Modeling Language) Shape (with UML stereotype)
Table of UML Shape Name
| Name | Stereotype syntax |
| ObjectNode |
<<object>>
|
|
ObjectNode typed by signal |
<<objectSignal>> or <<object-signal>>
|
|
AcceptEventAction without TimeEvent trigger |
<<acceptEvent>> or <<accept-event>>
|
|
AcceptEventAction with TimeEvent trigger |
<<timeEvent>> or <<time-event>>
|
|
SendSignalAction SendObjectAction with signal type |
<<sendSignal>> or <<send-signal>>
|
| Trigger |
<<trigger>>
|
UML Shape Example using Stereotype
|
🎉 Copied!
|
|
[Ref. GH-2185, QA-16558, GH-1659]
一个完整的例子
|
🎉 Copied!
|
|
判断的样式
inside 样式 (默认)
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
Diamond 样式
|
🎉 Copied!
|
|
InsideDiamond (或 Foo1) 样式
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[参考: QA-1290 and #400]
判断的结束样式
Diamond 样式 (默认)
- With one branch
|
🎉 Copied!
|
|
- 两个分支 (
B1,B2)
|
🎉 Copied!
|
|
水平线 (hline) 样式
- 一个分
|
🎉 Copied!
|
|
- 两个分支 (
B1,B2)
|
🎉 Copied!
|
|
[Ref. QA-4015]
使用 sytle 定义 (全局) 样式
无样式 (默认)
|
🎉 Copied!
|
|
有样式
你可以使用 style 节点去定义样式然后改变渲染。
|
🎉 Copied!
|
|
Creole on Activity
You can use Creole or HTML Creole on Activity diagram:
|
🎉 Copied!
|
|