分隔序列图
若序列图的各部分有明显的逻辑区分, 可以使用 ====
或更多的个 =
对序列图进行分隔, 分隔中间可以加文本 ==TEXT==
. 效果见图 1-13.
图 1-13
图 1-13 代码
@startuml
== Initialization ==
Alice -> Bob: Message 1
Bob --> Alice: Message 2
====
Alice -> Bob: Message 3
Alice <-- Bob: Message 4
@enduml
引用其它序列图
对一个系统进行分解会形成多个序列图. 在某个序列图中可以引用其它序列图,
使用的关键字如下
ref over
, 后可跟多个参与者, 以逗号分隔end ref
, 若引用时使用了多行文本, 以此来结束引用
效果图如图 1-14 所示.
图 1-14
图 1-14 代码, 引用自官方文档
@startuml
participant Alice
actor Bob
ref over Alice , Bob : init
Alice -> Bob : hello
ref over Bob
This can be on
several lines
end ref
@enduml
延迟消息
使用 ...
来描述延迟消息, 在相应参与者生命线上会产生虚线. 还可以使用
...TEXT...
来为延迟指定文本. 效果图见图 1-15.
图 1-15
图 1-15 代码
@startuml
Alice -> Bob: Message 1
...
Bob --> Alice: Message 2
...5 minutes latter...
Bob --> Alice: Message 3
@enduml
增加消息箭头上下间隔
默认情况下各消息箭线之间的间隔是相等的,
可以使用下面的语法增加消息箭头之间的间隔
|||
, 可以使用更多的|
, 效果见图 1-16.||DIGIT||
, DIGIT 指定了间隔大小, 以象素为单位
图 1-16
图 1-16 代码, 引用自官方文档
@startuml
Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: o
@enduml
生命线激活与销毁
activate
, 激活, 生命线出现deactivate
, 解除, 生命线消失destory
, 销毁, 生命线结束, 并出现 ‘X’
上述关键字仅影响紧前角色的生命线绘制. 另外, 生命线可以嵌套, 且以 #COLOR
语法可以指定生命线的颜色. 效果见图 1-17, 图 1-18.
图 1-17
图 1-18
图 1-17 代码
@startuml
participant User
User -> A: Message 1
activate A
A -> B: Message 2
activate B
B -> C: Message 3
activate C
C --> B: Message 4
destroy C
B --> A: Message 5
deactivate B
A -> User: Message 5
deactivate
@enduml
图 1-18 代码
@startuml
participant User
User -> A: Message 1
activate A #FFBBBB
A -> A: Message 2
activate A #DarkSalmon
A -> B: Message 3
activate B
B --> A: Message 4
deactivate B
deactivate A
A -> User: Message 5
deactivate
@enduml
创建参与者
在第一次接收消息紧前使用下面的语法创建一个参与者, 表示此消息创建了参与者.
create NAME
, 创建的参与者名称为 “NAME”create SHAPE NAME
, 创建的参与者名称为 “NAME”, 使用的图标形状为 “SHAPE”
效果见图 1-19.
图 1-19
图 1-19 代码
@startuml
Bob -> Alice : Message 1
create Other
Alice -> Other : Create
create control String
Alice -> String
note right : A note
Alice --> Bob : Message 2
@enduml