Plantuml 是什么?
首先得说一下UML,统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代和规约语言。
UML涵盖了很多类型的图,主要都是应用于软件开发行业。
在UML系统开发中有三个主要的模型:
功能模型:从用户的角度展示系统的功能,包括用例图。
对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、对象图。
动态模型:展现系统的内部行为。包括序列图,活动图,状态图。
而PlantUML是一个开源项目,除了支持快速绘制上面这些类型的图表之外,还支持很多图表,具体查看官方网站。
PlantUML通过编写文本的方式来定义UML图表,有点类似markdown,然后生成图表
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26@startuml
' Split into 4 pages
page 2x2
skinparam pageMargin 10
skinparam pageExternalColor gray
skinparam pageBorderColor black
class BaseClass
namespace net.dummy #DDDDDD {
.BaseClass <|-- Person
Meeting o-- Person
.BaseClass <|- Meeting
}
namespace net.foo {
net.dummy.Person <|- Person
.BaseClass <|-- Person
net.dummy.Meeting o-- Person
}
BaseClass <|-- net.unused.Person
@enduml
输出效果
环境搭建
我们需要一个编辑器/IDE来编辑和预览UML图表,这里使用vscode
安装PlantUML插件
配置插件渲染方式
渲染方式有两种
- local 本地的Java渲染服务,需要Java运行环境及Graphviz
- PlantUMLServer 远程渲染服务器
方便起见,我们直接用官方的服务器
验证
新建 test.puml
1
2
3
4
5@startuml
' Split into 4 pages
class BaseClass
@enduml预览图表
PlantUML基础语法
由于PlantUML支持的图表类型比较多,每种图表的语法还不太一致,这里只简单介绍通用的语法,具体的图表还是建议查看官方文档。
也建议大家,在使用过程中记录适合自己的每种图表的模板,作图效率大大提高。
注意:语句类型是和图关联的,也就是说某些语句只能在某个图表用,而且PlantUML会根据你用到的语句猜测你是什么图表,然后进行渲染。
图表块
以@startuml
和@enduml
标记一个图表,还可以在开始处记录图表的名称(这里是hello-world)
1 | @startuml hello-world |
注释和标记
- 单行注释:单引号
'
在行首 - 多行注释:以
/'
开始, 以/'
结束 - 图表标记:
note left|right|top|bottom of XXX
1 | @startuml hello-world |
对象和关系
对象: 图表中的方块,一般出现才关系的两端,有些需要额外定义(如接口,类)
关系:一般用形如箭头的字符来表示对象之间的关系,字符不同样式不同
1 | @startuml hello-world1 |
一些例子
时序图
1 | @startuml |
类图
1 | @startuml |
参考资源
- https://real-world-plantuml.com/ PlantUML示例网站