美文网首页
PlantUML-时序图-2021-06-18-周五

PlantUML-时序图-2021-06-18-周五

作者: 勇往直前888 | 来源:发表于2021-06-24 19:14 被阅读0次

简单示例

  • ->,<-,<--,--> 这是箭头的意思,很形象;箭头分实线和虚线两种

  • :后面是箭头的描述信息

  • @startuml 开始标志; @enduml 结束标志

  • 默认的参与者是矩形框带文字,只要提供文字就行,可以省略关键字。

@startuml
用户 -> 认证中心: 登录操作
认证中心 -> 缓存: 存放(key=token+ip,value=token)token

用户 <- 认证中心 : 认证成功返回token
用户 -> 认证中心: 下次访问头部携带token认证
认证中心 <- 缓存: key=token+ip获取token
其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务
其他服务 -> 用户: 信息
@enduml
image.png

声明参与者

不同的关键字,有不同的形状;
as 后面的是参与者的别名(仅脚本中使用,图上显示的是正式名字);
• participant(参与者,默认的,可以省略关键字)
• actor(角色)
• boundary(边界)
• control(控制)
• entity(实体)
• database(数据库)
• collections(集合)
• queue(队列)

@startuml
participant participant as Foo
actor       actor       as Foo1
boundary    boundary    as Foo2
control     control     as Foo3
entity      entity      as Foo4
database    database    as Foo5
collections collections as Foo6
queue       queue       as Foo7
Foo -> Foo1 : To actor 
Foo -> Foo2 : To boundary
Foo -> Foo3 : To control
Foo -> Foo4 : To entity
Foo -> Foo5 : To database
Foo -> Foo6 : To collections
Foo -> Foo7 : To queue
@enduml
image.png

在参与者中使用非字母符号

你可以使用双引号定义参与者,还可以用关键字 as 给参与者定义别名。
也就是说,参与者的命名如果含有非字母,需要用双引号包起来。如果名字太长要换行,可以用\n

@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
Long --> "Bob()" : ok
@enduml
image.png

给自己发消息

给自己发消息和给别人发消息是一样的,只是箭头的两端都是同一个就行。

@startuml
Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml
image.png

让响应信息显示在箭头下面

时序图主要用来发送信息,响应信息;向右的一般是发送,向左的一般是响应。发送的文字在箭头上面,响应的信息在箭头下面,表达起来更形象一点。使用 skinparam responseMessageBelowArrow true 命令可以做到这一点。

@startuml
skinparam responseMessageBelowArrow true
Bob -> Alice : hello
Bob <- Alice : ok
@enduml
image.png

修改箭头样式

• 表示一条丢失的消息:末尾加 x
• 让箭头只有上半部分或者下半部分:将 < 和 > 替换成\或者 /
• 细箭头:将箭头标记写两次 (如 >> 或 //)
• 虚线箭头:用 -- 替代 -
• 箭头末尾加圈:->o
• 双向箭头:<->

@startuml
Bob ->x Alice
Bob -> Alice
Bob ->> Alice
Bob -\ Alice
Bob \\- Alice
Bob //-- Alice
Bob ->o Alice
Bob o\\-- Alice
Bob <-> Alice
Bob <->o Alice
@enduml
arrow.png

对消息序列编号

关键字 autonumber 用于自动对消息编号。

@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml
number.png

页面标题, 页眉, 页脚

使用 title 关键词增加标题
使用 header 关键词增加页眉
使用 footer 关键词增加页脚

@startuml
header Page Header
footer Page %page% of %lastpage%
title Example Title
Alice -> Bob : message 1
Alice -> Bob : message 2
@enduml
Example Title.png

组合消息

我们可以通过以下关键词来组合消息:
• alt/else
• opt
• loop
• par
• break
• critical
• group, 后面紧跟着消息内容

@startuml
Alice -> Bob: 认证请求

alt 成功情况

    Alice <- Bob: 认证接受

else 某种失败情况

    Alice <- Bob: 认证失败
    group 我自己的标签
    Alice -> Log : 开始记录攻击日志
        loop 1000次
            Alice -> Bob: DNS 攻击
        end
    Alice -> Log : 结束记录攻击日志
    end

else 另一种失败

   Alice <- Bob: 请重复

end
@enduml
group.png

给消息添加注释

我们可以通过在消息后面添加 note left 或者 note right 关键词来给消息添加注释。
你也可以通过使用 end note 来添加多行注释。

@startuml
Alice -> Bob : hello
note left: this is a first note

Alice <- Bob : ok
note right: this is another note

Bob -> Bob : I am thinking
note left
a note
can also be defined
on several lines
end note
@enduml
note.png

分隔符

你可以通过使用 == 关键词来将你的图表分割成多个逻辑步骤。

@startuml

== 初始化 ==

Alice -> Bob: 认证请求
Alice <-- Bob: 认证响应

== 重复 ==

Alice -> Bob: 认证请求
Alice <-- Bob: 认证响应

@enduml
separator.png

延迟

你可以使用... 来表示延迟,并且还可以给延迟添加注释。

@startuml

Alice -> Bob: 认证请求
...
Alice <-- Bob: 认证响应
...5分钟后...
Alice <-- Bob: 再见!

@enduml
delay.png

空间

你可以使用 ||| 来增加空间。
还可以使用数字指定增加的像素的数量。

@startuml

Alice -> Bob: message 1
Alice <-- Bob: ok
|||
Alice -> Bob: message 2
Alice <-- Bob: ok
||45||
Alice -> Bob: message 3
Alice <-- Bob: ok

@enduml
space.png

生命线的激活与撤销

关键字 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
active.png

返回

新命令 return 可以用于生成一个带有可选文本标签的返回信息。返回的点是导致最近一次激活生命线
的点。语法是简单的返回标签,其中标签(如果提供)可以是传统信息中可以接受的任何字符串。

@startuml
Bob -> Alice : hello
activate Alice
Alice -> Alice : some action
return bye
@enduml
return.png

激活、撤销和创建的快捷语法。

在指定目标参与者后,可以立即使用以下语法:
• ++ 激活目标(可选择在后面加上 #color)
• -- 撤销激活源
• ** 创建目标实例
• !! 摧毁目标实例

@startuml
alice -> bob ++ : hello
bob -> bob ++ : self call
bob -> bib ++  #005500 : hello
bob -> george ** : create
return done
return rc
bob -> george !! : delete
return success
@enduml
quick.png

包裹参与者

可以使用 box 和 end box 画一个盒子将参与者包裹起来。
还可以在 box 关键字之后添加标题或者背景颜色。

@startuml

box "Internal Service" #LightBlue
participant Bob
participant Alice
end box
participant Other

Bob -> Alice : hello
Alice -> Other : hello

@enduml
box.png

相关文章

网友评论

      本文标题:PlantUML-时序图-2021-06-18-周五

      本文链接:https://www.haomeiwen.com/subject/esllyltx.html