plantuml 之序列图(一)

序列图主要包含有参与者及参与者之间的消息通信. 参与者不需要显式声明.

消息流向使用 -> 表示, 此时绘制出实线箭头; --> 则绘制点线箭头.
若要绘制反向消息流向, 可以使用 <-<--.

消息文本跟在第二参与者之后, 用 : 隔开.

图 1-1 代码 (摘自官方文档)

@startuml
Alice -> Bob  : Authentication Request
Bob --> Alice : Authentication Response

Alice -> Bob  : Another authentication Request
Alice <-- Bob : another authentication Response
@enduml

上述代码生成的 UML 图如图 1-1 所示.


图 1-1
图 1-1

参与者

若不显式声明参与者, 那么在生成的 UML
图中的参与者前后关系按其在代码中的出现先后决定.
若要按照自己的意愿决定参与者出现的顺序, 可以使用关键字 participant
声明一个参与者. 由 participant 声明的参与者的图形是一个矩形,
还可以由其它关键字声明一个参与者,
不同的关键字声明的参与绘制时使用的图形是不一样的.

可用的关键字包括:

  • participant
  • actor
  • boundary
  • control
  • entity
  • database
  • collections

参与者别名. 若参与者名称过长, 特别是参与者名字由多个单词组成的情况下,
可以使用关键字 as 给参与者取一个别名, 之后就可以使用别名指代该参与者.

参与者背景色. 在参与者名称之后以 #COLOR 的形式可以设定参与者图标的背景色.

图 1-2 显示的由各个关键字定义的参与者使用的图形. 图 1-3 显示 “as”
关键字的用法及设置图标背景色及设置箭头颜色.


图 1-2
图 1-2


图 1-3
图 1-3

图 1-2 代码

actor       "actor"
participant "participant"
boundary    "boundary"
control     "control"
entity      "entity"
database    "database"
collections "collections"

图 1-3 代码

@startuml

actor Bob

' 若要换行, 字符串可以插入 "\n"
' "\n" 后的字符串也将自动居中
participant "Long long long name!\nTim" as Tim #Red

' as 也可以用在前面位置
participant Alice as "My name!\nAlice" #Green

/'
甚至可以在不显式定义参与者的情况下指定别名
'/
ding -> "yingzi[]" : Hello
ding -> "Long long name" as L : HI
ding -> LL as "Another long long name" : Greet
L --> LL : What???

@enduml

设置箭头颜色

在箭头语法中间以 [#COLOR] 的形式可以设置箭头颜色. 如图 1-4 所示.


图 1-4
图 1-4

图 1-4 代码

@startuml

' 设置箭头颜色
Bob -[#Red]-> Tim   : send a message [虚线箭头]
Tim -[#Green]> Alice: send XXXX [实线箭头]

@enduml

设置箭头风格

  • x. 将其放到箭头符号前或后, UML 中表示丢失消息.
  • 使用 / 代替 > 或 使用 \ 代替 <, 图标箭头只有半个.
  • 使用 //, >>, <<, \\ 将产生细箭头.
  • 使用 -- 代替 - 将产生虚线.
  • 在箭头或箭尾放置 o, 相应位置会绘制 ‘o’.
  • 可以产生双向箭头.

图 1-5 展示了各种箭头风格.


图 1-5
图 1-5

图 1-5 代码

@startuml

' "x"
Bob ->x Alice
Bob x<- Alice

' "o"
Bob ->o Alice
Bob o-> Alice
Bob o->o Alice


' 都可以加 "x", "o"
Bob -\ Alice
Bob -> Alice
Bob /- Alice
Bob -\\ Alice
Bob //- Alice
Bob ->> Alice

/'
双向. 都可以加 "x", "o".
用 "\" 和 "/" 代替 ">" 和 "<" 时无法产生正确的双向箭头.
'/
Bob <-> Alice
Bob <<->> Alice

@enduml

给自己发消息

参与者可以给自己发消息. 如图 1-6 所示.


图 1-6
图 1-6

图 1-6 代码 (摘自官方文档)

@startuml

' 若消息很长, 可以使用 "\n" 换行.
' 消息默认是或对齐.
' 参与者名称则是默认中间对齐.
Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext

@enduml

给消息编号

  • autonumber. 从 1 开始对消息自动编号.
  • autonumber START. 从 START 开始对消息自动编号.
  • autonumber START INCREMENT. 从 START 开始, 按 增量 INCREMENT 对消息自动编号.

图 1-7 展示了上述编号方法.


图 1-7
图 1-7

图 1-7 代码

@startuml

autonumber
Bob -> Alice : Message 1
Bob <- Alice : Message 2

autonumber 15
Bob -> Alice : Message 15
Bob <- Alice : Message 16

autonumber 40 10
Bob -> Alice : Message 40
Bob <- Alice : Message 50

@enduml

猜你喜欢

转载自blog.csdn.net/ding_yingzi/article/details/80317111