时序图
PlantUML 中的时序图完全通过文本定义。您只需描述参与者以及他们之间交换的消息,布局、间距和箭头都会自动生成。- 文本输入,图形输出。 源代码是唯一可信来源,所写即所得。
- 易于编辑。 修改一行文本,而不是拖动方框。
- 快速迭代。 实时预览工具在您输入时即时渲染,便于尽早发现错误。
基本示例
在 PlantUML 序列图中,-> 序列表示两个参与者之间发送的消息,它是自动识别的,不需要事先声明。
通过使用--> 序列,利用虚线箭头,在您的图中提供独特的可视化。
为了提高可读性而不影响可视化表示,可使用反向箭头,如<- 或<-- 。但要注意,这是专门针对序列图的,其他图类型的规则有所不同。
声明参与者
如果使用关键字participant 来声明参与者,就可以对该参与者进行更多的控制。
声明的顺序将是(默认的)显示顺序。
使用这些其他的关键字来声明参与者,将改变参与者的表示形状。
actor(角色)boundary(边界)control(控制)entity(实体)database(数据库)collections(集合)queue(队列)
as 关键字重命名参与者。
你也可以改变
演员或参与者的背景颜色。
order 关键字来定制参与者的显示顺序。
WARNING
This translation need to be updated. WARNING
多行定义参与者
你可以对参与者使用多行定义。
在参与者中使用非字母
你可以使用引号来定义参与者。
而且你可以使用as 关键字来给这些参与者一个别名。
给自己发消息
参与者可以给自己发信息,
消息文字可以用\n来换行。
文本对齐
箭头上的文本对齐可以用skinparam sequenceMessageAlign,后接参数left,right或center。
你也可以使用direction或reverseDirection来根据箭头的方向对齐文本。更多细节可参考skinparam。
让响应信息显示在箭头下面
你可以使用skinparam responseMessageBelowArrow true命令,让响应信息显示在箭头下面。
Change Actor style
You can change the actor style from stick man (by default) to:
- an awesome man with the
skinparam actorStyle awesomecommand; - a hollow man with the
skinparam actorStyle hollowcommand.
Stick man (by default)
Awesome man
Hollow man
改变箭头样式
您可以通过以下几种方式改变箭头样式:
- 添加最后的
x表示丢失的信息 - 使用
\或/而不是<或>只拥有箭头的底部或顶部部分 - 重复箭头头(例如
>>或//)头,拥有一个薄的图纸 - 使用
--而不是-拥有一个点状箭头 - 在箭头头添加最后的 "o"
- 使用双向的箭头
<->
修改箭头颜色
你可以用以下记号修改箭头的颜色:
对消息序列编号
关键字 autonumber 用于自动对消息编号。
autonumber //start// 用于指定编号的初始值,而 autonumber //start// //increment// 可以同时指定编号的初始值和每次增加的值。
DecimalFormat类实现的:
(0 表示数字;# 也表示数字,但默认为0)。
你也可以用 HTML 标签来制定格式。
autonumber stop 和 autonumber resume //increment// //format// 来表示暂停或继续使用自动编号。
.,;,,,:。例如:1.1.1 或1.1:1 。
最后一位数字会自动递增。
要增加第一个数字,请使用:autonumber inc A 。要增加第二位数字,请使用:autonumber inc B 。
autonumber 的值,带有%autonumber% 变量。
页面标题、页眉和页脚
title 关键字用于为页面添加标题。
页面可以使用header 和footer 显示页眉和页脚。
分割示意图
关键字 newpage 用于把一张图分割成多张。
在 newpage 之后添加文字,作为新的示意图的标题。
这样就能很方便地在 Word 中将长图分几页打印。
WARNING
This translation need to be updated. WARNING
组合消息
我们可以通过以下关键词来组合消息:
alt/elseoptloopparbreakcriticalgroup, 后面紧跟着消息内容
group关键字,参看下一章节 '次级分组标签')。
关键词 end 用来结束分组。
注意,分组可以嵌套使用。
次级分组标签
对于group而言,在标头处的[和]之间可以显示次级文本或标签。
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)
注释信息
可以使用note left
或note right 关键字在信息后面加上注释。
你可以使用end note
关键字有一个多行注释。
其他的注释信息方式
可以使用note left of,note right of或note over在节点(participant)的相对位置放置注释。
还可以通过修改背景色来高亮显示注释。
以及使用关键字end note来添加多行注释。
改变备注框的形状 [hnote和rnote]
你可以使用 hnote 和 rnote 这两个关键字来修改备注框的形状:
hnote代表六边形(hexagonal)的备注框;rnote代表正方形(rectangle)的备注框。
在多个参与者添加备注 [across]
你可以之直接在所有参与者之间添加备注,格式是:
note across: 备注描述
在同一级对齐多个备注 [/]
使用/可以在同一级对齐多个备注:
- 没有
/(默认情况下,备注不是对齐的。)
- with
/(the notes are aligned)
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)
空间
你可以使用|||来增加空间。
还可以使用数字指定增加的像素的数量。
生命线的激活与撤销
关键字activate和deactivate用来表示参与者的生命活动。
一旦参与者被激活,它的生命线就会显示出来。
activate和deactivate适用于以上情形。
destroy表示一个参与者的生命线的终结。
return关键字配合:
返回
新命令return可以用于生成一个带有可选文本标签的返回信息。返回的点是导致最近一次激活生命线的点。语法是简单的返回标签,其中标签(如果提供)可以是传统信息中可以接受的任何字符串。
创建参与者
你可以把关键字create放在第一次接收到消息之前,以强调本次消息实际上是在创建新的对象。
激活、撤销和创建的快捷语法。
在指定目标参与者后,可以立即使用以下语法:
++激活目标(可选择在后面加上#color)--撤销激活源**创建目标实例!!摧毁目标实例
进入和发出消息
如果只想关注部分图示,你可以使用进入和发出箭头。
使用方括号[和]表示图示的左、右两侧。
缩短的进入信息与发出信息箭头
使用?来显示缩短的箭头。
锚点和持续时间
使用teoz在图表中添加锚点,从而指定持续时间。
-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 来修改显示行为。
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
更多标题信息
你可以在标题中使用creole格式。
\n表示换行。
title和end title定义多行标题。
包裹参与者
可以使用box和end box画一个盒子将参与者包裹起来。
还可以在box关键字之后添加标题或者背景颜色。
WARNING
This translation need to be updated. WARNING
移除脚注
使用hide footbox关键字移除脚注。
外观参数(skinparam)
用skinparam改变字体和颜色。
可以在如下场景中使用:
你也可以修改其他渲染元素,如以下示例:
WARNING
This translation need to be updated. WARNING
填充区设置
可以设定填充区的参数配置。
附录:箭头类型大全
普通箭头
进入信息和发出信息(使用'[', ']')
进入信息(使用'[')
发出信息(使用']')
短进入信息和短发出信息(使用'?')
短进入信息(使用'?')
短发出信息(使用'?')
WARNING
This translation need to be updated. WARNING
特定外观参数
默认情况下
生命线策略
- nosolid 虚线 (默认情况)
- solid 实线
skinparam lifelineStrategy solid
style strictuml
为了符合严格UML的标准(线头的形状必须是三角形,而不能是箭头形),你可以使用:skinparam style strictuml
WARNING
This translation need to be updated. WARNING
隐藏孤立参与者
默认情况下会显示所有参与者。
hide unlinked命令来隐藏未被链接到的参与者。
给分组信息着色
可以给分组信息color[着色]。
Mainframe
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+]
并行信息(使用 teoz)
您可以使用& teoz命令显示并行信息:
Style for Solid Lifeline
By default
Solid Lifeline using style