PlantUML 简介
在日常工作中,经常遇到绘制时序图、流程图的需求。在要求不高的时候,可以选择 ProcessOn、Xmind 这类工具,但有时候用代码来画图可能会更高效。PlantUML 是一款开源的 UML 图绘制工具,支持通过文本来生成图形,可以配合 IDEA 使用,支持时序图、类图、对象图、活动图、思维导图等图形的绘制。

安装
在 IDEA 中安装 PlantUML 插件的方式和其他插件的安装方式差不多。首先,在 IDEA 的插件市场中搜索 PlantUML,然后进行安装即可。

当然,在网络不好的时候,也可以点击 Plugin homepage 按钮访问插件主页,然后下载到本地进行安装。

使用
接下来,我们看看如何使用 PlantUML 插件绘制时序图、用例图、类图、活动图、思维导图,以及它们的一些使用技巧。
时序图
时序图(Sequence Diagram),是一种 UML 交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。通常,在系统的 Oauth2 认证时,第一步就是需要搞懂 Oauth2 的流程,这时候有个时序图就非常必要。下面使用 PlantUML 来绘制 Oauth2 中使用授权码模式颁发令牌的时序图。
首先,我们需要新建一个 PlantUML 文件,选择时序图,如下图所示。

接下来,可以通过 PlantUML 提供的语法来生成 Oauth2 的时序图。
@startuml title Oauth2 令牌颁发之授权码模式
actor User as user
participant "User Agent" as userAgent
participant "Client" as client
participant "Auth Login" as login
participant "Auth Server" as server
autonumber
user->userAgent: 访问客户端
activate userAgent
userAgent->login: 重定向到授权页面 +clientId+redirectUrl
activate login
login->server: 用户名 + 密码 +clientId+redirectUrl
activate server
server-->login: 返回授权码
login-->userAgent: 重定向到 redirectUrl+ 授权码 code
deactivate login
userAgent->client: 使用授权码 code 换取令牌
activate client
client->server: 授权码 code+clientId+clientSecret
server-->client: 颁发访问令牌 accessToken+refreshToken
deactivate server
client-->userAgent: 返回访问和刷新令牌
deactivate client
userAgent--> user: 令牌颁发完成
deactivate userAgent
@enduml
然后在 IDEA 面板的右边就会对应的生成如下时序图。






