PlantUML-UML 绘图工具安装、Graphviz安装、本地使用/在线使用、语法、图示案例

在这里插入图片描述

文章目录

  • 前言
  • 本地安装
    • vscode安装插件
    • 下载安装Graphviz
    • 配置Graphviz环境变量
    • 测试
  • 在线使用演示
  • PlantUML语法总结
    • 活动图(新语法)
    • 时序图
    • 类图
    • 用例图
    • 其他图

更多相关内容可查看

前言

本篇提供两种使用方式分别为

  • 在线使用地址1:https://www.planttext.com/
  • 在线使用地址2
  • vscode使用:需要安装插件以及下载Graphviz并配置环境变量
  • PlantUML官网地址

各取所需即可,想要在线使用的朋友可以直接跳过看在线使用演示及语法部分

本地安装

vscode安装插件

打开vscode快捷键为ctrl+shift+x,查找plantuml、Graphviz插件安装即可

下载安装Graphviz

下载地址:https://graphviz.org/download/

根据自己的电脑选择,我这里选择的64,直接下载即可
在这里插入图片描述

下载完安装包解压为以下目录

在这里插入图片描述

配置Graphviz环境变量

  • 右键点击“此电脑”(或“我的电脑”),选择“属性”。
  • 在弹出的窗口中,点击“高级系统设置”。
  • 在“系统属性”窗口中,点击“环境变量”按钮。
  • 在“环境变量”窗口中,找到“系统变量”部分,选中“Path”变量,然后点击“编辑”按钮。
  • 在“编辑环境变量”窗口中,点击“新建”按钮。
  • 将 Graphviz 的安装目录下的bin文件夹路径添加进去,例如E:\Graphviz\Graphviz-12.0.0-win64\bin

在这里插入图片描述

测试

管理员运行cmd–输入dot -version如下即为成功
在这里插入图片描述

重新打开vscode–预览快捷键 Alt+D
在这里插入图片描述

快捷键ctrl+shift+P:导出图表

在这里插入图片描述

在线使用演示

    startif(graphviz_installed?) then(yes):process all \n diagrams;else(no):process only __sequence__ and __activity__ diagrams;endifstop

在这里插入图片描述

PlantUML语法总结

