PlantUML入门教程:画时序图

news2025/1/18 6:07:03

软件工程中会用到各种UML图,例如用例图、时序图等。那我们能不能像写代码一样去画图呢?
今天推荐一款软件工程师的作图利器--PlantUML,它能让你用写代码的方式快速画出UML图。

一、什么是PlantUML?
PlantUML是一个允许你快速作出UML图的组件:

  • 序列图
  • 用例图
  • 类图
  • 对象图
  • 活动图(这里是传统的语法)。
  • 组件图
  • 部署图
  • 状态图
  • 时序图

也支持以下非UML图表:

  • JSON数据
  • YAML数据
  • Extended Backus-Naur Form (EBNF)图表
  • 网络图(nwdiag)
  • 线框图形界面或UI模拟图(盐)。
  • 架构图
  • 规范和描述语言(SDL)
  • Ditaa图
  • 甘特图
  • 思维导图
  • 工作分解结构图(WBS)
  • 用AsciiMath或JLaTeXMath符号进行数学计算
  • 实体关系图(IE/ER)。

此外:

  • 超链接和工具提示
  • 克里奥尔语:富文本、表情符号、unicode、图标
  • OpenIconic图标
  • Sprite图标
  • AsciiMath数学表达式

关于PlantUML的更多信息,可通过查阅PLantUML官网获取:
https://plantuml.com/zh/


二、如何使用PlantUML?
使用PlantUML画图有多种方式,一种是使用PlantUML在线编辑器,另一种是使用VSCode/PyCharm/IDEA等软件支持的插件来编写。
PlantUML在线编辑器:
http://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000

下面我们演示一个PlantUML画时序图例子:

@startuml
/'boundary  分界; control  控制器; entity  数据对象; database  数据库; collections  集合'/
'为了图标更加简洁,去掉底部重复的对象
hide footbox
autonumber

participant SERVICE
database    DB
participant AGENT

rnote over DB
Database, 数据驱动设计
endnote

