开源绘图工具plantUML入门教程(常用于画类图、时序图等)
1. 背景
2. 选择PlatnUML原因
- PlantUML是开源的,有一个相对比较成熟的网站,通过简单的UML语言来实现想要的效果,有点极客范
- PlantUML有比较详细的各类语言的guide文档
- PlantUML做了很多的适配,比如常用的编译器eclipse,IDEA intelliJ都有对应的插件,同时还和Maven和JQuery都做了集成,还提供了war包形式,可以在本地的JavaEE容器(比如Tomcat)中运行起来
- PlantUML语言简单直接易学,就好像Markdown语法一样,简单高效
3. PlantUML语言编写环境
本文简单介绍3种使用方法,其它方法读者可以自行研究
1.在线通过PlantUML语言绘制对应的UML图,plantUML官网提供了免费的在线编辑服务,通过在左侧输入对应的UML语言来生成对应的UML图
地址如下:online-site
2.使用IDEA intelliJ插件绘制
使用之前请安装PlantUML integration插件,然后就可以愉快的书写UML语言,右侧会生成对应的预览图片,可以复制或保存生成的图片到指定的目录
3.使用Visual Studio Code插件绘制
使用之前请安装PlantUML插件,然后就可以愉快的书写UML语言,右侧会生成对应的预览图片(alt+D显示)
4. PlantUML常用语法
1.基本用法
用 -> 来绘制参与者之间传递的消息
关键字 autonumber
用于自动对消息编号
@startuml autonumber Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response Alice -> Bob: Another authentication Request Alice <-- Bob: another authentication Response @enduml
2.声明参与者
actor
(角色)boundary
(边界)control
(控制)entity
(实体)database
(数据库)collections
(集合)queue
(队列)
@startuml actor Foo1 boundary Foo2 control Foo3 entity Foo4 database Foo5 collections Foo6
queue Foo7 Foo1 -> Foo2: To boundary Foo1 -> Foo3: To control Foo1 -> Foo4: To entity Foo1 -> Foo5: To database Foo1 -> Foo6: To collections
Foo1 -> Foo7: To queue @enduml
3.不同的箭头样式
@startuml Bob -> Alice Bob --> Alice Bob ->> Alice Bob ->x Alice Bob -\ Alice Bob \\- Alice Bob \\-- Alice Bob ->o Alice Bob o\\-- Alice Bob <-> Alice Bob <->o Alice Bob -[#red]> Alice: hello Bob <[#0000FF]-- Alice: hello @enduml
4.页面标题、分页、页眉、页脚
title
关键字用于为页面添加标题。
页面可以使用header
和footer
显示页眉和页脚。
关键字 newpage
用于把一张图分割成多张。
在 newpage
之后添加文字,作为新的示意图的标题。
通过手动在文本中添加\n
使长文本换行。
@startuml
autonumber
header Page Header
footer Page %page% of %lastpage%
title test first page
Alice -> Bob: first
newpage
Alice -> Bob: second
newpage A title for test\nlast page
Alice -> Bob: third
@enduml
5.分段
你可以通过使用 ==
关键词来将你的图表分割成多个逻辑步骤。
@startuml == first == Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response == second == Alice -> Bob: Another authentication Request Alice <-- Bob: Another authentication Response == third == Alice -> Bob: Last authentication Request Alice <-- Bob: Last authentication Response @enduml
6.生命线
关键字activate
和deactivate
用来表示参与者的生命活动。
一旦参与者被激活,它的生命线就会显示出来。
activate
和deactivate
适用于以上情形。
destroy
表示一个参与者的生命线的终结。
@startuml participant user user -> A: DoWork activate A A -> B: <<create Request>> activate B B -> C: DoWork activate C C --> B: WorkDone destroy C B --> A: RequestCreated deactivate B A -> user: Done deactivate A @enduml
还可以使用嵌套的生命线,并且运行给生命线添加颜色。
@startuml participant user user -> A: DoWork activate A #FFBBBB A -> A: Internal call activate A #DarkSalmon A -> B: <<craeteRequest>> activate B B --> A: RequestCreated deactivate B deactivate A A -> user: Done deactivate A @enduml
7.注释
可以使用note left
或note right
关键字在信息后面加上注释。
可以使用end note
关键字有一个多行注释。
可以使用note left of
,note right of
或note over
在节点(participant)的相对位置放置注释。
还可以通过修改背景色来高亮显示注释。
@startuml Alice -> Bob: hello note left #aqua: This is a first note. Bob -> Alice: hello note right #FFAAAA: This is an another note. note left of Alice: This is displayed left of Alice. note right of Bob: This is displayed right of Bob. note over Alice: This is displayed over Alice. note over Alice, Bob This is a long note. end note @enduml
其他细节请参考中文官网教程:http://plantuml.com/zh/sequence-diagram