活动图(新语法)

  • 活动标签以冒号开始,以分号结束,支持 CreoleWiki 语法。活动默认按照定义的顺序进行连接。例如: :helloworld;:this is on defined on several lines;
  • 开始和结束可以使用关键字 startstop(或 end )表示,例如: startstop
  • 条件语句:使用 ifthenelse (或 elseif )设置分支测试,标注文字放在括号中。例如:
    start
    if(graphviz_installed?) then(yes)
    :process all \n diagrams;
    else(no)
    :process only __sequence__ and __activity__ diagrams;
    endif
    stop
    
  • 重复循环:使用 repeatrepeatwhile 。例如:
    start
    repeat
    :read data;
    :generate diagrams;
    repeatwhile(more data?)
    stop
    
  • while 循环:使用 whileendwhile ,还可以在 endwhile 后添加标注或使用 is 。例如:
    while(data_available?)
    :read data;
    :generate diagrams;
    endwhile
    
    或者 while(check_file_size?) is (not empty)endwhile(empty) :close file;
  • 并行处理:使用 forkforkagainendfork 表示并行处理。例如:
    start
    if(multiprocessor?) then(yes)
    fork
    :treatment1;
    forkagain
    :treatment2;
    endfork
    else(monoproc)
    :treatment1;
    :treatment2;
    endif
    
  • 注释:支持 CreoleWiki 语法。例如:
    start
    :foo1;
    note left : this is a note
    :foo2;
    noteright
    this note is on several
    //lines// and can
    contain <b>html</b>
    =====
    *calling the method ""foo()"" is prohibited
    endnote
    stop
    
  • 标题和图例:使用 title 添加标题,legend 添加图例,还可以添加标头、脚注等。例如:
    title this is my title
    if(condition?) then(yes)
    :yes;
    else(no)
    :no;
    noteright
    this is a note
    endif
    stop
    legend
    this is the legend
    end legend
    footer dummy footer
    header
    this is
    along __dummy__ header
    end header
    
  • 颜色:为活动指定颜色,例如: :starting progress; #hotpink:reading configuration files these files should edited at this point!; #aaaaaa:ending of the process;
  • 箭头:使用 - > 标记,可添加文字或修改箭头颜色。例如:
    :foo1;
    -> you can put text on arrows;
    if(test) then
    -(#blue)->
    :foo2;
    -(#green)-> the text can also be on several lines and **very** long...;
    :foo3;
    else
    -(#black)->
    :foo4;
    endif
    -(#gray)->
    :foo5;
    
  • 组合(Grouping):通过定义分区(partition)来组合多个活动。例如:
    start
    partition initialization {
    :read config file;
    :init internal variable;
    }
    partition running {
    :wait for user interaction;
    :print information;
    }
    stop
    
  • 泳道(Swimlanes):使用管道符 | 定义泳道,也可改变泳道颜色。例如: |swimlane1| start :foo1; |#antiquewhite|swimlane2| :foo2; :foo3; |swimlane1| :foo4; |swimlane2| :foo5; stop
  • 分离(Detach):使用关键字 detach 移除箭头。例如:
    :start;
    fork
    :foo1;
    :foo2;
    fork again
    :foo3;
    detach
    endfork
    if(foo4) then
    :foo5;
    detach
    endif
    :foo6;
    detach
    :foo7;
    stop
    
  • 特殊领域语言(SDL):修改活动标签最后的分号分隔符(;),可为活动设置不同形状。

时序图

  • -> 绘制参与者之间传递的消息,用 --> 绘制虚线箭头表示异步消息。
  • :消息描述
  • 用关键字 actor 表示参与者,database 表示数据库。
  • 用关键字 participant 声明参与者。
  • #rgb 值 或颜色名修改 actor 或参与者的背景颜色。
  • self->self 给自己发消息。
  • -(#rgb) 修改箭头颜色,如 -(#red)>-(#red)->
  • 用关键字 autonumber 自动对消息编号。

类图

  • 元素声明:使用特定关键字声明类、接口、枚举等元素,例如 class class_nameinterface interface_name 等。
  • 类之间的关系:包括泛化关系( <– )、组合关系( *– )、聚合关系( o– )等,也可用虚线表示,如 代替 --
  • 关系上的标签:在关系之间使用 : 后接标签文字说明关系,可使用 <> 表明作用方向。
  • 在元素名称和关系标签中使用非字母:使用 as 关键字指定别名或用引号括起名称。
  • 添加方法:使用 : 后接方法名,可用花括号 {} 为属性和方法分组,也可使用 {field}{method} 修饰符。

用例图

  • 定义用例:用括号或 usecase 关键字定义,例如 (usecase1)usecase uc2
  • 定义参与者:用冒号包围参与者名称,或使用 actor 关键字,例如 :user:actor man2
  • 改变参与者样式:使用 skinparam actorstyle 命令。
  • 用例描述:使用引号实现多行描述。
  • 使用包:用 package 关键字组织参与者或用例。
  • 连接参与者和用例:使用箭头 –> 连接。
  • 扩展和包含:用 <|-- 表示扩展关系。
  • 添加注释:使用 noteleft ofnoteright of 等关键字添加注释。
  • 使用 stereotypes:在定义参与者和用例时使用 <<>> 添加 stereotypes。
  • 改变箭头方向和样式:可使用内联样式改变箭头颜色或样式。

其他图

  • 对象图:使用 object 定义实例,对象之间的扩展、组合、聚合关系分别用 <|--*--o-- 标记,用花括号批量声明属性。
  • 部署图:支持多种元素,如 actorartifactcloudcomponentnodeusecase 等,元素之间的链接标记有 .~~== 等,可改变元素视觉样式,并在链接时添加说明文字。
  • 状态机图:使用 (*)->state1 表示开始和结束状态图,用 --> 添加箭头;用 state 和花括号 {} 定义合成状态;用 state 定义长名字状态并使用 as 取别名;状态后面加冒号可添加描述文字;在状态转移流程中,冒号后可加转移条件描述文字。

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

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

相关文章

React安装(学习版)

1. 安装Node.js和npm 首先&#xff0c;确保你的电脑上已经安装了Node.js和npm&#xff08;Node Package Manager&#xff09;。你可以从 Node.js官网 下载安装包并按照提示进行安装。安装完成后&#xff0c;可以在命令行终端中验证Node.js和npm是否正确安装&#xff1a; node …

逆向案例二十五——webpack所需模块函数很多,某翼云登录参数逆向。

解决步骤&#xff1a; 网址&#xff1a;aHR0cHM6Ly9tLmN0eXVuLmNuL3dhcC9tYWluL2F1dGgvbG9naW4 不说废话&#xff0c;密码有加密&#xff0c;直接搜索找到疑似加密位置打上断点。 再控制台打印&#xff0c;分析加密函数 有三个处理过程&#xff0c;b[g]得到的是用户名,b[f] 对…

【Unity学习笔记】第二十 · 物理引擎脉络梳理(数值积分、碰撞检测、约束解决)

转载请注明出处: https://blog.csdn.net/weixin_44013533/article/details/139808452 作者&#xff1a;CSDN|Ringleader| 物理引擎综述 物理引擎是利用物理规则模拟物体运动和碰撞的模块&#xff0c;以在重力、弹力、摩擦力等各种力作用下做出真实运动表现&#xff0c;并对碰…

CI/CD的node.js编译报错npm ERR! network request to https://registry.npmjs.org/

1、背景&#xff1a; 在维护paas云平台过程中&#xff0c;有研发反馈paas云平台上的CI/CD的前端流水线执行异常。 2、问题描述&#xff1a; 流水线执行的是前端编译&#xff0c;使用的是node.js环境。报错内容如下&#xff1a; 2024-07-18T01:23:04.203585287Z npm ERR! code E…

高性能分布式IO系统BL205 OPC UA耦合器

边缘计算是指在网络的边缘位置进行数据处理和分析&#xff0c;而不是将所有数据都传送到云端或中心服务器&#xff0c;这样可以减少延迟、降低带宽需求、提高响应速度并增强数据安全性。 钡铼BL205耦合器就内置边缘计算功能&#xff0c;它不依赖上位机和云平台&#xff0c;就能…

从PyTorch官方的一篇教程说开去(1 - 初心)

原文在此&#xff0c;喜欢读原汁原味的可以自行去跟&#xff0c;这是一个非常经典和有学习意义的例子&#xff0c;在此向老爷子们致敬 - https://pytorch.org/tutorials/intermediate/reinforcement_q_learning.html 开源文化好是好&#xff0c;但是“公地的悲哀”这点避不开…

Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

创建一个Springboot项目&#xff0c;勾选web将该项目创建git本地仓库&#xff0c;再创建远程仓库推送上去 创建TestController RestController RequestMapping("/test") public class TestController { GetMapping("/hello") public String sayHelloJe…

Mybatis——Lombok

偷懒插件&#xff0c;能有效减少代码量&#xff0c;增加注释即可。 下载&#xff1a; 设置——插件——搜索Lombok——下载安装 导入依赖&#xff1a; <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok<…

FastAPI 学习之路(六十)打造系统的日志输出

我们要搭建日志系统&#xff0c;可以使用loguru&#xff0c;很不错的一个开源日志系统 pip install loguru 我们在common创建log.py&#xff0c;使用方式也很简单 import os import timefrom loguru import logger# 日志的路径 log_path os.path.join(os.getcwd(), "log…

AJAX基本用法

1.axios 基本语法: axios({url: 目标资源地址 }).then((result) > {// 对服务器返回的数据做后续处理 })查询参数&#xff08;在params中设置&#xff09;&#xff1a; 查询参数通常是指在URL中传递给服务器以获取动态数据或指定请求条件的一部分。它们位于URL中问号(?)后…

Spire.PDF for .NET【文档操作】演示:如何在 C# 中切换 PDF 层的可见性

我们已经演示了如何使用 Spire.PDF在 C# 中向 PDF 文件添加多个图层以及在 PDF 中删除图层。我们还可以在 Spire.PDF 的帮助下在创建新页面图层时切换 PDF 图层的可见性。在本节中&#xff0c;我们将演示如何在 C# 中切换新 PDF 文档中图层的可见性。 Spire.PDF for .NET 是一…

ClickHouse 入门(二)【基础SQL操作】

1、ClickHouse 1.1、SQL 操作 这里只介绍一些和我们之前 MySQL 不同的语法&#xff1b; 1.1.1、Update 和 Delete ClickHouse 提供了 Delete 和 Update 的能力&#xff0c;这类操作被称为 Mutation 查询&#xff08;可变查询&#xff09;&#xff0c;它可以看 做 Alter 的一…

iOS ------ 编译链接

编译流程分析 编译可以分为四步&#xff1a; 预处理&#xff08;Prepressing)编译&#xff08;Compilation&#xff09;汇编 &#xff08;Assembly)链接&#xff08;Linking&#xff09; 预编译&#xff08;Prepressing&#xff09; 过程是源文件main.c和相关头文件被&#…

使用Redis的SETNX命令实现分布式锁

什么是分布式锁 分布式锁是一种用于在分布式系统中控制多个节点对共享资源进行访问的机制。在分布式系统中&#xff0c;由于多个节点可能同时访问和修改同一个资源&#xff0c;因此需要一种方法来确保在任意时刻只有一个节点能够对资源进行操作&#xff0c;以避免数据不一致或…

Kafka Producer之幂等性

文章目录 1. 启用幂等性2. 底层变化3. 数据不重复4. 数据有序 幂等性通过消耗时间和性能的方式&#xff0c;解决乱序和重复问题。 但是只能保证同一生产者在一个分区中的幂等性。 1. 启用幂等性 //创建producerHashMap<String, Object> config new HashMap<>();…

ELK kibana查询与过滤

ELK kibana查询与过滤 1、通过布尔操作符 AND 、 OR 和 NOT 来指定更多的搜索条件(注意&#xff1a;这AND、OR、NOT必须大写)。例如&#xff0c;搜索message包含服务层关键词并且日志级别为INFO的条目&#xff0c;您可以输入 message:“服务层” AND level:“INFO”。 2、要搜…

Spring Boot集成syslog快速入门Demo

1.什么syslog&#xff1f; Syslog-ng是由Balabit IT Security Ltd.维护的一套开源的Unix和类Unix系统的日志服务套件。它是一个灵活的、可伸缩的系统日志记录程序。对于服务器日志集中收集&#xff0c;使用它是一个不错的解决方案。syslog-ng (syslog-Next generation) 是sysl…

STM32全栈嵌入式人脸识别考勤系统:融合OpenCV、Qt和SQLite的解决方案

1. 项目概述 本项目旨在设计并实现一个基于STM32的全栈人脸识别考勤系统。该系统结合了嵌入式开发、计算机视觉和数据库技术&#xff0c;实现了自动人脸检测、识别和考勤记录功能。 主要特点: 使用STM32F4系列微控制器作为主控制器采用OpenCV进行人脸检测和识别Qt开发跨平台…

Pytorch学习笔记day3——用神经网络学习一组函数

好的&#xff0c;我们开始吧。首先第一个问题&#xff0c;神经网络的本质是什么&#xff1f;是古典主义的人类的神经元吗&#xff1f;绝对不是&#xff0c;他只是一个优化函数 y f θ ( x ) y f_{\theta}(x) yfθ​(x) 这和小学学到的线性函数拟合并无本质区别。只是其中参数…

汇编教程1

本教程主要教大家如何使用vscode插件编写汇编语言&#xff0c;这样更方便&#xff0c;不用在32位虚拟机中编写汇编语言&#xff0c;后续的汇编实验代码都是使用vscode编写&#xff0c;话不多说&#xff0c;开始教学 安装vscode 如果已经安装过vscode&#xff0c;可以跳过这一…