![A 16:10 hero banner styled graphic featuring a clean, modern illustration. The background is subtle and uses glowing accents, circuit board traces, and digital symbols with blues, greens, and white colors. Vertical columns define main participants like "Card Reader", "ATM Interface", "Bank Server", and "Cash Dispenser" across the top. Arrows with numbered steps (1, 2, 3...) indicate the sequential flow of communication, beginning with a "Customer" actor on the left. Key sections highlight the main decision structures using "alt [PIN Invalid] / [PIN Valid]" and "alt [Insufficient Funds] / [Account Approved]", clearly detailing both successful and alternative paths of interaction. No product logos are included. At the very top center, the main title in clean fonts reads "BUILDING A ROBUST ATM SEQUENCE DIAGRAM" with a subtitle "STEP-BY-STEP PLANTUML GUIDE".](https://www.vpascode.com/wp-content/uploads/2026/08/atm-sequence-diagram-plantuml-guide.jpg)
設計系統性的金融交易需要絕對的清晰度。無論你是設計銀行引擎、記錄遺留的工作流程,還是訓練工程團隊,一個PlantUML 序列圖是可視化系統組件之間時間順序互動最有效的方法之一。
在本教程中,我將帶你一步步了解我建立完整ATM 現金提款序列圖的完整過程,從零開始使用 PlantUML。我們將涵蓋參與者設定、訊息傳遞流程,以及用於錯誤處理的嵌套條件分支——全部使用VPasCode,我們免費的圖形即程式碼工具以及線上PlantUML 編輯器.

步驟 1:設定標題與自動步驟編號
我總是從建立明確的全域設定開始我的 PlantUML 圖表。在模擬 ATM 提款等金融操作時,追蹤執行順序對開發人員和審計人員都至關重要。
為了達成此目標,我首先使用@startuml標籤,定義一個描述性的標題,並啟用autonumber功能。
@startuml
title ATM 現金提款序列圖
autonumber
為什麼要使用autonumber?若無自動編號,審查者必須手動追蹤序列線以理解順序。強制使用順序編號可自動為每個請求與回應編碼,使架構審查時的交叉參考完全輕鬆無負擔。
步驟 2:定義參與者與系統組件
接下來,我識別參與交易的各個獨立實體。我希望將人類參與者與後端組件及硬體子系統分開。
我並非讓 PlantUML 在繪製訊息時隱式宣告參與者,而是明確地在頂部定義它們。這確保它們以邏輯性的從左到右順序出現,反映出其架構邊界:
actor 客戶
participant "ATM 介面" as ATM
participant "卡片讀取器" as Reader
participant "銀行伺服器" as Bank
participant "現金發放機" as Dispenser
設計原理:
參與者 客戶: 代表啟動動作的人類使用者。參與者 ... 作為別名: 為像這樣的短別名進行分配自動櫃員機,讀取器,以及銀行可讓腳本的其餘部分保持乾淨且易於閱讀,而無需重複使用長的顯示字串。- 透過將
讀取器置於客戶與自動櫃員機介面,我準確地反映了在軟體使用者介面互動之前卡片插入的實際順序。
步驟 3:建模初始驗證流程
在宣告參與者後,我開始規劃正常流程的初始化:插入卡片、讀取資料、提示輸入 PIN 碼,並聯繫中央銀行伺服器。
客戶 → 讀取器:插入自動櫃員機卡片
讀取器 → 自動櫃員機:讀取卡片詳細資料
自動櫃員機 → 客戶:提示輸入 PIN 碼
客戶 → 自動櫃員機:輸入 PIN 碼
自動櫃員機 → 銀行:驗證卡片與 PIN 碼
請注意,同步訊息使用實線箭頭(->)。卡片硬體觸發自動櫃員機軟體,該軟體會提示使用者、捕捉輸入,並安全地將驗證憑證傳送到銀行伺服器。
步驟 4:使用alt區塊來結構化驗證分支
現實世界的系統會失敗,因此序列圖必須明確地傳達錯誤狀況。一旦自動櫃員機向銀行請求驗證,就會出現兩種結果:驗證失敗或成功。
為了在 PlantUML 中表示條件邏輯,我使用一個alt / else / end block:
alt PIN 无效
銀行 --> ATM:驗證失敗
ATM -> 客戶:顯示「PIN 無效」訊息
ATM -> 讀卡機:退卡
讀卡機 --> 客戶:歸還卡片
else PIN 有效
銀行 --> ATM:驗證成功
ATM -> 客戶:提示交易選擇與金額
客戶 -> ATM:選擇「提款」並輸入金額
ATM -> 銀行:請求提款授權(金額)
...
end
使用的主要技術:
- 虛線回傳箭頭(
-->)表示非同步回應訊息回傳至呼叫元件。 - 清晰的區塊標籤,例如
[PIN 無效]和[PIN 有效]可立即讓軟體開發人員了解例外流程如何終止(例如顯示錯誤、退卡及歸還硬體)。
步驟 5:帳戶授權與現金發放的巢狀邏輯
一旦驗證通過,使用者便請求提款。然而,銀行必須核對帳戶餘額與每日上限。為表示此二次驗證,我將第二個alt區塊嵌套於PIN 有效分支中。
若資金不足,交易將安全終止。若獲批准,銀行將扣款、觸發現金發放機、交付現金、退卡,並提供可選的列印收據。
alt 資金不足 / 每日上限超額
銀行 --> ATM:交易遭拒絕
ATM -> 客戶:顯示錯誤訊息
ATM -> 讀卡機:退卡
讀卡機 --> 客戶:歸還卡片
else 帳戶已批准
銀行 -> 銀行:扣款帳戶餘額
銀行 --> ATM:交易已批准
ATM -> 發放機:發放現金
發放機 --> ATM:現金準備就緒
ATM -> 客戶:交付現金
客戶 -> ATM:取走現金
ATM -> 讀卡機:退卡
讀卡機 --> 客戶:歸還卡片
ATM -> 客戶:列印收據(可選)
end
專業提示: 注意內部呼叫Bank -> Bank:扣款帳戶餘額。PlantUML 中的自我引用箭頭非常適合強調不涉及外部網路通訊的內部後端狀態更新。
完整的 PlantUML 程式碼
以下是我們 ATM 提款序列圖的完整組合原始碼。您可以直接將此程式碼複製貼上至您最喜愛的免費 PlantUML 編輯器中進行編輯或渲染向量圖形:
@startuml
title 自動櫃員機現金提領序列圖
autonumber
actor 客戶
participant "ATM介面" as ATM
participant "卡片讀取器" as Reader
participant "銀行伺服器" as Bank
participant "現金發放機" as Dispenser
客戶 -> 讀卡器: 插入ATM卡
讀卡器 -> ATM: 讀取卡片資料
ATM -> 客戶: 提示輸入PIN碼
客戶 -> ATM: 輸入PIN碼
ATM -> 銀行: 驗證卡片與PIN碼
alt PIN無效
銀行 --> ATM: 身份驗證失敗
ATM -> 客戶: 顯示「無效PIN碼」訊息
ATM -> 讀卡器: 退卡
讀卡器 --> 客戶: 歸還卡片
else PIN有效
銀行 --> ATM: 身份驗證成功
ATM -> 客戶: 提示選擇交易類型與金額
客戶 -> ATM: 選擇「提領」並輸入金額
ATM -> 銀行: 請求提領授權(金額)
alt 資金不足 / 每日提領上限超過
銀行 --> ATM: 交易被拒絕
ATM -> 客戶: 顯示錯誤訊息
ATM -> 讀卡器: 退卡
讀卡器 --> 客戶: 歸還卡片
else 帳戶核准
銀行 -> 銀行: 扣除帳戶餘額
銀行 --> ATM: 交易核准
ATM -> 發放機: 發放現金
發放機 --> ATM: 現金準備就緒
ATM -> 客戶: 交付現金
客戶 -> ATM: 拿取現金
ATM -> 讀卡器: 退卡
讀卡器 --> 客戶: 歸還卡片
ATM -> 客戶: 列印收據(可選)
end
end
@enduml 
為什麼要使用VPasCode來呈現你的序列圖?
使用程式碼建立複雜圖表,不應需要耗時的本機環境設定或手動命令列編譯。VPasCode由Visual Paradigm推出的VPasCode,可直接在您的瀏覽器中即時呈現並提供強大的AI協助:
- 自動格式偵測:貼上PlantUML、Mermaid、Graphviz或D2程式碼——VPasCode會立即識別DSL格式並即時呈現。
- AI程式碼錯誤修復:卡在語法錯誤上嗎?點擊「由AI修復」以查看透明的並排差異並自動修復語法錯誤。
- 多語言AI翻譯:輕鬆在數秒內將圖表標籤與訊息翻譯成多國語言,方便國際技術團隊使用。
- 高解析度匯出:下載乾淨、可縮放的SVG向量圖形或高解析度PNG圖片,適用於技術文件與簡報投影片。



