画图工具之PlantUML插件使用

文章目录

  • 1 PlantUML插件
    • 1.1 引言
    • 1.2 什么是PlantUML
    • 1.3 PlantUML插件
      • 1.3.1 IntelliJ IDEA中插件
      • 1.3.2 VS Code中插件
      • 1.3.3 使用例子
    • 1.4 PlantUML时序图语法
      • 1.4.1 声明参与者
      • 1.4.2 消息传递
        • 1.4.2.1 同步消息
        • 1.4.2.2 异步消息
        • 1.4.2.3 返回消息
        • 1.4.2.4 自调用
      • 1.4.3 生命线(Lifeline)与激活条(Activation Bar)
        • 1.4.3.1 生命线的激活与撤销
        • 1.4.3.2 生命线的嵌套与颜色
        • 1.4.3.3 自动激活
        • 1.4.3.4 自动去激活
      • 1.4.4 分组和替代
      • 1.4.5 注释
      • 1.4.6 颜色
        • 1.4.6.1 直接指定颜色
        • 1.4.6.2 使用 skinparam 设置颜色
    • 1.5 完整实例

1 PlantUML插件

1.1 引言

最近在做系统设计的时候,发现要画不少时序图,以前用的最顺手的工具是 draw.io,后来也尝试了语雀自带的画图工具,感觉画画简单的图还行,但是复杂一点的,就比较吃力了。
在这里插入图片描述

1.2 什么是PlantUML

PlantUML 是一个多功能组件,可快速、直接地创建图表。用户可以使用简单直观的语言起草各种图表。
官方文档:https://plantuml.com/zh/
PlantUML 是一个开源工具,它允许我们用简单的文本描述来创建UML图,包括序列图、用例图、类图、对象图、活动图、组件图、部署图、状态图,以及时序图
在这里插入图片描述

除了UML图之外,PlantUML 还支持一系列其他图表,例如 JSON数据、YAML数据、EBNF图表、架构图等等。PlantUML的一大优势,是图表完全用文本代码描述,这就意味着它可以作为文档嵌入到源代码中,也非常方便版本控制和多人协作,不管是迭代设计、文档编写、系统建模,PlantUML都能胜任。

1.3 PlantUML插件

为了便捷地使用 PlantUML,许多流行的IDE和代码编辑器提供了集成PlantUML的插件,如Visual Studio CodeIntelliJ IDEAEclipse 等。插件提供了实时预览、语法高亮和图表导出等功能,能帮助我们更快捷,更高效地画图,整体上IDEA的插件用起来体验最好。

1.3.1 IntelliJ IDEA中插件

IntelliJ IDEA:比如 PlantUML integration 可以让我们直接在 IDE 中查看和编辑 PlantUML 图表
在这里插入图片描述
插件使用效果
在这里插入图片描述

1.3.2 VS Code中插件

VS Code:https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml
在这里插入图片描述

插件使用效果:
在这里插入图片描述

1.3.3 使用例子

我们先来看个最简单的例子,通过 -> 、-->: 就可以在参与者之间传递消息,不用明确声明参与者。

@startuml
老张 -> 老王 : 老王,你好啊
老王--> 老张: 老张,你好啊老张 -> 老王: 最近有空一起喝茶
老张 <-- 老王: OK
@enduml

在这里插入图片描述

1.4 PlantUML时序图语法

接下来,我们看看 PlantUML 时序图的一些具体语法。

1.4.1 声明参与者

我们使用关键字 participant 来声明参与者,就可以对该参与者进行更多的控制。声明的顺序就是默认的显示顺序。我们也可以用这些关键字来声明参与者,给参与者设置不同的形状。

  • actor(角色)
  • boundary(边界)
  • control(控制)
  • entity(实体)
  • database(数据库)
  • collections(集合)
  • queue(队列)

我们还可以通过 as关键字重命名参与者。

@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
@enduml

在这里插入图片描述

默认的颜色比较单调,也可以通过#来设置参与者的颜色:

@startuml
actor Bob #blue
' The only difference between actor
'and participant is the drawing
participant Alice #SkyBlue
participant "I have a really\nlong name" as L #00ff00Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml

在这里插入图片描述

1.4.2 消息传递

在不同参与者之间,通过箭头+: 来表示消息传递。

