引言

最近通过代码来画时序图,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画图时序图的资料请关注Devmax其它相关文章!

plantuml画图实现代码画时序图UML用例图的更多相关文章

  1. 原生 JS+CSS+HTML 实现时序图的方法

    这篇文章主要介绍了原生 JS+CSS+HTML 实现时序图的方法,本文通过实例代码图文介绍的非常详细,需要的朋友可以参考下

  2. 《精通swift设计模式》

    本书是帮助读者掌握Swift强大功能的又一利器,由技术畅销书作者AdamFreeman执笔,从设计模型应用的角度探讨Swift语言,抽丝剥茧,层层深入,囊括各类经典模式,并挖掘了那些看似十分简单、实际别有一番奥妙的知识。在本书中,我会讲解最重要的设计模式,并使用Swift语言演示如何将这些设计模式应用到iOS开发中去。设计模式描述的策略是经证实的、切实可行的,也就是说,你可以将自己的方法与之进行比对。

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

    这篇文章主要为大家介绍了plantuml画图实现代码画时序图示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. iOS开发CGContextRef画图使用总结

    这篇文章主要为大家详细介绍了iOS开发CGContextRef画图使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. python画图中文不显示问题的解决方法

    python中绘图时如果标签或者标题是中文,最后绘出来的图中的文字会被方框替代,下面这篇文章主要给大家介绍了关于python画图中文不显示问题的解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

  6. Python直接使用plot()函数画图的方法实例

    Python非常简单而又非常强大,它的功能之一就是画出漂亮的图表,实现数据的可视化,下面这篇文章主要给大家介绍了关于Python直接使用plot()函数画图的相关资料,需要的朋友可以参考下

  7. Python画图练习案例分享

    这篇文章主要介绍了Python画图练习案例分享,文章基于Python实现各种画图,具有一定的参考价值,感兴趣的小伙伴可以参考一下

  8. Android实现简单画图画板

    这篇文章主要为大家详细介绍了Android实现简单画图画板,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. Pandas 内置的十种画图方法

    这篇文章主要介绍了Pandas 内置的十种画图方法,Pandas是非常常见的数据分析工具,我们一般都会处理好处理数据然后使用searbon或matplotlib来进行绘制

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

    本文主要介绍了Android Studio自动生成UML关系图,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部