使用PlantUml绘制时序图2
20. 引用
你可以在图中通过使用 ref over
关键词来实现引用
@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
21. 延迟
你可以使用 ...
来表示延迟,并且还可以给延迟添加注释。
@startuml
Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes latter...
Bob --> Alice: Bye !
@enduml
22. 空间
你可以使用 |||
来增加空间。
还可以使用数字指定增加的像素的数量。
@startuml
Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok
@enduml
23. 生命线的激活与撤销
关键字 activate
和 deactivate
用来表示参与者的生命活动。
一旦参与者被激活,它的生命线就会显示出来。activate
和 deactivate
作用于其上一个的消息。destroy
表示一个参与者的生命线的终结。
@startuml
participant User
User -> A: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: RequestCreated
deactivate B
A -> User: Done
deactivate A
@enduml
24. 嵌套的生命线
可以使用嵌套的生命线,并且允许给生命线添加颜色。
@startuml
participant User
User -> A: DoWork
activate A #FFBBBB
A -> A: Internal call
activate A #DarkSalmon
A -> B: << createRequest >>
activate B
B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A
@enduml
25. 返回
return
命令为了生成返回的消息,返回的点就是最近激活的生命线。
@startuml
Bob -> Alice : hello
activate Alice
Alice -> Alice : some action
return bye
@endum
26. 创建参与者
你可以把关键字 create
放在第一次接收到消息之前,以强调本次消息实际上是在创建新的对象。
@startuml
Bob -> Alice : hello
create Other
Alice -> Other : new
create control String
Alice -> String
note right : You can also put notes!
Alice --> Bob : ok
@enduml
27. 进入和发出消息1
如果只想关注部分图示,你可以使用进入和发出箭头。
使用方括号 [
与 ]
分别表示图示的左、右两侧。
@startuml
[-> A: DoWork
activate A
A -> A: Internal call
activate A
A ->] : << createRequest >>
A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate A
@enduml
28. 进入和发出消息2
还可以使用下面的语法:
@startuml
[-> Bob:a
[o-> Bob:b
[o->o Bob
[x-> Bob
[<- Bob
[x<- Bob
Bob ->]
Bob ->o]
Bob o->o]
Bob ->x]
Bob <-]
Bob x<-]
@enduml
29. 构造类型和圈点
可以使用 <<
和 >>
给参与者添加构造类型。
在构造类型中,你可以使用 (X,color)
格式的语法添加一个圆圈圈起来的字符。
@startuml
participant "Famous Bob" as Bob << Generated >>
participant Alice << (I,#ADD1B2) Testable >>
Bob->Alice: First message
@enduml
30. 更多标题信息1
你可以在标题中使用 creole
格式。
在标题描述中使用 \n
表示换行。
@startuml
title __Simple__ **communication** example\non several lines
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
31. 更多标题信息2
还可以使用关键字 title
和 end title
定义多行标题。
@startuml
title
<u>Simple</u> communication example
on <i>several</i> lines and using <font color=red>html</font>
This is hosted by <img:img.png>
end title
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
32. 包裹参与者
可以使用 box
和 end box
画一个盒子将参与者包裹起来。
还可以在 box
关键字之后添加标题或者背景颜色
@startuml
box "Internal Service" #LightBlue
participant Bob
participant Alice
end box
Bob -> Alice : hello
participant Other
Alice -> Other : hello
@enduml
33. 移除脚注
使用 hide footbox
关键字移除脚注。
@startuml
hide footbox
title Footer removed
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml
34. 皮肤参数1
用 skinparam
改变字体和颜色。
可以在如下场景中使用:
• 在图示的定义中,
• 在引入的文件中,
• 在命令行或者 ANT
任务提供的配置文件中。
@startuml
skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 60
skinparam sequenceParticipant underline
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate
A --> User: Done
deactivate A
@enduml
35. 皮肤参数2
皮肤参数综合示例:
@startuml
skinparam backgroundColor #EEEBDC
skinparam handwritten true
skinparam sequence {
ArrowColor DeepSkyBlue
ActorBorderColor DeepSkyBlue
LifeLineBorderColor blue
LifeLineBackgroundColor #A9DCDF
ParticipantBorderColor DeepSkyBlue
ParticipantBackgroundColor DodgerBlue
ParticipantFontName Impact
ParticipantFontSize 17
ParticipantFontColor #A9DCDF
ActorBackgroundColor aqua
ActorFontColor DeepSkyBlue
ActorFontSize 17
ActorFontName Aapex
}
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
36. 间距设置
@startuml
'参与者之间的padding设置
skinparam ParticipantPadding 20
'盒子之间的padding值
skinparam BoxPadding 10
box "Foo1"
participant Alice1
participant Alice2
end box
box "Foo2"
participant Bob1
participant Bob2
end box
Alice1 -> Bob1 : hello
Alice1 -> Out : out
@enduml
37. 时序图支持的样式配置
Sequence {
General:
TitleFontColor
TitleFontName
TitleFontSize
TitleFontStyle
NewpageSeparatorColor
ActorBorderThickness
ArrowThickness
DelayFontColor
DelayFontName
DelayFontSize
DelayFontStyle
DividerBackgroundColor
DividerBorderColor
DividerBorderThickness
DividerFontColor
DividerFontName
DividerFontSize
DividerFontStyle
GroupBackgroundColor
GroupBodyBackgroundColor
GroupBorderColor
GroupBorderThickness
GroupFontColor
GroupFontName
GroupFontSize
GroupFontStyle
GroupHeaderFontColor
GroupHeaderFontName
GroupHeaderFontSize
GroupHeaderFontStyle
LifeLineBackgroundColor
LifeLineBorderColor
LifeLineBorderThickness
MessageAlignment
MessageTextAlignment
Participant
ParticipantBorderThickness
ReferenceAlignment
ReferenceBackgroundColor
ReferenceBorderColor
ReferenceBorderThickness
ReferenceFontColor
ReferenceFontName
ReferenceFontSize
ReferenceFontStyle
ReferenceHeaderBackgroundColor
Misc (not [yet] associated with a keyword or option):
BoxBackgroundColor
BoxBorderColor
BoxFontColor
BoxFontName
BoxFontSize
BoxFontStyle
StereotypeFontColor
StereotypeFontName
StereotypeFontSize
StereotypeFontStyle
}
详细参考:https://plantuml-documentation.readthedocs.io/en/latest/diagrams/sequence.html