1 PlantUML 简介
PlantUML是一个画图脚本语言,官方介绍如下:
Generate UML diagram from textual description
用它可以快速地画出:
对于工程师们来说,用代码的方式来画图,简直是为其量身定做的。PlantUML语法也非常简单,参见PlantUML Language Reference Guide,它支持很多工具,可以生成PNG、SVG、LaTeX和二进制图片。
2 插件安装
1 | npm install hexo-tag-plantuml --save |
3 语法
3.1 顺序图
3.1.1 声明参与者
关键字
participant
用于改变参与者的先后顺序。你也可以使用其它关键字来声明参与者:
actor
boundary
control
entity
database
关键字
as
用于重命名参与者您可以使用关键字
order
自定义顺序来打印参与者。如果需要使用非字母符号,则需要使用引号
你可以使用RGB值或者颜色名修改 actor 或参与者的背景颜色。
-->
绘制一个虚线箭头->
绘制实线箭头
1 | {% plantuml %} |
3.1.2 修改箭头样式
修改箭头样式的方式有以下几种:
- 表示一条丢失的消息:末尾加
x
- 让箭头只有上半部分或者下半部分:将
<
和>
替换成\
或者/
- 细箭头:将箭头标记写两次 (如
>>
或//
) - 虚线箭头:用
--
替代-
- 箭头末尾加圈:
->o
- 双向箭头:
<->
1 | {% plantuml %} |
3.1.3 修改箭头颜色
1 | {% plantuml %} |
3.1.4 对消息序列编号
关键字
autonumber
用于自动对消息编号。语句
autonumber *start*
用于指定编号的初始值,而autonumber *start**increment*
可以同时指定编号的初始值和每次增加的值。
1 | {% plantuml %} |
3.1.5 分割示意图
关键字 newpage
用于把一张图分割成多张。
在 newpage
之后添加文字,作为新的示意图的标题。
这样就能很方便地在 Word 中将长图分几页打印。
1 | {% plantuml %} |
3.1.6 组合消息
我们可以通过以下关键词将组合消息:
alt/else
opt
loop
par
break
critical
group
, 后面紧跟着消息内容可以在标头(header)添加需要显示的文字(
group
除外)。关键词
end
用来结束分组。注意,分组可以嵌套使用。
1 | {% plantuml %} |
3.1.7 添加注释
给消息添加注释
我们可以通过在消息后面添加
note left
或者note right
关键词来给消息添加注释。你也可以通过使用
end note
来添加多行注释。1
2
3
4
5
6
7
8
9
10
11
12
13
14{% plantuml %}
Alice->Bob : hello
note left: this is a first note
Bob->Alice : ok
note right: this is another note
Bob->Bob : I am thinking
note left
a note
can also be defined
on several lines
end note
{% endplantuml %}其他注释
可以使用
note left of
,note right of
或note over
在节点(participant)的相对位置放置注释。还可以通过修改背景色来高亮显示注释。
以及使用关键字
end note
来添加多行注释。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20{% plantuml %}
participant Alice
participant Bob
note left of Alice #aqua
This is displayed
left of Alice.
end note
note right of Alice: This is displayed right of Alice.
note over Alice: This is displayed over Alice.
note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice.
note over Bob, Alice
This is yet another
example of
a long note.
end note
{% endplantuml %}改变备注框的形状
你可以使用
hnote
和rnote
这两个关键字来修改备注框的形状。1
2
3
4
5
6
7
8
9{% plantuml %}
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
"r" as rectangle
"h" as hexagon
endrnote
{% endplantuml %}
3.1.8 分隔符
你可以通过使用 ==
关键词来将你的图表分割多个步骤。
1 | {% plantuml %} |
3.1.9 引用
你可以在图中通过使用ref over
关键词来实现引用
1 | {% plantuml %} |
3.1.10 延迟
你可以使用...
来表示延迟,并且还可以给延迟添加注释。
1 | {% plantuml %} |
3.1.11 增加空间
你可以使用|||
来增加空间。
还可以使用数字指定增加的像素的数量。
1 | {% plantuml %} |
3.1.12 生命线的激活与撤销
关键字activate
和deactivate
用来表示参与者的生命活动。
一旦参与者被激活,它的生命线就会显示出来。
activate
和deactivate
适用于以上情形。
destroy
表示一个参与者的生命线的终结。
还可以使用嵌套的生命线,并且运行给生命线添加颜色。
1 | {% plantuml %} |
3.1.13 创建参与者
你可以把关键字create
放在第一次接收到消息之前,以强调本次消息实际上是在创建新的对象。
1 | {% plantuml %} |
3.1.14 激活,停用,创建的快捷语法
在指定目标参与者之后,可以立即使用以下语法:
++
Activate the target (optionally a #color may follow this)--
Deactivate the source**
Create an instance of the target!!
Destroy an instance of the target
1 | {% plantuml %} |
进入和发出消息
如果只想关注部分图示,你可以使用进入和发出箭头。
使用方括号[
和]
表示图示的左、右两侧。
1 | {% plantuml %} |
3.1.15 包裹参与者
可以使用box
和end box
画一个盒子将参与者包裹起来。
还可以在box
关键字之后添加标题或者背景颜色。
1 | {% plantuml %} |
3.1.16 移除脚注
使用hide footbox
关键字移除脚注。
1 | {% plantuml %} |
3.1.17 外观参数(skinparam)
可以在如下场景中使用:
1 | {% plantuml %} |
1 | {% plantuml %} |
3.2 用例图
3.2.1 用例
用例用圆括号括起来。
也可以用关键字usecase
来定义用例。 还可以用关键字as
定义一个别名,这个别名可以在以后定义关系的时候使用。
1 | {% plantuml %} |
3.2.2 角色
角色用两个冒号包裹起来。
也可以用actor
关键字来定义角色。 还可以用关键字as
来定义一个别名,这个别名可以在以后定义关系的时候使用。
后面我们会看到角色的定义是可选的。
1 | {% plantuml %} |
3.2.3 用例描述
如果想定义跨越多行的用例描述,可以用双引号将其裹起来。
还可以使用这些分隔符:--``..``==``__
。 并且还可以在分隔符中间放置标题。
1 | {% plantuml %} |
3.2.4 基础示例
用箭头-->
连接角色和用例。
横杠-
越多,箭头越长。 通过在箭头定义的后面加一个冒号及文字的方式来添加标签。
在这个例子中,User并没有定义,而是直接拿来当做一个角色使用。
1 | {% plantuml %} |
3.2.5 继承
如果一个角色或者用例继承于另一个,那么可以用<|--
符号表示。
1 | {% plantuml %} |
3.2.6 注释
可以用note left of
, note right of
, note top of
, note bottom of
等关键字给一个对象添加注释。
注释还可以通过note
关键字来定义,然后用..
连接其他对象。
1 | {% plantuml %} |
3.2.7 构造类型
用 <<
和 >>
来定义角色或者用例的构造类型。
1 | {% plantuml %} |
3.2.8 箭头方向
- 默认连接是竖直方向的,用
--
表示,可以用一个横杠或点来表示水平连接。 - 也可以通过翻转箭头来改变方向。
- 还可以通过给箭头添加
left
,right
,up
或down
等关键字来改变方向。
1 | {% plantuml %} |
3.2.9 分割图示
用newpage
关键字将图示分解为多个页面。
1 | {% plantuml %} |
3.2.10 构图方向
- 默认从上往下构建图示。
- 你可以用
left to right direction
命令改变图示方向。
1 | {% plantuml %} |
3.2.11 显示参数
用skinparam
改变字体和颜色。
可以在如下场景中使用:
1 | {% plantuml %} |
3.3 活动图
3.3.1 开始/结束
你可以使用关键字start
和stop
表示图示的开始和结束。
1 | {% plantuml %} |
3.3.2 条件语句
- 可以使用关键字
if
,then
和else
设置分支测试。标注文字则放在括号中。 - 也可以使用关键字
elseif
设置多个分支测试
1 | {% plantuml %} |
3.3.3 循环
使用关键字repeat
和repeatwhile
进行重复循环。
1 | {% plantuml %} |
使用关键字while
和end while
进行while循环。
1 | {% plantuml %} |
3.3.4 并行处理
你可以使用关键字fork
,fork again
和end fork
表示并行处理。
1 | {% plantuml %} |
3.3.5 注释
1 | {% plantuml %} |
3.3.6 颜色
你可以为活动(activity)指定一种颜色。
1 | {% plantuml %} |
3.3.7 箭头
使用->
标记,你可以给箭头添加文字或者修改箭头颜色。
同时,你也可以选择点状 (dotted),条状(dashed),加粗或者是隐式箭头
1 | {% plantuml %} |
3.3.8 连接器
你可以使用括号定义连接器
1 | {% plantuml %} |
3.3.9 组合
通过定义分区(partition),你可以把多个活动组合(group)在一起。
1 | {% plantuml %} |
3.3.10 泳道
你可以使用管道符|
来定义泳道。
还可以改变泳道的颜色。
1 | {% plantuml %} |
3.3.11 分离
可以使用关键字detach
移除箭头。
1 | {% plantuml %} |
3.3.12 特殊领域语言(SDL)
通过修改活动标签最后的分号分隔符(;
),可以为活动设置不同的形状。
|
<
>
/
]
}
1 | {% plantuml %} |
3.3.13 完整实例
1 | {% plantuml %} |
3.4 类图
4 思维导图
4.1 安装插件
1 | npm install hexo-simple-mindmap |
4.2 使用
1 | {% pullquote mindmap mindmap-md %} |
- 在 Hexo 中使用思维导图
- 前言
- 操作指南
- 准备需要的文件
- 为主题添加 CSS/JS 文件
- 使用方法