PlantUML 绘制时序图

 PlantUML系列文章 

PlantUML绘制活动图https://blog.csdn.net/zhangwei_david/article/details/125507374PlantUML绘制类图https://blog.csdn.net/zhangwei_david/article/details/125477021


目录

什么是时序图

 案例说明

Idea安装PlantUML插件

PlantUML语法

声明参与者

注释

组合消息

颜色

其他


什么是时序图

        时序图有时候也被称为序列图,活动序列图,作为交互图的一种,时序图按照时间顺序从上往下显示每个操作。

 案例说明

   我们以一个日常生活中常见的操作,在ATM上查询银行卡账户余额,首先用户先将银行卡插入读卡器,然后在屏幕上输入密码,如果密码错误则回提示重新输入密码,如果密码正确则会收到一条登陆ATM的提示短信。我们根据这个流程怎么绘制时序图呢?我们就看看下图:

在这幅图中,垂直的虚线叫做参与者的生面线,表示一个对象的存活时间。每个箭头都表示一个调用。我们在了解时序图以后,我们看看如何使用PlantUML 绘制时序图。

Idea安装PlantUML插件

        idea->preferences->plugin;在marketplace中搜索PlanUML Integration, 进行安装;安装后我们就可在idea中新建一个PlantUML 文件,图下图所示

PlantUML语法

     上文中ATM的时序图就是使用PlantUML绘制的,plantUML 文件是以 @startuml 开头, 以 @enduml结尾,如下所示:

@startuml
'https://plantuml.com/sequence-diagram
title 时序图示例
header @author chenxiu
footer page  @author chenxiu
skinparam roundcorner 20
skinparam sequenceParticipant underline
skinparam LifeLineBackgroundColor #lightYellow
hide footbox
actor User as user #green
box ATM
control 屏幕 as app #lightBlue
participant 读卡器 as reader #yellow
end box

box BANK #lightBlue
participant service
entity 短信
queue   MessageQueue
database Mysql

activate user
user->reader #lightBlue:插如银行卡
activate reader
reader-> reader:读卡
activate reader
deactivate reader
reader->app:显示屏幕
deactivate reader
activate app
app ->user:提示输入密码
deactivate app
user->app:输入密码
activate app
app-> service:查询用户
activate service
service->Mysql:查询用户
activate Mysql
Mysql ->service:resultSet
deactivate Mysql
alt 用户存在
   service ->> MessageQueue:发送登陆ATM消息
activate MessageQueue
note over MessageQueue #red:通过消息队列消峰
   ...30秒...
   MessageQueue ->短信:发送短信
   activate 短信
   短信 -->user
   deactivate 短信
   deactivate MessageQueue
   service ->app:服务选项
   app -> user :提示选择服务
else 用户不存在
|||
   service->app:登陆失败
   deactivate service
   app-> user:重新输入密码
   deactivate app
end

@enduml
 通过上文的DEMO,我们逐步来分析时序图的内容

声明参与者

     在时序图中使用 a -> b绘制两个参与者之间的关系,a,b 都是参与者,不必明确声明.但是如果需要对参与者进行更多的控制就需要声明参与者,在PlantUML 中支持其中参与者

参与者含义
participant 参与者
actor角色
boundary边界
control控制
entity实体
database数据库
collections集合
queue队列

各个参与者的效果如下图所示:

可以使用 as 关键字给参与者取别名,也可以针对参与者使用多行定义,具体代码示例如下:

@startuml
'https://plantuml.com/sequence-diagram

'使用 as 关键字对参与者Actor取别名 user,在后续的代码中可以直接使用别名'
actor Actor as user
participant Participant
participant 多行参与者  [
    =标题
    ----
    副标题
]

control Control

boundary Boundary

entity Entity

collections Collections

queue Queue

database Database

user->Participant
user->多行参与者
user->Control
user->Boundary
user->Entity
user -> Collections
user->Queue
user->Database

@enduml

注释

  在代码中使用 ‘注释’ 针对代码进行注释,在UML中使用如下语句添加注释

note right: this is another note
note left: this is another note
note over Alice: This is displayed over Alice.

组合消息

     可以通过以下关键字来组合消息

关键字 含义
alt/else/endif..else
loop/end循环
par/end常态
break/end中断条件
critical/end条件
group分组
opt可选项

代码示例 

@startuml
'https://plantuml.com/sequence-diagram

A ->B
alt success
   B-> C
   opt 可选逻辑
    C-->D
   end
   par 正常场景
    C-->D
   end
   critical input==1
    C-->E
   end
   break input <=0
   E ->C
   end

   group 分组说明 [second]
    loop 100次
     B->B:自旋
    end
   end
   C -->A
   |||
else fail
|||
  B--> A

end

@enduml

 

颜色

在PlantUML 中很多元素都是可以修改颜色的,下面我们分别来看看修改颜色

说明语法示例
修改参与者颜色participant Participant  #blue 
改变箭头颜色user -[#blue]> Participant
改变消息颜色
user -> participant:<font color=red> requestg
改变生面线颜色
控制器 ->alice #lightyellow:认证失败
修改注释颜色
note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice.
修改背景颜色
skinparam backgroundColor #EEEBDCm

锚点和持续时间

可以在时序图中添加锚点,进而指定持续时间

@startuml
!pragma teoz true

{start} Alice -> Bob : start doing things during duration
Bob -> Max : something
Max -> Bob : something else
{end} Bob -> Alice : finish

{start} <-> {end} : some time
@enduml

其他

说明语法备注
标题title 时序图示例
页头header 我是页头
页脚footer page 1/2
开启自动序号autonumber
隐藏脚注hide footbox
 延迟... 五分钟后 ...
分页newpage
分割== 分割 ==
激活生命线activate
撤销生命线deactivate
终结生命线destory
自动激活生命线autoactivate  on /return 
创建对象create
包裹参与者box/end box

可以使用box, end box

将多个声明参与者包围在一起

隐藏孤立的参与者
hide unlinked

参考资料:

顺序图的语法和功能PlantUML序列图的语法:你可以有几种类型的参与者(演员和其他人),箭头,音符,组...改变字体和颜色也有可能。https://plantuml.com/zh/sequence-diagram

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈脩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值