PlantUML 入门

简介: PlantUML 入门

前言


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

时序图


简单例子


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

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

图例如下:

image.png

生命线的激活和撤销

@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

图示如下:

image.png

声明参与者

使用 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

image.png

用例


用例定义

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

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

image.png

角色定义

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

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

image.png

完整例子

@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

image.png

类图


元素声明

@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

image.png

类之间的关系

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

image.png

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

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

image.png


活动图(流程图)


@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

image.png

添加方法


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

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

image.png


相关文章
|
10月前
【Typora】markdown神器之Typora无限使用安装与基本操作教程
【Typora】markdown神器之Typora无限使用安装与基本操作教程
288 3
|
10月前
|
Android开发
我用过的笔记 Markdown Wiki 工具
我用过的笔记 Markdown Wiki 工具
|
7月前
|
负载均衡 数据可视化 NoSQL
强烈推荐,好用的时序图开源插件PlantUML!
PlantUML这个开源时序图插件,它通过简单的语法和自动化的图形线条关联解决了传统画图软件中对齐困难、逻辑判断不易表示等问题,并提供了美观的图形和易于修改的特点,特别适合新入职场的开发者快速上手绘制高质量的时序图。
强烈推荐,好用的时序图开源插件PlantUML!
|
8月前
|
测试技术 uml
UML使用问题之什么是泛化关系,在PlantUML中如何表示
UML使用问题之什么是泛化关系,在PlantUML中如何表示
|
7月前
|
uml
IDEA画图神器 PlantUML
IDEA画图神器 PlantUML
211 0
|
9月前
|
XML 前端开发 图形学
技术笔记:Unity(一)介绍与基本使用
技术笔记:Unity(一)介绍与基本使用
|
Java uml
[UML] --- vscode中配置plantuml
[UML] --- vscode中配置plantuml
483 0
|
10月前
|
设计模式 数据可视化 程序员
不会画uml?推荐使用代码画图的工具PlantUml
不会画uml?推荐使用代码画图的工具PlantUml
735 1
|
数据可视化 JavaScript 前端开发
【Mermaid】画图工具使用笔记
【Mermaid】画图工具使用笔记
394 0
|
监控 前端开发 Devops
Cypress简易入门教程(下)
Cypress简易入门教程(下)
291 0