1.4.2.1 同步消息

同步消息:A -> B: 同步消息文本
在这里插入图片描述

1.4.2.2 异步消息

异步消息:由发送者A指向接收者B,表示A发送后不需要等待B立即处理。
A ->> B: 异步消息文本
在这里插入图片描述

1.4.2.3 返回消息

返回消息:通常从接收者返回到发送者,标识一个回应。
A <-- B: 返回消息文本
在这里插入图片描述

1.4.2.4 自调用

自调用:一个参与者直接发送消息给自己,表示自我处理或运算。
A ->A: 自调用
在这里插入图片描述

1.4.3 生命线(Lifeline)与激活条(Activation Bar)

在时序图中,生命线:表示对象在一段时间内的活动状态,也就是从参与者往下延伸的那条虚线。
激活条:表示参与者或对象在处理某个任务期间的活动状态,是生命线的一部分,矩形条形式出现。

1.4.3.1 生命线的激活与撤销

生命线的激活与撤销,可以用下面这些关键字来控制生命线的激活与撤销

  • 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

在这里插入图片描述

1.4.3.2 生命线的嵌套与颜色

可以使用嵌套激活条来表示内部调用,并可以给生命线添加颜色

@startuml
participant User
User -> A: DoWork
activate A #FFBBBB
A -> A: Internal call
activate A #DarkSalmon
A -> B: << createRequest >>
activate B
B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A
@enduml

在这里插入图片描述

1.4.3.3 自动激活

在发送消息时自动显示激活条。

A->B++: 激活B并发送消息

在这里插入图片描述

1.4.3.4 自动去激活

在接收回应时自动隐藏激活条

A->B++: 激活B并发送消息
A <--B--: B去激活并回应消息

在这里插入图片描述

1.4.4 分组和替代

分组:用于逻辑上分组一系列交互

group 分组名
A -> B: 消息
...
end group

在这里插入图片描述

替代(Alt/Else):表示基于条件的替代执行流程

alt 条件1
A -> B: 满足条件1的消息
else 条件2
A -> B: 满足条件2的消息
end

在这里插入图片描述

1.4.5 注释

注释用于添加说明性文本
可以用 note left of,note right of或note over 来控制注释相对节点的位置,还可以通过修改背景色来高亮显示注释

@startuml
participant Alice
participant Bob
note left of Alice #aqua
This is displayed
left of Alice.
end notenote right of Alice: This is displayed right of Alice.note over Alice: This is displayed over Alice.note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice.note over Bob, Alice
This is yet another
example of
a long note.
end note
@enduml

在这里插入图片描述

1.4.6 颜色

Choosing colorsPlantUML 中,我们可以对时序图的各个元素自定义颜色,比如参与者(actors)、对象(objects)、激活条(activation bars)等,来让我们的时序图更加美观。在声明元素时,可以直接指定颜色,格式为#颜色代码。颜色代码可以是不同的形式:

1.4.6.1 直接指定颜色

颜色代码可以是一个十六进制颜色值,也可以是预定义的颜色名称

@startuml
actor 用户  #Green
participant 参与者  #B4A7E5用户-[#red]>参与者:消息
activate 参与者 #Blue@enduml

在这里插入图片描述

1.4.6.2 使用 skinparam 设置颜色

除了直接为特定元素指定颜色外,还可以使用 skinparam 全局设置时序图中的颜色。用这种方式更改元素的默认颜色比较方便

@startuml
skinparam ActorBorderColor #DarkOrange
skinparam ParticipantBackgroundColor #SkyBlueactor 用户
participant 参与者
@enduml

在这里插入图片描述

当使用 skinparam 时,我们可以设置许多不同属性的颜色,如边框颜色(BorderColor)、背景颜色(BackgroundColor)、字体颜色(FontColor)和激活条颜色(SequenceGroupBodyBackgroundColor)。更多语法可以直接查看官方文档:顺序图的语法和功能,目前这些内容,已经足够我们常见的时序图需求了。

1.5 完整实例

我们接下来看一个稍微完整一点的例子,在这个例子中,我们的需求,是要在原本的登录的基础上,引入Google登录。

