时序图

PlantUML 中的时序图完全通过文本定义。您只需描述参与者以及他们之间交换的消息,布局、间距和箭头都会自动生成。

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

基本示例

在 PlantUML 序列图中,-> 序列表示两个参与者之间发送的消息,它是自动识别的,不需要事先声明。

通过使用--> 序列,利用虚线箭头,在您的图中提供独特的可视化。

为了提高可读性而不影响可视化表示,可使用反向箭头,如<-<-- 。但要注意,这是专门针对序列图的,其他图类型的规则有所不同。

声明参与者

如果使用关键字participant 来声明参与者,就可以对该参与者进行更多的控制。

声明的顺序将是(默认的)显示顺序

使用这些其他的关键字来声明参与者,将改变参与者的表示形状

使用as 关键字重命名参与者。

你也可以改变 演员或参与者的背景颜色

您可以使用order 关键字来定制参与者的显示顺序。

WARNING
 This translation need to be updated. 
WARNING

多行定义参与者

你可以对参与者使用多行定义。

[Ref. QA-15232]

在参与者中使用非字母

你可以使用引号来定义参与者。 而且你可以使用as 关键字来给这些参与者一个别名。

给自己发消息

参与者可以给自己发信息,

消息文字可以用\n来换行。

*[Ref. [QA-1361](https://forum.plantuml.net/1361)]*

文本对齐

箭头上的文本对齐可以用skinparam sequenceMessageAlign,后接参数left,rightcenter

你也可以使用directionreverseDirection来根据箭头的方向对齐文本。更多细节可参考skinparam

让响应信息显示在箭头下面

你可以使用skinparam responseMessageBelowArrow true命令,让响应信息显示在箭头下面。

Change Actor style

You can change the actor style from stick man (by default) to:

Stick man (by default)

Awesome man

[Ref. QA-10493]

Hollow man

[Ref. PR#396]

改变箭头样式

您可以通过以下几种方式改变箭头样式:

修改箭头颜色

你可以用以下记号修改箭头的颜色:

对消息序列编号

关键字 autonumber 用于自动对消息编号。

语句 autonumber //start// 用于指定编号的初始值,而 autonumber //start// //increment// 可以同时指定编号的初始值和每次增加的值。

你可以在双引号内指定编号的格式。

格式是由 Java 的DecimalFormat类实现的: (0 表示数字;# 也表示数字,但默认为0)。

你也可以用 HTML 标签来制定格式。

你还可以用语句 autonumber stopautonumber resume //increment// //format// 来表示暂停或继续使用自动编号。

你也可以使用一个2或3位的序列,中间采用一种或几种分隔符,如.,;,,,:。例如:1.1.11.1:1

最后一位数字会自动递增。

要增加第一个数字,请使用:autonumber inc A 。要增加第二位数字,请使用:autonumber inc B

你也可以用autonumber 的值,带有%autonumber% 变量。
[Ref.QA-7119]

页面标题、页眉和页脚

title 关键字用于为页面添加标题。

页面可以使用headerfooter 显示页眉和页脚。

分割示意图

关键字 newpage 用于把一张图分割成多张。

newpage 之后添加文字,作为新的示意图的标题。

这样就能很方便地在 Word 中将长图分几页打印。

WARNING
 This translation need to be updated. 
WARNING

组合消息

我们可以通过以下关键词来组合消息:

可以在标头(header)添加需要显示的文字(对于group关键字,参看下一章节 '次级分组标签')。

关键词 end 用来结束分组。

注意,分组可以嵌套使用。

次级分组标签

对于group而言,在标头处的[]之间可以显示次级文本或标签。

[参看 QA-2503]

Partition across the entire width

You can use partition command to group messages horizontally across the entire width (full-width).

Messages are not grouped horizontally across the entire width (by default)

Grouping messages horizontally across the entire width (with teoz mode)

[Ref. GH-589]

注释信息

可以使用note leftnote right 关键字在信息后面加上注释。

你可以使用end note 关键字有一个多行注释。

其他的注释信息方式

可以使用note left ofnote right ofnote over在节点(participant)的相对位置放置注释。

还可以通过修改背景色来高亮显示注释。

以及使用关键字end note来添加多行注释。

改变备注框的形状 [hnote和rnote]

你可以使用 hnoternote 这两个关键字来修改备注框的形状:

[参见 QA-1765]

在多个参与者添加备注 [across]

你可以之直接在所有参与者之间添加备注,格式是:

[参见 QA-9738]

在同一级对齐多个备注 [/]

使用/可以在同一级对齐多个备注:

[参见 QA-354]

Creole和HTML

可以使用creole格式。

WARNING
 This translation need to be updated. 
WARNING

分隔符

你可以通过使用==关键词来将你的图表分割成多个逻辑步骤。

引用

你可以在图中通过使用ref over关键词来实现引用

延迟

你可以使用...来表示延迟,并且还可以给延迟添加注释。

文本换行

你可以通过手动在文本中添加\n使长文本换行。

或者使用maxMessageSize设置(此方式暂不支持中文换行):

Message text spans beyond the involved participants

You can use sequenceMessageSpan command to allow message text to span beyond the involved participants.

Without sequenceMessageSpan (by default)

With sequenceMessageSpan (on teoz mode)

[Ref. GH-2386]

空间

你可以使用|||来增加空间。

还可以使用数字指定增加的像素的数量。

生命线的激活与撤销

关键字activatedeactivate用来表示参与者的生命活动。

一旦参与者被激活,它的生命线就会显示出来。

activatedeactivate适用于以上情形。

destroy表示一个参与者的生命线的终结。

还可以使用嵌套的生命线,并且运行给生命线添加颜色

也可以使用自动激活关键字(autoactivate),这需要与return关键字配合:

返回

新命令return可以用于生成一个带有可选文本标签的返回信息。返回的点是导致最近一次激活生命线的点。语法是简单的返回标签,其中标签(如果提供)可以是传统信息中可以接受的任何字符串。

创建参与者

你可以把关键字create放在第一次接收到消息之前,以强调本次消息实际上是在创建新的对象。

激活、撤销和创建的快捷语法。

在指定目标参与者后,可以立即使用以下语法:

然后你就可以在一行上同时激活和撤销:

[参见 QA-4834, QA-9573QA-13234]

进入和发出消息

如果只想关注部分图示,你可以使用进入和发出箭头。

使用方括号[]表示图示的左、右两侧。

还可以使用下面的语法:

缩短的进入信息与发出信息箭头

使用?来显示缩短的箭头。

[参见 QA-310]

锚点和持续时间

使用teoz在图表中添加锚点,从而指定持续时间。

You can use the -P command-line option to specify the pragma:

java -jar plantuml.jar -Pteoz=true

[Ref. issue-582]

WARNING
 This translation need to be updated. 
WARNING

构造类型和圈点

可以使用<<>>给参与者添加构造类型。

在构造类型中,你可以使用(X,color)格式的语法添加一个圆圈圈起来的字符。

默认使用 guillemet 字符来显示构造类型。 你可以使用外观参数 guillemet 来修改显示行为。

Position of the stereotypes

It is possible to define stereotypes position (top or bottom) with the command skinparam stereotypePosition.

Top postion (by default)

Bottom postion

[Ref. QA-18650]

更多标题信息

你可以在标题中使用creole格式。

在标题描述中使用\n表示换行。
还可以使用关键字titleend title定义多行标题。

包裹参与者

可以使用boxend box画一个盒子将参与者包裹起来。

还可以在box关键字之后添加标题或者背景颜色。

WARNING
 This translation need to be updated. 
WARNING

移除脚注

使用hide footbox关键字移除脚注。

外观参数(skinparam)

skinparam改变字体和颜色。

可以在如下场景中使用:

你也可以修改其他渲染元素,如以下示例:

WARNING
 This translation need to be updated. 
WARNING

填充区设置

可以设定填充区的参数配置。

*[Ref. [QA-5493](https://forum.plantuml.net/5493/provide-skinparam-between-participants-sequence-diagrams)]*

附录:箭头类型大全

普通箭头

进入信息和发出信息(使用'[', ']')

进入信息(使用'[')

发出信息(使用']')

短进入信息和短发出信息(使用'?')

短进入信息(使用'?')

短发出信息(使用'?')

WARNING
 This translation need to be updated. 
WARNING

特定外观参数

默认情况下

生命线策略

[参见 QA-9016]

在时序图中使用实线生命线:skinparam lifelineStrategy solid

[参见 QA-2794]

style strictuml

为了符合严格UML的标准(线头的形状必须是三角形,而不能是箭头形),你可以使用:
[参见 QA-1047]

[Ref. GH-2266 and GH-2662]
WARNING
 This translation need to be updated. 
WARNING

隐藏孤立参与者

默认情况下会显示所有参与者。

可以使用hide unlinked命令来隐藏未被链接到的参与者。

[Ref. QA-4247]

给分组信息着色

可以给分组信息color[着色]。

[Ref.QA-4750andQA-6410]

Mainframe

[Ref. QA-4019 and Issue#148]

Slanted or odd arrows

You can use the (nn) option (before or after arrow) to make the arrows slanted, where nn is the number of shift pixels.

[Available only after v1.2022.6beta+]

[Ref. QA-14145]

[Ref. QA-6684]

[Ref. QA-1072]

并行信息(使用 teoz)

您可以使用& teoz命令显示并行信息:

(另请参阅Teoz架构)

Style for Solid Lifeline

By default

Solid Lifeline using style

[Ref. GH-2266 and GH-2662]