SERVICE ->o SERVICE: 服务端处理
SERVICE [#Red]-> DB: 写状态,触发更新事件
note right
Pub/Sub机制
endnote
DB -> AGENT: 发布更新事件

activate AGENT
alt 激活事件
  AGENT --> AGENT: 激活处理
else 去激活事件
  AGENT --> AGENT: 去激活处理
else 升级事件
  AGENT <--> AGENT: 升级处理
end
AGENT [#Blue]-> DB: 写状态,触发更新事件
deactivate AGENT

@enduml


时序图用来标识某个操作的整个流程,通过时序图可以很清晰地知道某个操作的全流程,以及相关的交互方。

如下是上述代码作出的时序图:

更多PlantUML作图演示,可参考:
https://www.cnblogs.com/wangbin2188/p/16128832.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

移动零00

题目链接 移动零 题目描述 注意点 将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序必须在不复制数组的情况下原地对数组进行操作 解答思路 采用双指针的思路&#xff0c;左指针指向已移动零的数组的尾部&#xff0c;右指针指向为移动零的数组的头部&…

深度学习推荐系统(五)DeepCrossing模型及其在Criteo数据集上的应用

深度学习推荐系统(五)Deep&Crossing模型及其在Criteo数据集上的应用 在2016年&#xff0c; 随着微软的Deep Crossing&#xff0c; 谷歌的Wide&Deep以及FNN、PNN等一大批优秀的深度学习模型被提出&#xff0c; 推荐系统全面进入了深度学习时代&#xff0c; 时至今日&am…

Python实现字符串模糊匹配

在一个字符串中&#xff0c;有时需对其中某些内容进行模糊匹配以实现条件的判定&#xff0c;如在“你好&#xff0c;hello,world”中判断是否含有“llo”。Python中通过re.search()方法实现&#xff0c;特别地&#xff0c;对于首位起始的内容匹配&#xff0c;也可通过re.match(…

Apolo学习

安装&#xff08;java1.8 mysql 5.6.5以上&#xff09; 下载quickStart的包&#xff0c;早apollo下执行两个sql。如果不执行这两个sql&#xff0c;apollo是执行不起来的。会有两个表来记录apollo的执行情况。其中一个表叫apolloportaldb 在apollo目录下会有执行的包。.sh是…

stm32f1xx单片机拦截中断源代码

这个是实现后的效果&#xff0c;可以看到已经没有中断的效果了 这个是拦截前的效果可以看到电平是在变化的 实现原理非常简单&#xff1a;一句话搞定&#xff1a; if(TIM2->CNTTIM2->ARR-5)TIM2->CNT-5; 以下是完整的代码&#xff1a;是用来补充说明和筹字数的 /* …

山西电力市场日前价格预测【2023-09-04】

日前价格预测 预测明日&#xff08;2023-09-04&#xff09;山西电力市场全天平均日前电价为305.57元/MWh。其中&#xff0c;最高日前电价为349.83元/MWh&#xff0c;预计出现在19: 15。最低日前电价为226.28元/MWh&#xff0c;预计出现在13: 30。 价差方向预测 1&#xff1a; 实…

Linux CentOS7 系统中添加用户

在linux centOS7系统中&#xff0c;添加用户是管理员的基本操作。作为学习linux系统的基本操作&#xff0c;对添加用户应该多方面了解。 添加用户的命令useradd&#xff0c;跟上用户名&#xff0c;就可以快速创建一个用户。添加一些选项&#xff0c;可以设置更人性化的用户信息…

并发下的Map常见面试题

HashMap 和 HashTable 有什么区别&#xff1f;java中的另一个线程安全的与HashMap极其类似的类是什么&#xff1f;同样是线程安全&#xff0c;它与HashTable在线程同步上有什么不同&#xff1f;HashMap 与 ConcurrentHashMap的区别&#xff1f;为什么 ConcurrentHashMap 比 Has…

【Python技巧】快速安装各种常用库pip、whl、tar.gz最新最全安装方法(超时、快速安装))

【Python技巧】安装各种常用库pip、whl、tar.gz最新最全安装方法 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&…

Linux系统调试中出现核心转储(core dump)的问题

​ 大家好&#xff0c;我是ST。今天主要分享一下&#xff0c;Linux应用程序发生Segmentation fault段错误时&#xff0c;如何利用core dump文件定位错误。 核心转储 在 Linux 系统中&#xff0c;常将“主内存”称为核心(core)&#xff0c;而核心映像(core image) 就是 “进…

Stable Diffuse 之 本地环境部署/安装包下载搭建过程简单记录

Stable Diffuse 之 本地环境部署/安装包下载搭建过程简单记录 目录 Stable Diffuse 之 本地环境部署/安装包下载搭建过程简单记录 一、简单介绍 二、注意事项 三、环境搭建 git 下载和安装 python 下载和安装 stable-diffusion-webui 下载和安装 测试 stable diffuse w…

【数据分享】2006-2021年我国省份级别的燃气相关指标(免费获取\20多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况&#xff0c;在之前的文章中&#xff0c;我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国省份级别的市政设施水平相关指标、2006-2021年我国省份级别的各类建设用地面积数…

使用栈检查括号的合法性 C 实现

使用栈检查括号的合法性 思路讲解&#xff1a;首先从数组数组0下标开始&#xff0c;如果是左括号直接无脑压入栈&#xff0c;直到出现右括号开始判断合法与否。遇到右括号分两种情况&#xff0c;第一种是空栈的情况&#xff0c;也就是说我们第一个字符就是右括号&#xff0c;那…

WPF CommunityToolkit.Mvvm Messenger通讯

文章目录 环境WeakReferenceMessenger方法介绍无回调订阅发送Token区分有回调订阅发送 环境 CommunityToolkit.Mvvm Messenger 十月的寒流: 如何使用 CommunityToolkit.Mvvm 中的 Messenger 来进行 ViewModel 之间的通信 WeakReferenceMessenger 我这里只讲简单的弱Messenger…

Unity 之 Start 与 Awake 的区别

文章目录 在Unity中&#xff0c;Awake和Start都是用于脚本中的生命周期方法&#xff0c;用于控制游戏对象在不同阶段的初始化和行为。它们之间的区别在于调用的时间和用途。 Awake: Awake 是一个在游戏对象被实例化时首先调用的方法。它在对象被加载到场景中但在启用之前调用。…

找到自制电子杂志的方法了,快来看看?

终于找到自制电子杂志的方法了&#xff0c;这真是令人兴奋啊&#xff01;现在&#xff0c;我们可以利用这个方法来创造属于自己的电子杂志&#xff0c;将我们的想法和创意以独特的方式展现给世界。 1.需要一个电子杂志制作工具 市面上有许多专门用于制作电子杂志的工具&#x…

消灭怪物的最大数量【力扣1921】

一、题目分析 需要满足的条件&#xff1a; 只能在每分钟的开始使用武器武器能杀死距离城市最近的怪兽怪兽到达城市就会输掉游戏 游戏最优策略&#xff1a;我们可以在每分钟的开始都使用一次武器&#xff0c;用来杀死距离城市最近的怪兽。这样可以在力所能及的范围内&#xf…

文件及Java中File类详解

目录 一, 文件 1,什么是文件 2,路径 二, File类 1,File类的构造方法 签名 说明 2,File类的方法 修饰符及返回值类型 方法签名 说明 2.1,get方法的使用 2.2,普通文件的创建以及删除 2.3,普通目录文件的创建以及删除 3,代码示例 示例1 示例2 一, 文件 1,什么是文…

聊聊每日站会

这是鼎叔的第七十四篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 欢迎关注本专栏和微信公众号《敏捷测试转型》&#xff0c;星标收藏&#xff0c;大量原创思考文章陆续推出。 每日站会是一线敏捷团队自己的会议&#xff0c;快速同步成员为达成迭代目标所…

对象模型和this指针(个人学习笔记黑马学习)

1、成员变量和成员函数 #include <iostream> using namespace std; #include <string>//成员变量和成员函数分开存储class Person {int m_A;//非静态成员变量 属于类的对象上的static int m_B;//静态成员变量 不属于类的对象上void func() {} //非静态成员函数 不…