@startuml
skinparam ParticipantBackgroundColor #DeepSkyBlueactor 用户 as c  #DeepSkyBlue
participant "客户端" as client
participant "服务网关" as ga
participant "用户服务" as user
database "数据库" as DB  #DeepSkyBlue
participant "Google服务" as google  #LightCoralactivate c #DeepSkyBlue
activate client #DeepSkyBluec->client:用户登录group#LightCoral #LightCoral Google登录客户端流程client -> google : 请求Google OAuth登录activate google #DeepSkyBluegoogle-->client:登录urlclient->google:跳转登录页google -> google : 用户登录google --> client : Google登录Tokendeactivate google
end|||client -> ga : 登录请求
note right#LightCoral:新增登录方式,三方登录请求实体
activate ga #DeepSkyBlue
ga ->user:请求转发
activate user #DeepSkyBluealt#DeepSkyBlue 常规登录user -> DB : 查询用户信息activate DB #DeepSkyBlueDB -> user : 用户信息deactivate DBuser->user:登录密码校验|||
else Google登录group#LightCoral #LightCoral Google登录服务端流程user->google:验证tokenactivate google #DeepSkyBluegoogle-->user:用户信息deactivate googleuser->user:存储或更新用户信息end group
enduser-->ga:登录结果
deactivate user
ga -> client : 响应
deactivate ga
alt#DeepSkyBlue 成功client -> c : 登录成功
else 失败client -> c : 登录失败
end
deactivate client
|||
@enduml

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/330488.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

allegro 无法删除Xnet

allegro 无法删除Xnet Orcad中打开Constraint Manager之后&#xff0c;再生成网表&#xff0c;导入PCB后就会出现一堆Xnet网络。无法去除Xnet。 解决办法 在原理图ORCAD中&#xff0c; 1、打开Edit Object properties 2、选择Filter by:Capture 3、点击New Property 4、设置…

自动化测试--利用pytest实现整条业务链路测试

​ 概述 前面一章讲解了单个接口的测试&#xff0c;但是实际项目中&#xff0c;因为权限和登录状态的限制&#xff0c;大部分接口没办法直接访问到&#xff0c;这时候我们想访问到一个系统的接口&#xff0c;就需要模拟用户登录拿到用户的token和所拥有的权限之后再将这些信息…

信号:MSK调制和GMSK调制

目录 一、MSK信号 1. MSK信号的第k个码元 2.MSK信号的频率间隔 3.MSK信号的相位连续性 3.1 相位路径 3.2初始相位ψk 4.MSK信号的产生 原理框图 5.MSK信号的频谱图 二、高斯最小频移键控(GMSK) 1.频率响应 2.GMSK调制产生方式 2.1 高斯滤波器法 2.2 正交调制器法…

Linux x86_64 UEFI 启动

文章目录 前言一、UEFI二、Disk device compatibility2.1 GPT 磁盘分区表2.1.1 简介2.1.2 Linux 2.2 ESP&#xff08;EFI&#xff09; 文件系统2.2.1 简介2.2.2 LinuxLinux Kernel EFI Boot Stub 三、UEFI GPT grub23.1 简介3.2 引导方式 3.3 BOOTX64.EFI3.4 shimx64.efi3.5 …

OpenMV学习笔记1——IDE安装与起步

目录 一、OpenMV IDE下载 二、OpenMV界面 三、Hello World&#xff01; 四、将代码烧录到OpenMV实现脱机运行 五、插SD卡&#xff08;为什么买的时候没送&#xff1f;&#xff09; 一、OpenMV IDE下载 浏览器搜索OpenMV官网&#xff0c;进入后点击“立即下载”&#xff0…

市面上前 11 名的 Android 数据恢复软件

Android数据恢复软件是恢复无意中删除的文件或文件夹的必要工具。该软件还将帮助您恢复丢失或损坏的信息。本文介绍提供数据备份和磁盘克隆选项的程序&#xff0c;这些选项有助于在Android设备上恢复文件的过程。 如果您正在寻找一种有效的方法来恢复图像&#xff0c;文档&…

day16|二叉树的属性

相关题目 ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数 二叉树的深度与高度 如图&#xff0c; 二叉树的深度表示&#xff1a;任意一个叶子节点到根节点的距离&#xff0c;是从上往下计数的&#xff0c;因此使用前序遍历…

2024-5-24 石群电路-15

