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.mzph.cn/pingmian/47561.shtml

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

相关文章

在安卓手机上原生运行docker

前言 之前的文章(香橙派5plus上跑云手机方案一 redroid(带硬件加速))在Ubuntu的docker里运行安卓&#xff0c;这里说下怎么在安卓手机下运行docker&#xff0c;测试也可以跑Ubuntu。 想在手机上运行docker想的不是一天两天了&#xff0c;其实很久之前就有这个想法了&#xff…

Docker网络模式和Cgroup资源限制

目录 1、Docker网络 &#xff08;1&#xff09;Docker网络实现原理 查看容器的输出和日志信息 2、Docker 的网络模式 查看docker列表 &#xff08;1&#xff09;网络模式详解 1&#xff09;host模式 2&#xff09;container模式 3&#xff09;none模式 4&#xff09;br…

SpringCloud教程 | 第十篇: 读取Nacos的配置

1、nacos服务器选用 2、test.yaml这一个DataId配置如下&#xff1a; config:name: aabb222 spring:application:name: testdatasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/hmblogs?useUni…

MongoDB教程(十二):MongoDB数据库索引

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、MongoD…

openGauss学习笔记-311 openGauss 数据迁移-MySQL迁移-MySQL语法兼容性评估工具

文章目录 openGauss学习笔记-311 openGauss 数据迁移-MySQL迁移-MySQL语法兼容性评估工具311.1 代码获取311.2 编译插件311.3 运行311.4 举例311.4.1 case 1:311.4.2 case 2:311.4.3 case 3:311.5 结果311.6 原理openGauss学习笔记-311 openGauss 数据迁移-MySQL迁移-MySQL语法…

【鸿蒙OS】【ArkUI】鸿蒙OS UI布局适配终极攻略

鸿蒙OS UI布局适配终极攻略 像素适配大法&#xff0c;此方法也适合Android ArkUI为开发者提供4种像素单位&#xff0c;框架采用vp为基准数据单位。 vp相当于Android里的dp fp相当于Android里的sp 官方是如何定义的呢,如下图 今天我来教大家如何用PX做到ArkUI的终级适配&…

Leetcode 2011. 执行操作后的变量值

问题描述&#xff1a; 存在一种仅支持 4 种操作和 1 个变量 X 的编程语言&#xff1a; X 和 X 使变量 X 的值 加 1--X 和 X-- 使变量 X 的值 减 1 最初&#xff0c;X 的值是 0 给你一个字符串数组 operations &#xff0c;这是由操作组成的一个列表&#xff0c;返回执行所有…

慢SQL分析和优化

慢SQL查询优化是一个多方面的过程&#xff0c;涉及SQL语句本身、数据库表结构、索引设计、硬件性能以及数据库配置等多个层面。下面我将详细介绍慢SQL优化的一般步骤&#xff1a; 捕获慢查询 开启慢查询日志&#xff1a;在MySQL中&#xff0c;可以通过设置slow_query_log和lon…

electron 应用的生命周期

Electron应用的生命周期涵盖了从应用启动到关闭的各个阶段,以及在这些阶段中发生的一系列事件。了解这些生命周期事件对于开发Electron应用至关重要,因为它们允许开发者在应用的不同阶段执行特定的操作,如创建窗口、处理文件打开请求、执行清理工作等。以下是对Electron应用…

C++初学者指南-5.标准库(第一部分)--标准库算法介绍

C初学者指南-5.标准库(第一部分)–标准库算法介绍 文章目录 C初学者指南-5.标准库(第一部分)--标准库算法介绍C的标准算法是&#xff1a;第一个示例组织输入范围自定义可调用参数并行执行(C17)迭代器和范围的类别错误消息命名空间std::ranges中的算法 (C20)算法参数图标相关内容…

Unity Editor 小工具集合(持续更新)

1.LOD批量设置 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;public class LODModelSet : EditorWindow {public GameObject rootObj;public GameObject lowAndMiddleRootObj;public float highLevel, middleLevel, lo…

C++ 库管理工具 vpkg Conan CMake pip

vcpkg 微软开发的跨平台库管理器&#xff0c;支持 Windows、Linux 和 macOS。vcpkg 提供了大量预编译的库&#xff0c;可以轻松集成到 C 项目中。 vcpkg安装配置visualstudio git clone https://github.com/microsoft/vcpkg.git cd vcpkg && bootstrap-vcpkg.batvcp…

树莓派使用蓝牙设置wifi网络

[外链图片转存中…(img-BteK79oW-1721104143862)] 在树莓派使用过程中,很多人都有遇到过这样的问题,经常由于工作场所变化,在无显示器和鼠标的情况下无法方便快捷对树莓派设置wifi网络。 在物联网场景下,成熟的方案是使用蓝牙为设备设置网络,在本教程中,我想向您展示一…

linux 安装 RocketMQ 4.7

安装介绍 Centos 7RocketMQ 4.7JDK 1.8 (安装JDK参考)RocketMQ的官网地址&#xff1a; http://rocketmq.apache.orgGithub地址是 https://github.com/apach e/rocketmq 安装操作 下载RocketMQ RocketMQ运行版本下载地址&#xff1a; Rocketmq-all-4.7.1-bin-release.zip …

httpx,一个网络请求的 Python 新宠儿

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 一个简单的库&#xff0c;也许能够开启我们的智慧之门&#xff0c; 一个普通的方法&#xff0c;也许能在危急时刻挽救我们于水深火热&#xff0c; 一个新颖的思维方式&#xff0c;也许能…

echart 图表组件的封装

echart 图表组件的封装 思路: 1、主要的传递参数为 options 2、去监听options的变化,然后更新图表 3、设置宽高 父组件 <template><div class="chart-box"><GChart :options="chartData" /></div> </template> <scrip…

【VRP】基于常春藤算法IVY求解带时间窗的车辆路径问题TWVRP,最短距离附Matlab代码

% VRP - 基于IVY算法的TWVRP最短距离求解 % 数据准备 % 假设有一组客户点的坐标和对应的时间窗信息 % 假设数据已经存储在 coordinates、timeWindows 和 demands 变量中 % 参数设置 numCustomers size(coordinates, 1); % 客户点数量 vehicleCapacity 100; % 车辆容量 numV…

设计模式8大原则

1. 开放封闭 允许对类进行扩展&#xff0c;但禁止更改。 2. 依赖倒置 高层模块&#xff08;稳定的&#xff09;不应该依赖于低层模块&#xff08;变化的&#xff0c;如子类&#xff09;。二者都应该依赖于抽象。抽象不应该依赖于实现&#xff0c;实现应该依赖于抽象。 3. 里…

AI大模型新纪元:哪四大趋势引领未来智能革命?

在人工智能热潮持续居高不下背景下&#xff0c;虽然全球AI大模型企业卷参数的激烈程度有所放缓&#xff0c;但大模型仍不断朝着万亿、十万亿参数发展&#xff0c;并推动多模态持续演进以通向AGI。同时&#xff0c;大模型也在朝向轻量化、高效化、垂直多元化发展&#xff0c;进而…

每日复盘-20240718

20240718 六日涨幅最大: ------1--------300713--------- 英可瑞 五日涨幅最大: ------1--------301016--------- 雷尔伟 四日涨幅最大: ------1--------301016--------- 雷尔伟 三日涨幅最大: ------1--------301016--------- 雷尔伟 二日涨幅最大: ------1--------300713----…