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://www.rhkb.cn/news/379851.html

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

相关文章

【日常记录】【插件】excel.js导出的时候给单元格设置下拉选择、数据校验等

文章目录 1. 代码基本结构2. 导出的excel 某单元格的值设置为下拉选择3. 如何把下拉选择项设置为动态4. 单元格设置校验、提示5. 在WPS上的设置 1. 代码基本结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><…

Gitee使用教程2-克隆仓库(下载项目)并推送更新项目

一、下载 Gitee 仓库 1、点击克隆-复制代码 2、打开Git Bash 并输入复制的代码 下载好后&#xff0c;找不到文件在哪的可以输入 pwd 找到仓库路径 二、推送更新 Gitee 项目 1、打开 Git Bash 用 cd 命令进入你的仓库&#xff08;我的仓库名为book&#xff09; 2、添加文件到 …

容器化部署prometheus后再监控docker容器

一、主机部署Prometheus、cadvisor、grafana、node-exporter 1、部署cadvisor收集节点容器信息 docker run -v /:/rootfs:ro -v /var/run:/var/run/:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detachtrue --namecadvisor google/cadvisor 2、…

在线 PDF 制作者泄露用户上传的文档

两家在线 PDF 制作者泄露了数万份用户文档&#xff0c;包括护照、驾驶执照、证书以及用户上传的其他个人信息。 我们都经历过这样的情况&#xff1a;非常匆忙&#xff0c;努力快速制作 PDF 并提交表单。许多人向在线 PDF 制作者寻求帮助&#xff0c;许多人的祈祷得到了回应。 …

PolarisMesh源码系列--Polaris-Go注册发现流程

导语 北极星是腾讯开源的一款服务治理平台&#xff0c;用来解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题。在分布式和微服务架构的治理领域&#xff0c;目前国内比较流行的还包括 Spring Cloud&#xff0c;Apache Dubbo 等。在 Kubernete…

golang开发环境搭建与踩坑记录

文章目录 一、安装下载1、go环境2、ide 二、基本使用1、运行2、结构体与方法函数指针3、闭包4、指针5、map6、接口7、异常 三、包管理1、go mod语法2、项目下载所有依赖 一、安装下载 1、go环境 下载地址&#xff1a;https://go.dev/dl/ 或者&#xff1a;https://golang.goog…

算法基础之回溯法

本文将详细介绍回溯法的基本原理和适用条件&#xff0c;并通过经典例题辅助读者理解回溯法的思想、掌握回溯法的使用。本文给出的例题包括&#xff1a;N皇后问题、子集和问题。 算法原理 在问题的解空间树中&#xff0c;回溯法按照深度优先的搜索策略&#xff0c;从根结点出发…

[开源]语雀+Vercel:打造免费个人博客网站

大家好,我是白露。 今天我想和大家分享我的今年的第一个开源项目 —— 基于语雀+Nextjs+Vercel实现免费的博客系统。 简单来说,你在语雀写博客,然后直接一键同步到个人网站上,网站自动部署! 而且,整个过程几乎不需要额外的成本,也不用充值语雀超级会员,hh。这个项目…

Teamviewer删除可信任设备

目前基本上主流的远程连接软件都有限制&#xff0c;要么收费&#xff1b; Teamviewer可信任设备有限&#xff0c;超出限制就会提示错误&#xff0c;需要删除多余的设备才能登陆账号&#xff01; 需要登陆这个网站 Teamviewer Management console&#xff0c;才能修改&#xff…

FastAPI -- 第三弹(自定义响应、中间件、代理、WebSockets)

路径操作的高级配置 OpenAPI 的 operationId from fastapi import FastAPIapp FastAPI()# 通过 operation_id 参数设置 app.get("/items/", operation_id"some_specific_id_you_define") async def read_items():return [{"item_id": "F…

【C语言】全面解析冒泡排序

文章目录 什么是冒泡排序&#xff1f;冒泡排序的基本实现代码解释冒泡排序的优化冒泡排序的性能分析冒泡排序的实际应用结论 在C语言编程中&#xff0c;排序算法是一个非常基础且重要的概念。冒泡排序作为最简单、最易理解的排序算法之一&#xff0c;广泛应用于各种编程教学和实…

vi 编辑器快捷生成 main 函数和基本框架

step1: 执行 sudo vi /etc/vim/vimrc &#xff08;修改vimrc需要管理员权限&#xff1a;sudo&#xff09; step2:输入用户密码&#xff0c;回车, 编辑vimrc文件 step3:在尾行输入以下代码&#xff08;可复制&#xff09; map mf i#include<stdio.h><ESC>o#includ…

.net dataexcel 脚本公式 函数源码

示例如: ScriptExec(""sum(1, 2, 3, 4)"") 结果等于10 using Feng.Excel.Builder; using Feng.Excel.Collections; using Feng.Excel.Interfaces; using Feng.Script.CBEexpress; using Feng.Script.Method; using System; using System.Collections.Gen…

Gitee 使用教程1-SSH 公钥设置

一、生成 SSH 公钥 1、打开终端&#xff08;Windows PowerShell 或 Git Bash&#xff09;&#xff0c;通过命令 ssh-keygen 生成 SSH Key&#xff1a; ssh-keygen -t ed25519 -C "Gitee SSH Key" 随后摁三次回车键&#xff08;Enter&#xff09; 2、查看生成的 SSH…

探索Puppeteer的强大功能:抓取隐藏内容

背景/引言 在现代网页设计中&#xff0c;动态内容和隐藏元素的使用越来越普遍&#xff0c;这些内容往往只有在特定的用户交互或条件下才会显示出来。为了有效地获取这些隐藏内容&#xff0c;传统的静态爬虫技术往往力不从心。Puppeteer&#xff0c;作为一个强大的无头浏览器工…

【Git】Git Submodules 介绍(通俗易懂,总结了工作完全够用的 submodule 命令)

Git Submodules 介绍 1、为什么你值得读这篇文章&#xff1f;2、为什么有 submodules&#xff1f;3、了解 Git Submodules3.1、如何让一个Git仓库变为另一个Git仓库的 submodule3.2、submodule 的父子关系存在哪里3.3、submodule 的父子关系信息怎么存 4、submodule 开发常用操…

昇思25天学习打卡营第30天 | MindNLP ChatGLM-6B StreamChat

今天是第30天&#xff0c;学习了MindNLP ChatGLM-6B StreamChat。 今天是参加打卡活动的最后一天&#xff0c;经过这些日子的测试&#xff0c;昇思MindSpore效果还是不错的。 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;具有62亿参数&#xff0c;基于 …

vue3前端开发-小兔鲜项目-人气推荐栏目的前端渲染

vue3前端开发-小兔鲜项目-人气推荐栏目的前端渲染&#xff01;今天和大家分享一下&#xff0c;人气推荐栏目的前端页面如何渲染内容。 经历过上一次的&#xff0c;新鲜好物的栏目渲染之后&#xff0c;我们已经熟练了&#xff0c;vue3的接口调用&#xff0c;数据渲染到页面中的整…

【Android安全】Ubuntu 下载、编译 、刷入Android-8.1.0_r1

0. 环境准备 Ubuntu 16.04 LTS&#xff08;预留至少95GB磁盘空间&#xff0c;实测占94.2GB&#xff09; Pixel 2 XL 要买欧版的&#xff0c;不要美版的。 欧版能解锁BootLoader、能刷机。 美版IMEI里一般带“v”或者"version"&#xff0c;这样不能解锁BootLoader、…

acwing796-子矩阵的和-前缀和

s矩阵是全局变量&#xff0c;维度n*m,从1~n和 1~m存储元素【0】【0】~【0】【m】和【0】【0】~【n】【0】分别存储的都是0.s矩阵刚开始是存储输入的元素&#xff0c;后面用于存储前缀和。 s矩阵的意思是s【i】【j】表示从【0】【0】到【i】【j】为对角线的矩阵里面所有元素的和…