PlantUML 活動圖語法指南

什麼是活動圖?

一個活動圖 是一種行為UML 圖 可作為軟體應用程式的高效率、形式化流程圖。作為統一模型語言(UML)規格的重要組成部分,它能清楚地呈現系統元件、業務流程或演算法執行迴圈的逐步操作流程。透過追蹤從初始起點到最終結論的控制流程順序,這種特定的UML 圖類型 協助軟體工程師、產品經理與業務分析師規劃複雜的系統邏輯、辨識邊界案例,並在撰寫任何後端邏輯程式碼之前,以視覺方式區分平行執行路徑。

使用VPasCode,您無需手動排列流程方塊、計算箭頭交叉點或調整版面間距。引擎使用現代化的、類似程式碼的格式標準,可在您撰寫程式時立即產生清晰且高度可讀的版面向量。

核心語法指南:元素與構造

要在 PlantUML 中設計出優雅且符合標準的 UML 活動圖,您必須掌握執行檢查點、活動狀態、條件分支、平行分割與垂直泳道。

1. 執行檢查點與基本活動

與傳統 UML 記法不同,現代活動腳本使用清晰且明確的指令標籤來標示工作流程的邊界。活動節點僅需在冒號與分號之間放置文字即可定義:

start
:初始化應用程式環境;
:載入本機設定快取;
stop

2. 條件邏輯分支(if / else / switch)

根據運作參數來分支您的控制邏輯,請使用標準的程式設計語法迴圈。您可以在括號內附加標籤,以表示箭頭線路通過所需的特定評估條件:

3. 並行執行(fork / join)

在建模現代雲端環境或多執行緒程式碼迴圈時,您經常需要表示同時發生的任務。使用 fork 指令將您的執行流程拆分成獨立的並行路徑,並以 join 標籤將它們重新合併為單一執行緒:

fork
    :產生電子郵件發票;
fork again
    :扣除倉庫庫存;
end fork

4. 使用泳道明確劃分責任

為了明確界定哪個參與者、服務團隊或微服務基礎架構邊界負責特定動作,請使用稱為泳道的垂直分割區。您可透過在管道字元(|泳道標題|):

|客戶應用程式|
start
:點擊購買按鈕;
|#LightBlue 支付網關|
:授權信用卡;

清晰活動流程的最佳實務

  • 使用主動動詞標籤: 透過以行動導向的動詞開頭,讓您的活動文字區塊簡潔明瞭(例如,:解析載荷; 而非 :由工作應用程式解析載荷資料;).
  • 以顏色標示高風險節點: 直接將自訂的十六進位顏色附加到敏感的背景節點上(例如,:#Crimson:清除資料庫記錄;) 以使關鍵步驟在大型企業地圖中視覺上更加突出。
  • 避免線條交叉: 如果您的多分支圖開始顯得雜亂,請使用分離符號(detach) 或終端錨點來插入一個乾淨的圓形連接節點,以分割文字區塊。

現實世界中的 PlantUML 活動圖範例

範例 1:使用者入門與身分驗證(分支與切換)

此範本模擬了一個標準的使用者入門工作流程,包含深入的二元條件邏輯以及在乾淨的 UML 圖表佈局內的身份驗證檢查。

@startuml
start
:使用者提交註冊表單;
if (電子郵件已存在?) then (是)
    :顯示帳戶衝突警告;
    stop
else (否)
    :建立待處理的使用者記錄;
endif

:發送驗證 OTP 碼;
repeat
    :等待使用者輸入 OTP;
backward:記錄失敗嘗試警告;
repeat while (OTP 是否正確?) is (否) not (是)

switch (帳戶選擇等級)
case ( 高級付費 )
    :配置資料庫叢集;
    :觸發 Stripe 訂閱循環;
case ( 免費等級 )
    :套用基本 API 速率限制;
endswitch

:標記使用者個人資料為已驗證;
stop
@enduml

語法解析: 此範本展示了標準的 repeat / backward / repeat while 驗證循環,持續捕捉使用者輸入,直到正確的安全金鑰通過為止。多路徑的 switch 包裝器可乾淨地根據等級狀態值分離帳戶設定邏輯。

範例 2:分散式訂單履行引擎(泳道與平行分支)

此複雜的企業架構地圖利用結構性垂直泳道,精確追蹤自動化結帳流程如何在瀏覽器客戶端、API 網關和實體履行中心之間並行處理任務。

@startuml
|#White|客戶端應用程式|
start
:提交購物車;
:選擇運送地址;

|#LightCyan|結帳 API 引擎|
:驗證產品庫存;
if (庫存充足?) then (否)
    :返回缺貨錯誤;
    stop
else (是)
    :鎖定庫存分配;
endif

fork
    :透過 Stripe 處理付款;
    :產生數位 PDF 收據;
fork again
    |#Lavender|倉儲管理系統|
    :列印實體包裝單;
    :指派倉儲機器人選取員;
end fork

|#LightCyan|結帳 API 引擎|
:發送訂單確認鉤子;
stop
@enduml

語法解析: 使用彩色泳道(例如 |#Lavender 倉儲管理系統|) 強制自動化佈局引擎建立清晰、分離的欄位。平行的 分叉該語句明確顯示,API引擎上的付款處理與實體倉庫中的包裝單生成同時發生,在終端之前順利合併停止區塊。

返回頂端