🧩
New! Render PlantUML diagrams directly inside GitHub with our official browser extension — No server. No tokens. No tracking. Zero permissions but clipboard. — Try it out and let us know what you think!

活动图

活动图描述工作流或流程:各个步骤、它们的顺序,以及分支和并行路径。它适合用于业务流程、算法,以及任何从起点流向终点的过程。

在 PlantUML 中,每个活动写成一行,使用箭头和 ifrepeatfork 等关键字来表达控制流。图形会自动生成。

如果您在维护旧图,旧版语法仍受支持,但不再推荐用于新图。

所有图类型通用的功能,请参阅通用命令

简单的行动

活动标签以: 开始,以; 结束。

文本格式可以使用克里奥尔语的维基语法

它们的定义顺序是隐性链接的。

Other simple action (defined as a list)

Simple action list separated by -

Simple action list separated by *

With one level

With several levels

[Ref. GH-2376]

开始/停止/结束

你可以使用startstop 关键字来表示一个图的开始和结束 。

你也可以使用end 关键字。

条件

你可以使用if,then, breakelse 关键词来在你的图表中放入测试。 标签可以用圆括号提供。

有3种语法可供选择。

[Ref.QA-301]

几个测试(水平模式)

你可以使用elseif 关键字来拥有几个测试(默认是水平模式)

几个测试(垂直模式)

你可以使用!pragma useVerticalIf on 命令,让测试处于垂直模式。

你可以使用-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, caseendswitch 关键词在图表中绘制Switch判断.

使用括号表示标注.

条件判断和终止 [kill, detach]

你可以在if判断中终止一个行为.

但如果你想在特定行为上停止,你可以使用killdetach关键字:

[参考. QA-265]

WARNING
 This translation need to be updated. 
WARNING

重复循环

你可以使用关键字repeatrepeatwhile进行重复循环。

你同样可以使用一个全局行为作为repeat目标, 在返回循环开始时使用backward关键字插入一个全局行为。

[Ref. QA-5826]

WARNING
 This translation need to be updated. 
WARNING

打断循环 [break]

你可以使用 break 关键字跟在循环中的某个行为后面打断循环.

[参考: QA-6105]

WARNING
 This translation need to be updated. 
WARNING

Goto和标签处理 [label, goto]

⚠ 目前只是实验性的 🚧

你可以使用labelgoto 关键词来表示Goto处理,其中:

[Ref.QA-15026,QA-12526and initiallyQA-1626] 。

while循环

可以使用关键字whileend while进行while循环。

还可以在关键字endwhile后添加标注,还有一种方式是使用关键字is

如果你使用 +detach+ 来形成一个无限循环, 那么你可能需要使用 +-[hidden]->+ 来隐藏一些不完整的箭头。

WARNING
 This translation need to be updated. 
WARNING

并行处理 [fork, fork again, end fork, end merge]

你可以使用forkfork againend fork 或者 end merge 等关键字表示并行处理。

fork 示例

fork 和合并示例

[参考: QA-5320]

[参考: QA-13731]

end fork 标注 (或 UML 连接规范):

[参考: QA-5346]

其他示例

分割处理

分割

你可以使用 split, split againend split 关键字去表达分割处理

输入分割 (多个入口)

你可以使用包含 hidden 指令的箭头去制造一个输入分割 (多入口):

[参考: QA-8662]

输出分割 (多个结束点)

你可以使用 killdetach 去制造一个输出分割 (多个结束点):

注释

文本格式可以使用克里奥尔维基语法

可以使用floating 关键字浮动注释。

您可以为后向活动添加注释:

[Ref.QA-11788]

可以添加分区活动注释:
[参考QA-2398]

WARNING
 This translation need to be updated. 
WARNING

改变颜色

你可以为一些活动指定颜色

你通用可以使用 渐变色.
[参考: QA-4906]

WARNING
 This translation need to be updated. 
WARNING

无箭头连接线

您可以使用 skinparam ArrowHeadColor none 参数来表示仅使用线条连接活动,而不带箭头。

箭头

使用->标记,你可以给箭头添加文字或者修改箭头颜色

同时,你也可以选择点状 (dotted),条状(dashed),加粗或者是隐式箭头

Simple colored arrow [link]

You can use simple colored arrow with the link keyword.

Multiple colored arrow

You can use multiple colored arrow.

[Ref. QA-4411]

连接器(Connector)

你可以使用括号定义连接器。

WARNING
 This translation need to be updated. 
WARNING

连接器颜色

你可以在连接器上增加 颜色

[参考. QA-10077]

[Ref. QA-19975]
WARNING
 This translation need to be updated. 
WARNING

组合(grouping)

通过定义分组(group),你可以把多个活动分组。

分区

通过定义分区(partition),你可以把多个活动组合(group)在一起:

这里同样可以改变分区颜色 color:

[参考: QA-2793]

同样可以添加一个 链接 到分区:
[参考: QA-542]

分组, 分区, 包, 矩形 或 卡片式

你可以分组活动通过定义:

WARNING
 This translation need to be updated. 
WARNING

泳道(Swimlanes)

你可以使用管道符|来定义泳道。

还可以改变泳道的颜色

你可以在泳道中增加 if 判断或 repeatwhile 循环.

你同样可以在泳道中增加别名,使用 alias 语法:

[参考: QA-2681]

WARNING
 This translation need to be updated. 
WARNING

分离(detach)

可以使用关键字detachkill移除箭头。

Emoji as action (with icon stereotype)

You can use emoji as action, with the stereotype <<icon>>:

[Ref. GH-2436]

SDL(规范和描述语言)

SDL 形状名称表

名称 旧语法 定型语法
输入 < <<input>>
输出 > <<output>>
程序 | <<procedure>>
加载 \ <<load>>
保存 / <<save>>
连续 } <<continuous>>
任务 ] <<task>>

[Ref.QA-11518,GH-1270]

SDL using final separator (Deprecated form)

通过更改最终; separator,可以为活动设置不同的渲染:

使用正态分隔符和立体原型的 SDL(当前正式形式)

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>>

[Ref. GH-2185]

UML Shape Example using Stereotype

[Ref. GH-2185, QA-16558, GH-1659]

一个完整的例子

判断的样式

inside 样式 (默认)

Diamond 样式

InsideDiamond (或 Foo1) 样式

[参考: QA-1290 and #400]

判断的结束样式

Diamond 样式 (默认)

水平线 (hline) 样式

[Ref. QA-4015]

使用 sytle 定义 (全局) 样式

无样式 (默认)

有样式

你可以使用 style 节点去定义样式然后改变渲染。

Creole on Activity

You can use Creole or HTML Creole on Activity diagram: