Read this post in: de_DEen_USes_ESfr_FRhi_INid_IDjapl_PLpt_PTru_RUvizh_CN

VPASCode PlantUML 指南參考指南

從 VPASCode PlantUML 指南中精選的文章列表,包含 UML 與非 UML 圖形程式碼工作流程的語法指南。


PlantUML 核心與語法基礎

  1. PlantUML 語法基礎:掌握 PlantUML 基礎語法,包括使用 @startuml/@enduml,實體定義、關係運算子、樣式指令與常見關鍵字。學習如何結構化清晰、易讀的 PlantUML 程式碼,自動產生專業圖表。[[34]]

  2. PlantUML 使用案例圖語法指南:學習如何使用 PlantUML 使用案例圖來建模功能需求與參與者互動。涵蓋參與者、使用案例、系統邊界、包含/延伸關係,以及一般化模式,適用於需求文件編寫與使用者故事映射。

  3. PlantUML 類別圖語法指南:使用 PlantUML 類別圖設計靜態系統結構。掌握類別/屬性/方法宣告、可見性修飾符、繼承(<|--),組合(*--),聚合(o--),以及關聯關係,用於物件導向架構文件編寫。[[49]]

  4. PlantUML 序列圖語法指南:模擬系統組件之間的訊息傳遞與時間互動。學習參與者宣告、同步/非同步訊息(->-->),激活條、迴圈、alt/else 區塊,以及建立/停用語法,適用於 API 設計與微服務通訊圖。[[51]]

  5. PlantUML 活動圖語法指南:使用 PlantUML 活動圖語法來視覺化業務流程與演算法工作流程。涵蓋起始/結束節點、動作、條件分支(if/then/else),迴圈(repeat/while),平行分支,以及用於程序邏輯文檔的分割泳道。[[46]]

  6. PlantUML 狀態圖語法指南:建模有限狀態機和物件生命週期轉換。學習狀態宣告、轉移箭頭(-->),進入/離開動作、複合狀態,以及用於事件驅動系統設計與行為規格的併發區域。[[36]]

  7. PlantUML 物件圖語法指南:展示特定時刻的具體物件實例及其執行時關係。掌握物件命名、屬性值指派、連結語法與實例層級關聯,以利除錯與測試情境的視覺化。[[15]]

  8. PlantUML 模組圖語法指南:以模組化軟體架構中的元件、介面與依賴關係進行繪製。學習元件宣告、提供/需求介面(<>),依賴箭頭,以及套件群組,用於微服務與外掛式系統的文件記錄。[[35]]


進階 PlantUML 圖表類型

  1. PlantUML 部署圖語法指南:建模實體基礎設施與執行時部署拓撲。掌握 節點雲端框架資料庫,以及 元件 元素、巢狀容器語法,以及網路協定標籤,適用於 DevOps 操作手冊與雲端架構圖。[[31]]

@startuml
skinparam shadowing false
skinparam defaultFontName "Arial"

' 定義樣式
skinparam node {
BackgroundColor #F1F8FF
BorderColor #005CC5
FontColor #032F62
}

skinparam database {
BackgroundColor #FFF5E6
BorderColor #D96F00
FontColor #5C3000
}

skinparam artifact {
BackgroundColor #E6FFF1
BorderColor #008670
FontColor #004D40
}

left to right direction

' 網路區域 / 節點
node "內容傳輸網路" as cdn <<CDN>> {
artifact "快取靜態資源" as static
}

node "負載平衡器" as lb <<F5 / HAProxy>>

node "應用伺服器" as appServer <<Ubuntu Linux>> {
node "Docker 容器" as docker {
artifact "app.war" as artifactApp
}
}

node "資料庫伺服器" as dbServer <<叢集>> {
database "生產資料庫" as db <<PostgreSQL>>
}

' 連線並標示協定
cdn --> lb : HTTP/HTTPS (連接埠 443)
lb --> artifactApp : HTTP (連接埠 8080)
artifactApp --> db : JDBC / SQL (連接埠 5432)

@enduml

範例:經典的三層架構,顯示 CDN、負載平衡器、含巢狀元件的應用伺服器,以及標示協定的資料庫層級連線。 [[1]]

@startuml

skinparam shadowing false

skinparam defaultFontName "Arial"

skinparam linetype ortho

' 樣式定義

skinparam rectangle {

    BackgroundColor #F4F6F9

    BorderColor #A0AAB2

    FontColor #232F3E

}

skinparam node {

    BackgroundColor #E2F3FC

    BorderColor #4A90E2

    FontColor #111111

}

skinparam database {

    BackgroundColor #FFF2E6

    BorderColor #FF9900

    FontColor #232F3E

}

' 基礎設施入口點

node "AWS Route 53" as dns

node "AWS 應用程式負載平衡器" as alb

dns --> alb : 路由流量

' 全球雲端邊界

rectangle "AWS 雲端區域" {

   

    ' 跨可用性區域的 Kubernetes 叢集邊界

    rectangle "Amazon EKS 叢集" as eks {

       

        ' 可用性區域 1

        rectangle "可用性區域 us-east-1a" as az1 #line.dashed {

            node "EC2 工作節點 (AZ1)" as node1 {

                rectangle "前端 Pod" as podWeb1 <<K8s Pod>> {

                    artifact "Nginx 容器" as containerWeb1

                }

                rectangle "後端 API Pod" as podApi1 <<K8s Pod>> {

                    artifact "Go 應用程式容器" as containerApi1

                }

            }

        }

        ' 可用性區域 2

        rectangle "可用性區域 us-east-1b" as az2 #line.dashed {

            node "EC2 工作節點 (AZ2)" as node2 {

                rectangle "前端 Pod" as podWeb2 <<K8s Pod>> {

                    artifact "Nginx 容器" as containerWeb2

                }

                rectangle "後端 API Pod" as podApi2 <<K8s Pod>> {

                    artifact "Go 應用程式容器" as containerApi2

                }

            }

        }

    }

    ' 共享資料庫層

    rectangle "Amazon Aurora 儲存引擎" as storage {

        database "Aurora 主節點 (寫入者)" as dbMaster

        database "Aurora 副本 (讀取者)" as dbReplica

    }

}

