当前位置: 首页 > news >正文

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 取别名;状态后面加冒号可添加描述文字;在状态转移流程中,冒号后可加转移条件描述文字。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 源码分析SpringCloud Gateway如何加载断言(predicates)与过滤器(filters)
  • Java毕业设计 基于SpringBoot的景区行李寄存管理系统
  • 【Django】网上蛋糕商城后台-类目管理
  • huawei USG6001v1学习---信息安全概念
  • 前端使用webSocket与后台建立连接并进行心跳监测机制
  • AWS基础知识
  • 专业PDF编辑工具:Acrobat Pro DC 2024.002.20933绿色版,提升你的工作效率!
  • WPF/C#:实现导航功能
  • 【go】Excelize处理excel表 带合并单元格、自动换行与固定列宽的文件导出
  • JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测
  • PWM再理解(1)
  • 【Node.js】初识 Node.js
  • CentOS 8中 更新或下载时报错:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal mirrorlist
  • 彻底解决idea的编解码问题
  • c# .net core中间件,生命周期
  • Babel配置的不完全指南
  • HTTP中GET与POST的区别 99%的错误认识
  • IDEA常用插件整理
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java深入 - 深入理解Java集合
  • Java知识点总结(JavaIO-打印流)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • PAT A1050
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 程序员该如何有效的找工作?
  • 从setTimeout-setInterval看JS线程
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 我感觉这是史上最牛的防sql注入方法类
  • 一个项目push到多个远程Git仓库
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 阿里云API、SDK和CLI应用实践方案
  • 我们雇佣了一只大猴子...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​520就是要宠粉,你的心头书我买单
  • ​Linux·i2c驱动架构​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # 数仓建模:如何构建主题宽表模型?
  • #Linux(权限管理)
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • ${factoryList }后面有空格不影响
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (C语言)球球大作战
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Python) SOAP Web Service (HTTP POST)
  • (八)c52学习之旅-中断实验
  • (八)Flask之app.route装饰器函数的参数
  • (二)springcloud实战之config配置中心
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (四)软件性能测试
  • (算法)硬币问题
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上