ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

时序图,PlantUML 绘制时序图

2022-08-10 15:34:03  阅读:280  来源: 互联网

标签:PlantUML end deactivate app 时序 activate user 绘制


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

案例说明
我们以一个日常生活中常见的操作,在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 

声明参与者

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

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

注释

在代码中使用 ‘注释’ 针对代码进行注释,在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	可选项

颜色

在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

其他

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

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

隐藏孤立的参与者	
hide unlinked

标签:PlantUML,end,deactivate,app,时序,activate,user,绘制
来源: https://www.cnblogs.com/andy0816/p/16572591.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有