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


相关文章
|
1月前
|
传感器 XML 存储
MuJoCo 入门教程(一)(下)
MuJoCo 入门教程(一)(上)
129 3
|
1月前
|
负载均衡 数据可视化 NoSQL
强烈推荐,好用的时序图开源插件PlantUML!
PlantUML这个开源时序图插件,它通过简单的语法和自动化的图形线条关联解决了传统画图软件中对齐困难、逻辑判断不易表示等问题,并提供了美观的图形和易于修改的特点,特别适合新入职场的开发者快速上手绘制高质量的时序图。
强烈推荐,好用的时序图开源插件PlantUML!
|
1月前
|
XML 数据可视化 编译器
MuJoCo 入门教程(一)(上)
MuJoCo 入门教程(一)
153 2
|
2月前
|
测试技术 uml
UML使用问题之什么是泛化关系,在PlantUML中如何表示
UML使用问题之什么是泛化关系,在PlantUML中如何表示
|
4月前
|
设计模式 数据可视化 程序员
不会画uml?推荐使用代码画图的工具PlantUml
不会画uml?推荐使用代码画图的工具PlantUml
536 1
|
Java uml
[UML] --- vscode中配置plantuml
[UML] --- vscode中配置plantuml
370 0
|
算法 Java API
CTK框架介绍和环境搭建
CTK 为支持生物医学图像计算的公共开发包,其全称为 Common Toolkit。CTK插件框架的设计有很大的灵感来自OSGi并且使得应用程序由许多不同的组件组合成一个可扩展模型。这个模型允许通过那些组件间共享对象的服务通信。
463 0
|
小程序 Go
iris web框架安装使用【我的go学习第十课】
iris web框架安装使用【我的go学习第十课】
185 0
iris web框架安装使用【我的go学习第十课】
|
存储 前端开发 JavaScript
werkzeug源码阅读-完结篇
Werkzeug是一个全面的WSGI Web应用程序库。它最初是WSGI实用程序各种工具的简单集合,现已成为最高级的WSGI实用程序库之一,是Flask背后的项目。
482 0
werkzeug源码阅读-完结篇
|
开发工具 git C语言
kaldi 源码阅读(一) - 环境搭建
按照我一贯的做法,来阅读开源代码: 1. 编译以及基础功能的测试 2. 模块功能划分 3. 单一模块解析(添加注释或日志) 4. 扩展新demo工程 5. 自定义模块及调用 文章也会按照上述流程进行开展。
2485 0