前言

plantUML 是门语言,这个,掌握了达到所见即所得的效果,即用编写语言的方式,就可以画出需要的时序图,流程图,用例图等。这里抛砖引玉,希望大家都能学习下,平时做系统设计的时候都能用得上。

时序图

简单例子

你可以用-> 来绘制参与者之间传递的消息,而不必显式地声明参与者。
你也可以使用 --> 绘制一个虚线箭头。
另外,你还能用 <- 和 <–,这不影响绘图,但可以提高可读性。注意:仅适用于时序图,对于其它示意图,规则是不同的。

@startuml
用户 -> 认证中心: 登录操作
认证中心 -> 缓存: 存放(key=token+ip,value=token)token
用户 <- 认证中心 : 认证成功返回token
用户 -> 认证中心: 下次访问头部携带token认证
认证中心 <- 缓存: key=token+ip获取token
其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务
其他服务 -> 用户: 信息
@enduml

图例如下:

生命线的激活和撤销

@startuml
participant User
User -> A: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: RequestCreated
deactivate B
A -> User: Done
deactivate A
@enduml

图示如下:

声明参与者

使用 participant 关键字来声明一个参与者可以使你对参与者做出更多控制。
关键字 participant 用于改变参与者的先后顺序。
你也可以使用下面这些关键字来声明参与者,这会改变参与者的外观:

  • actor(角色)
  • boundary(边界)
  • control(控制)
  • entity(实体)
  • database(数据库)
  • collections(集合)
  • queue(队列)
@startuml
participant participant as Foo
actor actor as Foo1
boundary boundary as Foo2
control control as Foo3
entity entity as Foo4
database database as Foo5
collections collections as Foo6
queue queue as Foo7
Foo -> Foo1 : To actor
Foo -> Foo2 : To boundary
Foo -> Foo3 : To control
Foo -> Foo4 : To entity
Foo -> Foo5 : To database
Foo -> Foo6 : To collections
Foo -> Foo7 : To queue
@enduml

用例

用例定义

用例用圆括号括起来(两个圆括号看起来就像椭圆)。
也可以用关键字 usecase 来定义用例。还可以用关键字 as 定义一个别名,这个别名可以在以后定义关系的时候使用。

@startuml
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
@enduml

角色定义

角色用两个冒号包裹起来。
也可以用 actor 关键字来定义角色。还可以用关键字 as 来定义一个别名,这个别名可以在以后定义关系的时候使用。
在后面的例子中,我们会看到角色的定义是可选的

@startuml
:First Actor:
:Another\nactor: as Man2
actor Woman3
actor :Last actor: as Person1
@enduml

完整例子

@startuml
left to right direction
skinparam packageStyle rectangle
actor customer
actor clerk
rectangle checkout {
customer -- (checkout)
(checkout) .> (payment) : include
(help) .> (checkout) : extends
(checkout) -- clerk
}
@enduml

类图

元素声明

@startuml
abstract abstract
abstract class "abstract class"
annotation annotation
circle circle
() circle_short_form
class class
diamond diamond
<> diamond_short_form
entity entity
enum enum
interface interface
@enduml

类之间的关系

类之间的关系通过下面的符号定义:

使用… 来代替 – 可以得到点线.
在这些规则下,也可以绘制下列图形

@startuml
Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
@enduml

活动图(流程图)

@startuml
start
if (condition A) then (yes)
:Text 1;
elseif (condition B) then (yes)
:Text 2;
stop
elseif (condition C) then (yes)
:Text 3;
elseif (condition D) then (yes)
:Text 4;
else (nothing)
:Text else;
endif
stop
@enduml

添加方法

为了声明字段 (对象属性)或者方法,你可以使用后接字段名或方法名。
系统检查是否有括号来判断是方法还是字段。

@startuml
Object <|-- ArrayList
Object : equals()
ArrayList : Object[] elementData
ArrayList : size()
@enduml

欢迎关注: 程序员财富自由之路

回复: plantUML , 可以得到学习文档

参考资料

  • https://plantuml.com/zh/
  • https://usermanual.wiki/Pdf/PlantUMLLanguageReferenceGuideZH.1851971531/view
  • https://bytedance.feishu.cn/docs/doccn5h7psCVcPlBcxXkOWt0UIM

