plantuml画图实现代码画时序图UML用例图

目录
  • 引言
  • 1. PlantUML 简介
  • 2. PlantUML的安装使用
  • 3.如何用PlantUML 画时序图
  • 4. 如何用PlantUML 画UML用例图
  • 5. 如何用plantUML 画思维导图
  • 6. 如何用planUML 画活动流程图
  • 最后

引言

最近通过代码来画时序图,UML用例图,感觉很不错,所以给大家分享一下。

日常开发,一般在设计阶段,我们都需要画时序图、用例图等等。大家平时画图的时候,是用draw.io还是processOn呢?用它们画出的图,其实都很挺好看的。但是呢,今天田螺哥介绍一个款开源的,画图神器!用代码就能画图,配合IDE使用,画图高效简单,信手拈来,还挺美观的。这个神奇就是PlantUML

github地址

1. PlantUML 简介

PlantUML是一个开源项目,可以快速编写UML图的工具。它可以支持编码的方式来生成图形。可以用来画时序图、UML用例图、类图、思维导图、ER图等等。

PlantUML 画出来的图,简洁美观,先给大家看看,一个用PlantUML画出来的登录时序图,以及对应画图的代码,如下:

@startuml
title Sequence Diagram of User login
actor User as user
participant "gateway" as gateway
participant "user-core" as userCore
database "MySQL" as mysql
database "Redis" as redis
autonumber
user-> gateway:login request,param:username,password
activate gateway
gateway-> userCore:forward the login request
activate userCore
userCore-> userCore :check the login param
userCore-> mysql:query user info from mysql by username
activate mysql
mysql-> userCore:response with username and password
deactivate mysql
userCore->userCore:compare the requested password with the DB's password
userCore-> userCore: generate an unique token
userCore--> redis: save the token to redis
userCore-> gateway: response with the token
deactivate userCore
gateway-> user: login success with the token
deactivate gateway
@enduml

登录用例时序图如下:

2. PlantUML的安装使用

PlantUML的安装很方便的.有个插件,名字是:PlantUML Integration,大家可以去IDE的插件市场,搜索安装即可,如下:

安装成功后,想快速体验一般的话.可以新建一个项目,然后新建一个plantUML File文件,然后把我上个小节,登录时序图那个代码复制进去,就可以看到登录时序图啦.

3.如何用PlantUML 画时序图

什么是时序图?

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。

如何用PlantUML画时序图呢?

你可以先新建一个PlantUML文件

然后选择Sequence,并定义一个文件名称

就会有默认的时序图生成啦.

我们照着登录时序图的代码,来大概说下每个关键词的意思吧.

@startuml
title Sequence Diagram of User login
actor User as user
participant "gateway" as gateway
participant "user-core" as userCore
database "MySQL" as mysql
database "Redis" as redis
autonumber
user-> gateway:login request,param:username,password
activate gateway
gateway-> userCore:forward the login request
activate userCore
userCore-> userCore :check the login param
userCore-> mysql:query user info from mysql by username
activate mysql
mysql-> userCore:response with username and password
deactivate mysql
userCore->userCore:compare the requested password with the DB's password
userCore-> userCore: generate an unique token
userCore--> redis: save the token to redis
userCore-> gateway: response with the token
deactivate userCore
gateway-> user: login success with the token
deactivate gateway
@enduml

关键词解释如下:

  • title:表示该UML用例图的标题
  • actor:表示人形的参与者
  • as: 使用as 关键字命名参与者。你可以把它理解成定义变量一样,as后面跟着的就是变量,声明后,我们后面就可以使用这个变量啦
  • participant:表示普通的参与者,它跟actor的主要区别是:形状不一样
  • database:表示参与者形状是数据库.
  • 显示的顺序是怎么定义的:声明的参与者顺序将是(默认的)显示顺序。
  • autonumber:可以给参与者添加顺序
  • ->:表示绘制两个参与者之间的信息,如果你希望是虚线,可以使用-->.
  • activatedeactivate:表示参与者的生命线

当然,PlantUML功能挺丰富的,它还可以组合消息,虽然在我的登录时序图还没体现出来. 它提供了alt/else、opt、loop来组合消息.如下:

@startuml
Alice -> Bob: 认证请求
alt 登录成功
    Bob -> Alice: 认证接受
else 某种失败情况
    Bob -> Alice: 认证失败
    group 我自己的标签
    Alice -> Log : 开始记录攻击日志
        loop 1000次
            Alice -> Bob: DNS 攻击
        end
    Alice -> Log : 结束记录攻击日志
    end
