使用PlantUml绘制时序图2

使用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. 生命线的激活与撤销

关键字 activatedeactivate 用来表示参与者的生命活动。
一旦参与者被激活,它的生命线就会显示出来。
activatedeactivate 作用于其上一个的消息。
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

还可以使用关键字 titleend 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. 包裹参与者

可以使用 boxend 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

PlantUml官网
时序图


   转载规则


《使用PlantUml绘制时序图2》 congwiny 采用 知识共享署名 4.0 国际许可协议 进行许可。
评论
 上一篇
使用PlantUml绘制类图1 使用PlantUml绘制类图1
使用PlantUml绘制类图11. 类之间的关系1Class02 继承 Class01 ,箭头朝上。 Class03 和 Class04 的关系是组合,Class04 是组成 Class03 的一部分。 Class05 和 Class06
2020-05-17
下一篇 
使用PlantUml绘制时序图1 使用PlantUml绘制时序图1
使用PlantUml绘制时序图11. 简单示例你可以用 -> 来绘制参与者之间传递的消息,而不必显式地声明参与者。你也可以使用 --> 绘制一个虚线箭头。 另外,你还能用 <- 和 <--,这不影响绘图,但可以提高可
2020-05-11
  目录