PlantUML簡介程序員在工作中,經常會有繪制時序圖、流程圖的需求,尤其是在寫文檔的時候。平時我們會選擇ProcessOn這類工具來繪制,但有時候用代碼來畫圖可能會更高效一點,畢竟沒有比程序員更熟悉代碼的了。今天給大家推薦一款畫圖工具PlantUML,可以配合IDEA使用,畫圖更高效!
PlantUML是一款開源的UML圖繪制工具,支持通過文本來生成圖形,使用起來非常高效。可以支持時序圖、類圖、對象圖、活動圖、思維導圖等圖形的繪制。
下面使用PlantUML來繪制一張流程圖,可以實時預覽,速度也很快!
安裝
通過在IDEA中安裝插件來使用PlantUML無疑是最方便的,接下來我們來安裝下IDEA的PlantUML插件。
使用
時序圖接下來我們使用PlantUML插件分别繪制時序圖、用例圖、類圖、活動圖、思維導圖,來體驗下PlantUML是不是真的好用!
時序圖(Sequence Diagram),是一種UML交互圖。它通過描述對象之間發送消息的時間順序顯示多個對象之間的動态協作。我們在學習Oauth2的時候,第一步就是要搞懂Oauth2的流程,這時候有個時序圖幫助可就大了。下面我們使用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
用例圖
用例圖(Usecase Diagram)是用戶與系統交互的最簡表示形式,展現了用戶和與他相關的用例之間的關系。通過用例圖,我們可以很方便地表示出系統中各個角色與用例之間的關系,下面我們用PlantUML來畫個用例圖。
@startuml
left to right direction
actor Guest as g
package Professional {
actor Chief as c
actor "Food Critic" as fc
}
package Restaurant {
usecase "Eat Food" as uc1
usecase "Pay For Food" as uc2
usecase "Drink" as uc3
usecase "Review" as uc4
}
g--> uc1
g--> uc2
g--> uc3
fc--> uc4
@enduml
類圖(Class Diagram)可以表示類的靜态結構,比如類中包含的屬性和方法,還有類的繼承結構。下面我們用PlantUML來畫個類圖。
@startuml
class Person {
# String name
# Integer age
void move()
void say()
}
class Student {
- String studentNo
void study()
}
class Teacher {
- String teacherNo
void teach()
}
Person <|-- Student
Person <|-- Teacher
@enduml
活動圖(Activity Diagram)是我們用的比較多的UML圖,經常用于表示業務流程,比如電商中的下單流程就可以用它來表示。下面我們用PlantUML來畫個活動圖。
@startuml
title 生成确認單流程
start
:獲取購物車信息并計算好優惠;
:從ums_member_receive_address表中\n獲取會員收貨地址列表;
:獲取該會員所有優惠券信息;
switch(根據use_type判斷每個優惠券是否可用)
case(0)
:全場通用;
if (判斷所有商品總金額是否\n滿足使用起點金額) then (否)
:得到用戶不可用優惠券列表;
stop
endif
case(-1)
:指定分類;
if (判斷指定分類商品總金額\n是否滿足使用起點金額) then (否)
:得到用戶不可用優惠券列表;
stop
endif
case(-2)
:判斷指定商品總金額是否滿足使用起點金額;
if (判斷指定分類商品總金額\n是否滿足使用起點金額) then (否)
:得到用戶不可用優惠券列表;
stop
endif
endswitch
:得到用戶可用優惠券列表;
:獲取用戶積分;
:獲取積分使用規則;
:計算總金額,活動優惠,應付金額;
stop
@enduml
思維導圖(Mind Map),是表達發散性思維的有效圖形工具,它簡單卻又很有效,是一種實用性的思維工具。之前在我的mall學習教程中就有很多地方用到了,下面我們用PlantUML來畫個思維導圖。
@startmindmap
[#17ADF1] mall學習路線
[#lightgreen] 推薦資料
[#lightblue] 後端技術棧
_ 項目框架
_ 數據存儲
_ 運維部署
_ 其他
[#orange] 搭建項目骨架
[#1DBAAF] 項目部署
_ Windows下的部署
_ Linux下使用Docker部署
_ Linux下使用Docker Compose部署
_ Linux下使用Jenkins自動化部署
--[#1DBAAF] 電商業務
---_ 權限管理模塊
---_ 商品模塊
---_ 訂單模塊
---_ 營銷模塊
--[#orange] 技術要點
--[#lightblue] 前端技術棧
--[#lightgreen] 進階微服務
---_ Spring Cloud技術棧
---_ 項目部署
---_ 技術要點
--[#yellow] 開發工具
--[#lightgrey] 擴展學習
@endmindmap
雖然目前可以繪制UML圖的圖形化工具很多,但是對于程序員來說,使用代碼來繪圖可能更直接,效率更高,尤其是配合IDEA使用。如果你想使用代碼來繪圖,不妨嘗試下PlantUML吧。
,來源:公衆号
作者:夢想de星空
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!