else 另一种失败
   Bob -> Alice: 请重复
end
@enduml

对应的时序图如下:

4. 如何用PlantUML 画UML用例图

什么是用例图?

用例图(英语:use case diagram)是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。用例图也经常和其他图表配合使用。

如何用PlantUML画UML用例图呢?

你可以先新建一个PlantUML文件,然后选择user case,并定义个文件名

就会有默认的UNML用例图生成啦

我挑官网一个用例图demo来介绍吧,代码如下:

@startuml
left to right direction
actor Guest as g
package Professional {
  actor Chef as c
  actor "Food Critic" as fc
}
package Restaurant {
  usecase "Eat Food" as UC1
  usecase "Pay for Food" as UC2
  usecase "Drink" as UC3
  usecase "Review" as UC4
}
fc --> UC4
g --> UC1
g --> UC2
g --> UC3
@enduml

对应生成的用例图如下:

来看下每个关键词的意思:

  • left to right direction:表示从左到右绘制用例图
  • actor Guest as g:定义一个人形参与者,变量别名是g.
  • package Professional:定义一个包package,名字为Professional.package可以用来对用例和角色分组.
  • usecase "Eat Food" as UC1:定义一个用例,别名为UC1.
  • fc --> UC4:表示角色fc和用例UC4关联起来.角色和用例之间的关系,用-->来表示。

5. 如何用plantUML 画思维导图

什么是思维导图?

英文是The Mind Map,又名心智导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效同时又很高效,是一种实用性的思维工具。

写了一个简单的思维导图,代码如下:

@startmindmap
*
** 计算机网络面试题
*** TCP/IP十五连问
*** 两万字计算机面试题汇总
** MySQL面试题
** Redis面试题
** 大厂面试真题
*** 虾皮十五连问
*** 五年Oppo后端面试真题
*** 腾讯云十五连问
@endmindmap

plantUML画思维导图,还是挺简单的,大家可以看下效果

6. 如何用planUML 画活动流程图

什么是活动图?

动态图(activity diagram,活动图)是阐明了业务用例实现的工作流程。

我画了一个简单版的登录活动流程图:

@startuml
title Activity Diagram of User login
start
:user request login;
if (is request param null?) then (N)
  :query user info by username;
  if (is user info  null ?) then (N)
    :compare the password;
    if (Is password right?) then (Y)
      :generate a token ,and set it to redis;
      :response with login success;
    else(N)
       :response with wrong password code;
       stop
    endif
  else(Y)
    :response with error userinfo;
    stop
  endif
else(Y)
  :response with error param;
  stop
  endif
stop
@enduml

生成的流程图如下:

活动图关键解释如下:

  • start表示活动图流程的开始
  • stop表示活动图流程的结束
  • :user request login;:表示活动流程节点为user request login,需要加:;的哈
  • if+then+endif表示一个完整的条件判断

最后

本文介绍了plantUML画图,有兴趣的小伙伴,可以移步官网学习哈.

plantUM 官网 https://plantuml.com/zh/

更多关于plantuml画图时序图的资料请关注我们其它相关文章!

(0)

