Plant UML介绍及使用

PlantUML 是一个开源项目,支持快速绘制:

• 时序图

• 用例图

• 类图

• 活动图

• 组件图

• 状态图

• 对象图

通过简单直观的语言来定义这些示意图。

简单示例

实例1

@startuml 
Alice -> Bob: Authentication Request 
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request 
Alice <-- Bob: another authentication Response 
@enduml

在这里插入图片描述

实例2

@startuml sample
用户 -> 认证中心: 登录操作
认证中心 -> 缓存: 存放(key=token+ip, value=token)TitleBorderThickness
用户 <- 认证中心: 认证成功返回token
用户 -> 认证中心:下次访问头部携带token认证
认证中心 <- 缓存: key=token+ip获取token
其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务
其他服务 -> 用户: 信息
@enduml

在这里插入图片描述

声明参与者

使用 participant 关键字来声明一个参与者可以使你对参与者做出更多控制。

关键字 participant 用于改变参与者的先后顺序。

你也可以使用下面这些关键字来声明参与者,这会改变参与者的外观:

• actor(角色)

• boundary(边界)

• control(控制)

• entity(实体)

• database(数据库)

• collections(集合)

• queue(队列)

实例3

@startuml simple
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

在这里插入图片描述

给自己发消息

参与者可以给自己发信息,消息文字可以用来换行。

@startuml sample
A -> A : The first line.\nThe second line.\nThe third line.
@enduml

在这里插入图片描述

改箭头样式

实例4

@startuml sample1
A ->x B : ->x
A -> B : ->
A ->> B : ->>
A -\ B : -\\
A \\- B : \\\-
A //-- B : //--
A ->o B : ->o
A o\\-- B : o\\\--
A <-> B : <->
A <->o B : <->o
@enduml

在这里插入图片描述

对消息序列编号

关键字 autonumber 用于自动对消息编号。

实例5

@startuml simple2
autonumber
A -> B : Authentication request.
B -> A : Authentication response.
@enduml

在这里插入图片描述

分割示意图

关键字 newpage 用于把一张图分割成多张。

在 newpage 之后添加文字,作为新的示意图的标题。

这样就能很方便地在 Word 中将长图分几页打印。

实例6

@startuml simple3
A -> B : send message1.
A -> B : send message2.
newpage A title for the second page.
A -> B : send message3.
A -> B : send message4.
newpage A title for the last page.
A -> B : send message5.
A -> B : send message6.
@enduml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

组合消息1

可以通过以下关键词来组合消息:

片段类型名称说明
Opt选项包含一个可能发生或可能不发生的序列。 可以在临界中指定序列发生的条件。
Alt抉择包含一个片段列表,这些片段包含备选消息序列。 在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。 else 的临界指示其他任何临界都不为 True 时应运行的片段。 如果所有临界都为 False 并且没有 else,则不执行任何片段。
Loop循环片段重复一定次数。 可以在临界中指示片段重复的条件。 Loop 组合片段具有“Min”和“Max”属性,它们指示片段可以重复的最小和最大次数。 默认值是无限制。
Break中断如果执行此片段,则放弃序列的其余部分。 可以使用临界来指示发生中断的条件。
Par并行并行处理。 片段中的事件可以交错。
Critical关键用在 Par 或 Seq 片段中。 指示此片段中的消息不得与其他消息交错。
Seq弱顺序有两个或更多操作数片段。 涉及同一生命线的消息必须以片段的顺序发生。 如果消息涉及的生命线不同,来自不同片段的消息可能会并行交错。
Strict强顺序有两个或更多操作数片段。 这些片段必须按给定顺序发生。

组合消息2

实例7

@startuml simple4
A -> B : 认证请求
alt 成功情况
    B -> A : 认证成功
else 某种失败情况
    B -> A : 认证失败
    group 我自己的标签
        A -> Log : 开始记录攻击日志
        loop 1000次
            A -> B : DNS攻击
        end
        A -> Log : 结束记录攻击日志
    end
else 另一种失败
    B -> A : 请重复
end

opt abc
end
@enduml

在这里插入图片描述

给消息添加注释

可以通过在消息后面添加 note left 或者 note right 关键词来给消息添加注释。

也可以通过使用 end note 来添加多行注释。

实例8

@startuml simple5
A -> B : Hi
note left: This is first note.
A <- B : OK
note right: This is second note.
B -> B : Think
note right
    a note
    can also be defined
    on several lines.
end note
@enduml

在这里插入图片描述

分隔符

通过使用 == 关键词来将你的图表分割成多个逻辑步骤。

实例9

@startuml simple6
== 初始化 ==
A -> B : 请求认证
A <- B : 认证响应
== 重复 ==
A -> B : 请求认证
A <- B : 认证响应
@enduml

在这里插入图片描述

生命线的激活与撤销

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

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

activate 和 deactivate 适用于以上情形。

destroy 表示一个参与者的生命线的终结。

实例10

@startuml simple7
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

在这里插入图片描述

生命线激活、撤销的快捷语法

在指定目标参与者后,可以立即使用以下语法:

• ++ 激活目标(可选择在后面加上 #color)

• – 撤销激活源

• ** 创建目标实例

• !! 摧毁目标实例

实例11
@startuml sample8
participant User
User -> A ++ : DoWork
A -> B ++ : <<createRequest>>
B -> C ++ : DoWork
C -> B : WorkDone
return WorkDone
destroy C
return RequestCreated
'注释掉
'B --> A : RequestCreated
A -> User --: Done
@enduml

在这里插入图片描述

PlantUML介绍

安装java并为其配置环境变量

https://www.oracle.com

从官网下载java,并根据提示步骤安装,安装完成后对环境变量进行配置。

安装graphviz并配置环境变量

http://www.graphviz.org/download/

安装完graphviz后需对其进行环境变量的配置,只需在PATH中添加graphviz的路径。

安装VSCode

https://code.visualstudio.com/

拓展

百度

官网

在线编辑器

十二个开源UML工具

什么是UML,UML类图

UML类图入门,看完基本懂了怎么画图了

PlantUML_Language_Reference_Guide_zh.pdf

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