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 boxbox BANK #lightBlue
participant service
entity 短信
queue   MessageQueue
database Mysqlactivate 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 短信短信 -->userdeactivate 短信deactivate MessageQueueservice ->app:服务选项app -> user :提示选择服务
else 用户不存在
|||service->app:登陆失败deactivate serviceapp-> 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 Controlboundary Boundaryentity Entitycollections Collectionsqueue Queuedatabase Databaseuser->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/end if..else
loop/end 循环
par/end 常态
break/end 中断条件
critical/end 条件
group 分组
opt 可选项

代码示例

@startuml
'https://plantuml.com/sequence-diagramA ->B
alt successB-> Copt 可选逻辑C-->Dendpar 正常场景C-->Dendcritical input==1C-->Eendbreak input <=0E ->Cendgroup 分组说明 [second]loop 100次B->B:自旋endendC -->A|||
else fail
|||B--> Aend@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

PlantUML 绘制时序图相关推荐

  1. 使用 PlantUML 绘制时序图

    目录 一.简介 二.安装 1.1 安装插件到PyCharm 2.2 验证 2.2.1 插件检查是否安装 2.2.2 新建PlantUML文件 一.简介 Github地址:https://github. ...

  2. PlantUML:一款让你爽到起飞的高效代码绘制时序图工具

    背景 对于工作中遇到一些复杂的业务逻辑场景,需要借助图形工具去准确的表达,会更高效的理解和梳理复杂的逻辑,同时在跟领导和同事汇报时也更能清晰.准确.快速的表达想法以及方案.比如梳理源码常用的时序图以及 ...

  3. PlantUML绘制类图

    系列文章目录 PlantUML绘制活动图https://blog.csdn.net/zhangwei_david/article/details/125507374 PlantUML 绘制时序图htt ...

  4. PlantUML绘制活动图

    PlantUML系列文章 PlantUML 绘制时序图https://blog.csdn.net/zhangwei_david/article/details/125451459 PlantUML绘制 ...

  5. Visio绘制时序图

    为什么要绘制时序图? 我们编码的时候,知道有的用例的业务逻辑按照比较确定的时间先后顺序进行展开.这时候,我们就需要知道我们设计的系统中的不同类之间传递消息(可以认为是不同对象函数间的调用)要按照怎么样 ...

  6. 程序员进阶神器,ProcessOn绘制时序图

    目录 一.什么是时序图? 二.时序图的组成元素 1.角色(Actor) 2.对象(Object) 3.生命线(LifeLine) 4.激活期(Activation) 5.消息(Message) 三.时 ...

  7. UML图绘制-----时序图的画法

    UML图绘制-----时序图的画法 1.什么是时序图 时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序 主要用来更直观的表现各个对象交互的时间顺序,将体现的重点放在 以时间为参照,各个 ...

  8. 【原创】Visio软件绘图功能极佳----记我的第一次Visio软件绘制时序图

    在Verilog语语言描述前,我推荐的做法是:绘制 模块框图+模块连接图+整体时序图: 绘制模块方框图的好处是:审题之后有了思路,将整体划分为几组模块,各组模块各司其职: 绘制模块连接图的好处是:可以 ...

  9. rational rose 绘制时序图

    rational rose 绘制时序图 动态图概念 : 从静态图中抽取瞬间值的变化描述系统随时间变化的行为, 动态图包括交互图活动图状态图, 这篇博客研究交互图 包括时序图和协作图; -- 时序图 : ...

最新文章

  1. 替换证件照背景颜色仅需十行Python代码
  2. Java高级规范之二
  3. 十年Java编程开发生涯,java计算时间差毫秒
  4. ASP.NET基础教程-DataGrid表格控件-模板列的使用
  5. 现代密码学8.1--密码学所涉及的数论和群论
  6. 装linux系统时键盘用不了怎么办_图吧垃圾佬的LINUX体验
  7. SQL之rand,round,floor,ceiling,cast小数处理函数
  8. flash动画制作成品_Flash如何制作沿曲线移动的箭头动画
  9. 【语音去噪】基于matlab GUI FIR窗函数音频去噪【含Matlab源码 875期】
  10. Spring MVC 全局异常处理(1) --HandlerExceptionResolver
  11. Ubuntu Linux镜像下载
  12. 免费服装收银系统哪个好?
  13. SQL Server分布式事务配置(MSDTC)(远程数据库更新)
  14. 基于Python和OpenCV的图像目标检测及分割
  15. 测试工程师, 入职以后如何开展工作?
  16. 利用nslookup命令查看MX记录、A记录、CNAME记录和NS记录
  17. 信息系统项目管理师----成本类计算
  18. 一款支持屏幕录制、镜像投屏的软件:Record It Pro中文版
  19. c 语言实现多线程排序,在c中使用多线程快速排序
  20. Board (染色思想)

热门文章

  1. 什么工具可以分析php源代码,PHP_一个可以找出源代码中所有中文的工具,一个可以找出源代码中所有中 - phpStudy...
  2. 伯努利、辛钦大数定律、中心极限定理
  3. OFFICE 2007 序列号 算号器
  4. java遍历文件夹的两种方式(递归和非递归)
  5. Springer Latex 引用参考文献在overleaf上显示问号[?]
  6. 惊动 这些年为什么越来越多的人叫它二手东?自身监管不严?
  7. onShareAppMessage小程序分享功能
  8. 经典红白机游戏音乐。
  9. 各种SSD SMART 信息 转
  10. Python实现数据加密-解密