相关推荐

  • Android Studio自动生成UML关系图的方法步骤

    目录 1.安装Sketch It 2.安装"PlantUML Integration"插件 3. 问题 1.安装Sketch It 这是我的AS版本: 如下步骤: 如下图等待插件全部加载后,搜索"Sketch It"插件安装: 如果安装无效自行到红色框框提示的主页下载手动安装: 选中文件等待安装完毕即可: 如此如下图点击Tools下的"Sketch It!..."按钮即可: 生成"xxx.plantuml"文件: 2.安装&q

  • 使用IDEA画UML图的详细步骤

    目录 UML简介 如何使用IDEA画UML图 安装PlantUML插件 安装Graphviz Graphviz安装和环境变量配置 Graphviz安装 环境变量配置  写在前面:大家好!我是AC-fun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教.我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/.非常感谢大家的支持.一起加油,冲鸭!  用知识改变命运,用知

  • GoLand利用plantuml生成UML类图

    目录 步骤 1. 安装goplantuml 2. 将goplantuml集成到GoLand 3. 安装GoLand的PlantUML插件 4. 安装和集成Graphviz GoLand内置的Diagrams不像IDEA一样强大,不支持生成类图 解决方案是 利用github上的 适用于 golang 项目的 PlantUML 类图生成器:jfeliu007/goplantuml 结合Goland的PlantUML插件 步骤 1. 安装goplantuml 执行 go get github.com/

  • plantuml画图实现代码画时序图UML用例图

    目录 引言 1. PlantUML 简介 2. PlantUML的安装使用 3.如何用PlantUML 画时序图 4. 如何用PlantUML 画UML用例图 5. 如何用plantUML 画思维导图 6. 如何用planUML 画活动流程图 最后 引言 最近通过代码来画时序图,UML用例图,感觉很不错,所以给大家分享一下. 日常开发,一般在设计阶段,我们都需要画时序图.用例图等等.大家平时画图的时候,是用draw.io还是processOn呢?用它们画出的图,其实都很挺好看的.但是呢,今天田螺

  • IDEA使用SequenceDiagram插件绘制时序图的方法

    最近看代码,由于代码的调用层级深度比较多,层层深入到某处时,已经忘记了身处何处,虽然自己可以使用一些画图工具来时序图,但是,这种情况下,自己画时序图很繁琐,比较浪费时间,上网找了一下IDEA有一个插件可以自动生成时序图,工具名称:SequenceDiagram 下载安装 方式1 可以在IDEA的Plugins中搜索上面的插件名,就可以安装插件了,如下图: 方式2 如果在IDEA的插件搜索中未找到插件,可以从官网上下载,然后在IDEA中选择"本地安装"即可,插件的下载地址:https:/

  • 使用python实现画AR模型时序图

    背景: 用python画AR模型的时序图. 结果: 代码: import numpy as np import matplotlib.pyplot as plt """ AR(1)的时序图:x[t]=a*x[t-1]+e """ num = 2000 e = np.random.rand(num) x = np.empty(num) """ 平稳AR(1) """ a = -0.5 x[

  • 使用python matplotlib画折线图实例代码

    目录 matplotlib简介 1.画折线图[一条示例] 2.画折线图带数据标签 3.画多条折线图: 4.画多条折线图分别带数据标签: 总结 matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基

  • Python实现读取txt文件并画三维图简单代码示例

    记忆力差的孩子得勤做笔记! 刚接触python,最近又需要画一个三维图,然后就找了一大堆资料,看的人头昏脑胀的,今天终于解决了!好了,废话不多说,直接上代码! #由三个一维坐标画三维散点 #coding:utf-8 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d.axes3d import Axes3D x = [] y = [] z = [] f = open("data\\record.

  • 如何用Matplotlib 画三维图的示例代码

    用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散点图 #绘制三角螺旋线 from mpl_toolkits import mplot3d %matplotlib inline import matplotlib.pyplot as plt import numpy as np ax = plt.axes(proje

  • python matplotlib画图实例代码分享

    python的matplotlib包支持我们画图,有点非常多,现学习如下. 首先要导入包,在以后的示例中默认已经导入这两个包 import matplotlib.pyplot as plt import numpy as np 然后画一个最基本的图 t = np.arange(0.0, 2.0, 0.01)#x轴上的点,0到2之间以0.01为间隔 s = np.sin(2*np.pi*t)#y轴为正弦 plt.plot(t, s)#画图 plt.xlabel('time (s)')#x轴标签 p

  • Python读取Excel表格,并同时画折线图和柱状图的方法

    今日给大家分享一个Python读取Excel表格,同时采用表格中的数值画图柱状图和折线图,这里只需要几行代码便可以实. 首先我们需要安装一个Excel操作的库xlrd,这个很简单,在安装Python后直接在DOS命令下输入pip install xlrd,便可以安装成功,如果还是不行,就输入Python -m pip install xlrd.后面会附上完整的代码和截图: 这行代码就是读取本地Excel文件的: data = xlrd.open_workbook(r'C:\\Users\\ASU

  • python matplotlib画盒图、子图解决坐标轴标签重叠的问题

    在使用matplotlib画图的时候将常会出现坐标轴的标签太长而出现重叠的现象,本文主要通过自身测过好用的解决办法进行展示,希望也能帮到大家,原图出现重叠现象例如图1: 代码为: data1=[[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765]] data

  • matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解

    学习python的道路是漫长的,今天又遇到一个问题,所以想写下来自己的理解方便以后查看. 在使用matplotlib的过程中,常常会需要画很多图,但是好像并不能同时展示许多图.这是因为python可视化库matplotlib的显示模式默认为阻塞(block)模式.什么是阻塞模式那?我的理解就是在plt.show()之后,程序会暂停到那儿,并不会继续执行下去.如果需要继续执行程序,就要关闭图片.那如何展示动态图或多个窗口呢?这就要使用plt.ion()这个函数,使matplotlib的显示模式转换

随机推荐