' 路由與流量矩陣

alb --> podWeb1 : HTTP/S (連接埠 80/443)

alb --> podWeb2 : HTTP/S (連接埠 80/443)

podWeb1 --> podApi1 : gRPC (連接埠 50051)

podWeb2 --> podApi2 : gRPC (連接埠 50051)

podApi1 --> dbMaster : TCP (連接埠 5432)

podApi2 --> dbMaster : TCP (連接埠 5432)

dbMaster .right.> dbReplica : 儲存空間自動複寫

@enduml

範例:跨 AWS 可用性區域的雲原生 Kubernetes 部署,包含負載平衡器路由、Pod 巢狀結構,以及共享資料庫叢集。 [[1]]

  1. PlantUML 時序圖語法指南:沿線性時間軸可視化精確的狀態持續時間與時間約束。學習強健/簡潔參與者樣式,@timepoint狀態指派,時鐘波形生成,以及<->嵌入式系統與通訊協定規格的約束註解。[[30]]

@startuml
skinparam handwritten false
skinparam shadowing false
skinparam defaultFontName "Arial"

' 時序圖標題
title 資料匯流排暫存器同步時間軸

' 定義週期性時鐘波形(週期 10 單位,高電平 5 單位)
clock "系統時鐘" as CLK with period 10 pulse 5

' 定義資料匯流排強健參與者
robust "資料匯流排暫存器" as BUS

' 時間 0:暫存器的初始狀態
@0
BUS is Empty

' 時間 10:資料匯流排切換至讀取狀態
@10
BUS is Reading

' 時間 20:資料匯流排切換至寫入狀態
@20
BUS is Writing

' 時間 22:在時間軸上顯示自訂文字標籤
@22
note top of BUS : T_WRITE

' 時間 30:資料匯流排變為鎖定狀態
@30
BUS is Locked

' 時間 35:在時間軸上顯示自訂文字標籤
@35
note top of BUS : T_LOCK

' 時間 40:資料匯流排返回空狀態
@40
BUS is Empty

' 使用明確數值點添加時間約束註解
@22 <-> @35 : {13 TU 持續時間}

@enduml

範例:簡潔的時間軸,顯示資料匯流排暫存器狀態(空 → 讀取 → 寫入 → 鎖定)與週期性系統時鐘波形同步。 [[12]]

@startuml

skinparam shadowing false

skinparam defaultFontName "Arial"

' 多執行緒時序圖標題

title Web 客戶端與驗證工作執行緒同步

' 使用強健參與者樣式宣告時間軸

robust "Web 客戶端執行緒" as CLIENT

robust "驗證工作執行緒" as AUTH

' 時間 0ms:初始空閒狀態

@0

CLIENT is Idle

AUTH is Idle

' 時間 10ms:客戶端觸發驗證請求

@10

CLIENT is "等待驗證"

AUTH is "驗證憑證"

' 時間 25ms:客戶端傳送額外資料 / 驗證開始產生權杖

@25

AUTH is "產生 JWT 權杖"

' 時間 40ms:驗證完成權杖產生並回應客戶端

@40

AUTH is Idle

CLIENT is "已驗證"

' 時間 55ms:客戶端返回預設狀態

@55

CLIENT is Idle

' 30ms 時間約束視窗註解(從 @10 到 @40)

@10 <-> @40 : {30ms 產生視窗}

@enduml

範例:強健的多執行緒時間軸,映射 Web 客戶端與驗證工作執行緒狀態,並標註 30ms 產生視窗的約束。 [[12]]

  1. PlantUML ERD 語法指南:設計實體關係圖以用於資料庫結構文件。掌握實體宣告、屬性類型、主鍵/外鍵符號,以及基數關係(1|o--o{)以進行資料模型設計與 SQL 迁移規劃。

  2. PlantUML ArchiMate 圖形語法指南:使用 ArchiMate 標準建模企業架構層級。學習業務/應用/技術層級元件、動機概念與關係類型,以進行戰略性 IT 規劃與治理文件編製。

  3. PlantUML C4 模型語法指南:實作 C4 模型以在四個抽象層級(情境、容器、組件、程式碼)上進行軟體架構可視化。掌握人員系統容器,以及 組件 具有邊界容器和關係樣式之型別,用於利益相關者對齊的架構溝通。


內嵌圖示說明:VPASCode 文件中的所有 PlantUML 程式碼範例均會在瀏覽器中直接呈現為可互動、可編輯的圖示。上方的 PNG 圖示連結顯示範例圖示的靜態預覽;如需完整互動功能,包括即時編輯、語法驗證以及匯出為 PNG/SVG 格式,請直接造訪各文章的網址:vpascode.com/docs. [[54]]

VPasCode 編輯器功能:每篇文件都包含「在 VPasCode 中編輯 PlantUML」按鈕,可將程式碼範例啟動至 VPasCode 免費的瀏覽器編輯器中——無需登入或安裝。變更會立即以即時渲染方式預覽。[[54]]


參考資料來自 VPASCode 文件。VPasCode 是一個免費的線上瀏覽器編輯器,可用於 PlantUML、Mermaid 和 Graphviz 圖示,無需登入或安裝。 [[54]]

Leave a Reply