2024-5-24&#xff0c;星期五&#xff0c;22:15&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。今天最后一天上班&#xff0c;终于要放返校假啦&#xff0c;开心&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;不过放假也不能耽误…

第2天 搭建安全拓展_小迪网络安全笔记

1.常见搭建平台脚本使用: 例如 phpstudy IIS Nginx(俗称中间件): 什么是中间件: 中间件是介于应用系统和系统软件之间的一类软件&#xff0c;它使用系统软件所提供的基础服务&#xff08;功能&#xff09;&#xff0c;衔接网络上应用系统的各个部分或不同的应用&#…

汇编语言(STC89C52)

指令是计算机计算CPU根据人的意图来执行某种操作的命令。一台计算机所执行的全部指令的集合&#xff0c;称为这个CPU的指令系统。而想要使计算机按照人们的要求完成一项工作&#xff0c;就必须让CPU按顺序执行预设的操作&#xff0c;即逐条执行人们编写的指令。这种按照人民要求…

【vue部署】Apache部署vue项目

Apache部署vue项目 Apache 下载安装(windows)1. 下载2. 安装3. 启动服务 vue 部署配置1. 基础配置2. 解决页面刷新问题 Apache 下载安装(windows) 1. 下载 Apache 2.4.59 下载地址&#xff1a;httpd-2.4.59-240404-win64-VS17.zip Visual C Redistributable for Visual Studi…

Python-3.12.0文档解读-内置函数hash()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 详细说明 功能描述 参数 返回值 特性 使用示例 注意事项 记忆策略 常用场景 …

【Centos7+JDK1.8】Jenkins安装手册

一、安装环境 Centos7 JDK1.8 Jenkins-2.346.3 JDK1.8安装以及网络配置等 自行搜索资料解决。 二、卸载历史安装的Jenkins&#xff0c;直接全部复制粘贴下面的命令 service jenkins stop yum -y remove jenkins rpm -e jenkins rpm -ql jenkins rm -rf /etc/sysconfig/je…

掌握代码注释:提升代码可读性的秘密武器

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、为什么我们需要注释&#xff1f; 二、如何添加单行注释&#xff1f; 使用井号 # 添加单…

docker实战之搭建MYSQL8.0主从同步

目录 环境配置容器创建主服务器创建MYSQL容器新增my.cnf文件创建用户并授权 从服务器创建MYSQL容器新增my.cnf文件重启MYSQL容器配置主从同步 验证主从同步彩蛋 MySQL 主从同步&#xff08;Master-Slave Replication&#xff09;是一种常用的解决方案&#xff0c;它允许一个主服…

面试框架【面试准备】

前言 2023-9-12 12:12:04 2023-09-14 16:13:04 公开发布于 2024-5-22 00:16:21 以下内容源自《【面试准备】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://blog.csdn.net/qq_51625007 禁止其他平…

【从零开始实现stm32无刷电机FOC】【理论】【1/6 电机旋转本质】

目录 电机旋转需要什么样的力&#xff1f;怎么产生力矢量&#xff1f;怎么产生任意的线圈磁矢量&#xff1f; 电机旋转需要什么样的力&#xff1f; 电机切向存在受力&#xff0c;电机就会旋转。 进一步查看电机结构&#xff0c;分为转子和定子&#xff0c;大部分情况下&#…

JUnit5标记测试用例

使用场景&#xff1a; 通过Tag对用例分组&#xff1a; 环境分组&#xff1a;测试环境、预发布环境阶段分组&#xff1a;冒烟用例版本分组&#xff1a;V1.1、V1.2 Tag标记用例&#xff1a; 设置标签根据标签执行 结合Maven执行结合测试套件执行 设置标签&#xff1a; 通过T…

U-Mail邮件系统为用户提供更加安全的数据保护机制

据外媒报道&#xff0c;近日美国国家安全委员会泄露了其成员的近1万封电子邮件和密码&#xff0c;暴露了政府组织和大公司在内的2000家公司。其中包括美国国家航空航天局和特斯拉等。报道称该漏洞于3月7日被研究人员发现&#xff0c;通过该漏洞攻击者能够访问对web服务器操作至…

基于SSM的大学生兼职管理系统

基于SSM的大学生兼职管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 企业界面 前台学生界面 管理员界面 摘要 随着大学生兼职市场的日益繁…