欢迎来到魔幻小生的博客

开源绘图工具plantUML入门教程(常用于画类图、时序图等)

1. 背景

随着工作时间的增长,越发觉得用专业的图形(用例图,时序图,ER图等等)去准确表达想法是很重要的。比如针对某个需求绘制的的用例图,比一段乏味的文字来的更加有意义,也便于别人理解。加之最近在学习源码的时候,发现很多书籍中都会使用类图,时序图等UML语言来描述逻辑关系。于是就在网上找了找绘制UML语言时,业界主流的一些工具都用什么,找了半天,大部分都用了下面的工具VisioStartUMLPlantUML。最终经过比较选择了PlantUML。官网:https://plantuml.com/zh/

2. 选择PlatnUML原因

  • PlantUML是开源的,有一个相对比较成熟的网站,通过简单的UML语言来实现想要的效果,有点极客范
  • PlantUML有比较详细的各类语言的guide文档
  • PlantUML做了很多的适配,比如常用的编译器eclipseIDEA intelliJ都有对应的插件,同时还和MavenJQuery都做了集成,还提供了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.生命线

关键字activatedeactivate用来表示参与者的生命活动。

一旦参与者被激活,它的生命线就会显示出来。

activatedeactivate适用于以上情形。

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 ofnote right ofnote 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

posted @ 2022-01-07 18:52  魔幻小生  阅读(23855)  评论(0编辑  收藏  举报