PlantUML 入门相关推荐

  1. PlantUML 入门教程:像写代码一样画图

    大家好,我是树哥! 我们都知道软件工程中有各种 UML 图,例如:用例图.时序图等等.很多时候我们都用 ProcessOn 或者 draw.io 这些画图工具来画图,但它们存在这样一个问题:样式多样不 ...

  2. 可能是全网最好的 Spock 单测入门文章!

    Spock 是非常简洁规范的单元测试框架,网上很多资料都不齐全,例子也很难懂.我自己经过一段时间的学习,梳理了这篇文章,不仅讲解层次递进,而且还有非常简洁明了的例子,小白都能懂! 快速入门 Spock ...

  3. 找公司 CTO 聊了聊,原来技术总监需要这些能力!

    对于做技术的程序员朋友来说,我们都知道有两个发展方向:纯技术与技术管理.对于管理方向来说,技术经理.技术总监.技术 VP.CTO 是一个很常见的职业发展路线.在学而优则仕的中国文化背景下,走技术管理路 ...

  4. MySQL 啥时候用记录锁,啥时候用间隙锁?

    大家好,我是树哥. 在前面的文章「MySQL 不同隔离级别,都使用了什么锁?」里,我们得出结论:在「读未提交」和「读已提交」隔离级别下,都只会使用记录锁,不会用间隙锁和 Next-Key 锁.而对于「 ...

  5. 系统 CPU 效率高,DMA 技术功不可没!

    大家好,我是树哥. 相信大家在学习 Kafka 的时候,都会被问到:为啥 Kafka 这么快?许多朋友都会回答是因为 zero-copy 技术.而一说到 Zero-copy 就会说到 DMA 技术. ...

  6. windows 下 Graphviz 安装及入门教程以及 PlantUML

    From:http://m.blog.csdn.net/lanchunhui/article/details/49472949 开源工具---使用简单的文字描述画UML图之PlantUML官网:htt ...

  7. PlantUML 快速入门(二) UML 时序图

    UML 序列图 序列图是仅次于类图的最常用 UML 图. 序列图将交互关系表示为一个二维图,纵向是时间轴,时间沿竖线向下延伸:横向轴代表了在协作中各个角色,一般是一个 Class 的对象,用一条虚线代 ...

  8. PlantUML使用入门

    文章目录 什么是PlantUML 如何使用 使用plantuml是一种比较酷的,画流程图和时序图可以很简单的实现.接下来介绍如何使用plantuml语法绘制顺序图/流程图/时序图等.这里只是简单做个入 ...

  9. [UML专题-2]:plantUML绘制软件设计图形快速入门

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

最新文章

  1. setTimeOut函数和setInterval函数
  2. c++学习书籍推荐《Advanced C++》下载
  3. Android培训翻译_使你的程序感知位置
  4. python如何生成列表和元组数据_Python数据类型(列表和元组)
  5. 自然语言处理之关键词提取TF-IDF
  6. ionic轮播,滑动之后不进行轮播
  7. 《设计模式详解》创建型模式 - 建造者模式
  8. 用python编写密码安全性_密码安全性
  9. JSP 语法2 都在百分号里面: 5.@符号加JSP三种指令标签 6
  10. MD5算法的C++实现
  11. SQL:一条SQL的查询结果作为另一条SQL的查询条件
  12. 手把手教你智能硬件开发(一) 我选Arduino
  13. am355x armlinux 移植openssh
  14. macbook卡在进度条开不了机_mac开机卡在进度条的问题
  15. 上古卷轴5json文件修改_改进名称的新Tempering名称定制SSE
  16. 微信小程序画布实现个人签名,并保存为图片
  17. 百度同步盘linux客户端,技术|Linux下百度云的Python客户端(支持Unicode)
  18. 计算机网络微课堂CSMA/CD协议-争用期碰撞时刻以及收到碰撞信号的时间时间的推导
  19. 解决python版本和Windows版本不兼容的问题
  20. 微信小程序毕业设计 基于微信药店药品商城小程序开题报告

热门文章

  1. 一张图揭示主流互联网架构体系
  2. 双11来临,阿里云大数据(数加)会出哪些绝招?
  3. OGEM Bentonite mud treatment system for Russian client
  4. php com word 设置字体和字号
  5. 5个常用的开源聊天应用
  6. 申请美国计算机科学硕士,如何转专业申请美国计算机科学硕士?
  7. 使用 chrome 调试被压缩的 js 代码
  8. DSP篇--C6701 BOOT(头文件烧写法)
  9. 分享一个超级简单简洁的单页导航网站源码,不到1m,带valine评论设置
  10. 惠普服务器win10安装系统教程,惠普笔记本U盘装Win10系统图文教程 10分钟学会重装系统...