用代码画时序图!YYDS

2022-08-29 11:59:48 浏览数 (1)

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

  • 原创 | Java 2021 超神之路,很肝~
  • 中文详细注释的开源项目
  • RPC 框架 Dubbo 源码解析
  • 网络应用框架 Netty 源码解析
  • 消息中间件 RocketMQ 源码解析
  • 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析
  • 作业调度中间件 Elastic-Job 源码解析
  • 分布式事务中间件 TCC-Transaction 源码解析
  • Eureka 和 Hystrix 源码解析
  • Java 并发源码

来源:捡田螺的小男孩

  • 前言
  • 1.PlantUML 简介
  • 2. PlantUML 的安装使用
  • 3 如何用UML画图。
  • 4.如何用PlantUML画UML用例图
  • 5.如何用plantUML画思维导图
  • 6.如何用planUML画出活动
  • 最后

前言

最近通过代码来看看这个图,给大家看图、UML ,感觉很给大家分享。

大家平时用他们出的图呢,是用什么样的图,都用画图来画的,我们用画图来画图draw.ioprocessOn

今天给大家介绍一款想要的作品,用的画图,配合IDE使用PlantUML

基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管理系统 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

1.PlantUML 简介

PlantUML 是一个示例,可以编写一个支持编码的生成图形。可以使用工具来快速绘制 UML 图、UML 引导图、类图、ER 等。

PlantUML 出来的图,漂亮漂亮的,先给大家看出来的植物图,然后给大家看出来

代码语言:javascript复制
@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

用例图如下:

基于 Spring Cloud Alibaba Gateway Nacos RocketMQ Vue & Element 实现的后台管理系统 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

2. PlantUML 的安装使用

PlantUML的安装很方便的。插件,插件是:PlantUML Integration,大家可以去IDE市场搜索安装的方便,如下:

安装成功想快速体验一下,然后新建一个项目的话,然后新建一个UML文件,文件,我把那个文件复制进去,就可以代码,然后看到一个工厂的小测试图。

(如果是非展示,需要安装图,希望即时安装下Graphviz

3 如何用UML画图。

什么是图?

之间的示例图消息序列图,一种UML序列图(行为序列图、循环序列图)以及它通过描述对象之间发送的图。它可以显示多个对象的顺序动态。它可以表示用,当一个用例行为时,其中的每条消息中触发一个操作或状态机中触发转换的触发事件。

如何用 PlantUML 画图 呢?

你可以先新建一个 PlantUML 文件。

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

有默认的图生成啦。

我们照着用英文怎么说。

代码语言:javascript复制
@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你可以把它当作关键字理解变量。
  • participant:表示普通的主要演员,它跟演员的形状不一样。
  • database:代表人物形象是数据库。 显示的顺序是如何定义的: 声明的参与者顺序是(默认的)显示顺序。
  • autonumber:可以给参与者添加顺序。
  • ->:表示如果你希望参与者是虚线,可以使用-->
  • activatedeactivate:表演者的生命线。

它,PlantUML还挺丰富的在我的组合中,提供了一个非常适合的消息,非常适合推出的功能alt/else、opt、loop

代码语言:javascript复制
@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 文件,然后选择用户案例,并定义一个文件名。

有默认的UML用例图生成啦。

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

代码语言:javascript复制
@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,名字为Professionalpackage可以用来对用例和角色分组。
  • usecase "Eat Food" as UC1别名:定义一个用例,为UC1
  • fc --> UC4:表示角色fc和用例UC4关联起来,角色和用例之间的关系-->用来表示。

5.如何用plantUML画思维导图

什么是思想导图?

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

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

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

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

6.如何用planUML画出活动

什么是活动图?

动态图(动态图)了活动图,实现的工作图。

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

代码语言:javascript复制
@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:表示一个完整的条件判断。

最后

本文介绍了植物UML画图的相关知识,有兴趣的小伙伴,可以自己动手试一试。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

代码语言:javascript复制
文章有帮助的话,在看,转发吧。谢谢支持哟 (*^__^*)

0 人点赞