PlantUML Integration 可以直接在 IDE 中查看和编辑 PlantUML 图表。
各种主题
PlantUML 内置了 30 多种主题,可以通过 help themes 命令查看内置主题列表。
1 2 3
@startuml help themes @enduml
在文件开头可以通过指令 !theme 来指定需要的主题名称。
1 2 3 4 5 6 7 8 9
@startuml !theme mars title 这是图的主题 header 页眉内容 footer 页脚内容 Alice -> Bob: 认证请求 Bob -> Bob: 认证处理 Bob -> Alice: 认证接受 @enduml
Hello World
通过-> 、-->和 :就可以在参与者之间传递消息,不用明确声明参与者。
1 2 3 4 5 6 7
@startuml 老张 -> 老王 : 老王,你好啊 老王--> 老张: 老张,你好啊
老张 -> 老王: 最近有空一起喝茶 老张 <-- 老王: OK @enduml
声明参与者
使用关键字participant来声明参与者,就可以对该参与者进行更多的控制。
声明的顺序就是默认的显示顺序。
也可以用这些关键字来声明参与者,给参与者设置不同的形状。
actor(角色)
boundary(边界)
control(控制)
entity(实体)
database(数据库)
collections(集合)
queue(队列)
还可以通过 as关键字重命名参与者。
1 2 3 4 5 6 7 8 9 10
@startuml 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 @enduml
默认的颜色比较单调,也可以通过#来设置参与者的颜色:
1 2 3 4 5 6 7 8 9 10 11
@startuml actor Bob #blue ' The only difference between actor 'and participant is the drawing participant Alice #SkyBlue participant "I have a really\nlong name" as L #00ff00
@startuml 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
生命线的嵌套与颜色:
还可以使用嵌套激活条来表示内部调用,并可以给生命线添加颜色。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
@startuml participant User User -> A: DoWork activate A #FFBBBB A -> A: Internal call activate A #DarkSalmon A -> B: << createRequest >> activate B B --> A: RequestCreated deactivate B deactivate A A -> User: Done deactivate A @enduml
自动激活:
在发送消息时自动显示激活条。
1
A->B++: 激活B并发送消息
自动去激活:
在接收回应时自动隐藏激活条。
1 2
A->B++: 激活B并发送消息 A <--B--: B去激活并回应消息
分组:
用于逻辑上分组一系列交互。
1 2 3 4
group 分组名 A -> B: 消息 ... end group
分组设置颜色:
1 2 3 4
group #LightGray 补充上下文信息 NewTaskCreate -> NewTaskCreate:<color:red>补充五元组信息<color:red> NewTaskCreate -> NewTaskCreate:补充其他上下文 end group
替代(Alt/Else):
表示基于条件的替代执行流程。
1 2 3 4 5
alt 条件1 A -> B: 满足条件1的消息 else 条件2 A -> B: 满足条件2的消息 end
注释
注释用于添加说明性文本。
可以用note left of,note right of或note over来控制注释相对节点的位置。
actor 用户 as c #DeepSkyBlue participant "客户端" as client participant "服务网关" as ga participant "用户服务" as user database "数据库" as DB #DeepSkyBlue participant "Google服务" as google #LightCoral
activate c #DeepSkyBlue activate client #DeepSkyBlue
c->client:用户登录
group#LightCoral #LightCoral Google登录客户端流程 client -> google : 请求Google OAuth登录 activate google #DeepSkyBlue google-->client:登录url client->google:跳转登录页 google -> google : 用户登录 google --> client : Google登录Token deactivate google end
|||
client -> ga : 登录请求 note right#LightCoral:新增登录方式,三方登录请求实体 activate ga #DeepSkyBlue ga ->user:请求转发 activate user #DeepSkyBlue
alt#DeepSkyBlue 常规登录 user -> DB : 查询用户信息 activate DB #DeepSkyBlue DB -> user : 用户信息 deactivate DB user->user:登录密码校验
||| else Google登录 group#LightCoral #LightCoral Google登录服务端流程 user->google:验证token activate google #DeepSkyBlue google-->user:用户信息 deactivate google user->user:存储或更新用户信息 end group end
user-->ga:登录结果 deactivate user ga -> client : 响应 deactivate ga alt#DeepSkyBlue 成功 client -> c : 登录成功 else 失败 client -> c : 登录失败 end deactivate client ||| @enduml