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

简单示例

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

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

  • @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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,968评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,682评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,254评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,074评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,964评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,055评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,484评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,170评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,433评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,512评论 2 308
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,296评论 1 325
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,184评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,545评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,150评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,437评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,630评论 2 335

推荐阅读更多精彩内容