解碼每個BPMN符號與網關,以建立清晰的流程圖

業務流程模型與符號(BPMN)作為流程建模的通用語言。它使組織能夠可視化工作流程、定義邏輯,並在技術與非技術團隊之間傳達複雜的操作。然而,圖表的精確性完全取決於符號的正確使用。誤解網關或事件可能導致自動化失敗、合規風險或運營瓶頸。

本指南詳細解析BPMN 2.0的各項元素。我們將探討事件、活動、網關與連接物件的具體功能。目標是確保您的圖表不僅視覺上吸引人,而且邏輯嚴謹,並完全符合標準規範。

BPMN 2.0 Symbol Reference Guide infographic in charcoal sketch style showing four core element categories: Events (start/intermediate/end circles with message, timer, error icons), Activities (rounded rectangles for user/service/manual tasks and sub-processes), Gateways (diamonds with X for XOR, + for AND, o for OR, hexagon for event-based), and Connecting Objects (solid sequence flow, dashed message flow, dotted association lines), plus pool/lane swimlane structure for process modeling clarity

理解核心構建模塊 🧱

BPMN圖表由四個主要類別的元素構成。每一類別在定義業務流程生命周期中扮演獨特的角色。要建立穩健的模型,必須理解外觀相似形狀之間的細微差別。

  • 事件:發生的事。以圓形表示,用來定義流程的開始、中間或結束。
  • 活動:需要完成的工作。以圓角矩形表示,代表任務或子流程。
  • 網關:決策與同步。這些菱形控制流程的走向。
  • 連接物件: 連結所有內容的箭頭。

1. 事件:您流程的脈動 ⏱️

事件是您流程的觸發與結果。它們以圓形表示。圓形邊框的粗細代表事件的類型。理解這些差異對於準確的模擬與執行至關重要。

開始事件 🟢

開始事件標示流程實例的起點。它沒有任何流入的序列流。開始事件的邊框較細。圓形內部的符號定義了觸發流程的條件。

  • 訊息開始: 由接收訊息觸發(例如電子郵件或API呼叫)。以信封圖示表示。
  • 計時器開始: 由時間條件觸發(例如每週一上午9點)。以鐘錶圖示表示。
  • 訊號開始: 由系統廣播的訊號觸發。
  • 錯誤開始: 極少使用,代表由特定錯誤條件觸發的開始。

結束事件 🔴

結束事件標示流程實例的結束。它們沒有任何流出的序列流。邊框較粗,以表示終止。內部符號定義了結果。

  • 訊息結束: 完成時發送訊息。
  • 訊號結束: 向其他流程廣播信號。
  • 錯誤結束: 表示流程因錯誤而結束。
  • 取消結束: 專為事務性流程或子流程設計,表示取消。
  • 終止結束: 立即停止流程的所有執行執行個體,不論其他平行路徑為何。

中間事件 ⚪

中間事件發生在開始與結束之間。它具有流入和流出的順序流。邊框較細,但內部有一個雙線圓形,以區分於開始和結束事件。

  • 捕獲事件: 流程等待某事發生。範例包括捕獲訊息、計時器或信號。流程會暫停,直到條件滿足為止。
  • 拋出事件: 流程產生某種東西。範例包括發送訊息或觸發信號。這通常發生在任務完成後。
  • 補償: 對長時間執行流程中的錯誤進行特殊處理。

2. 活動:定義工作 🛠️

活動代表流程中實際執行的工作。它們以圓角矩形繪製,矩形內的圖示表示活動的具體類型。

任務 📝

任務是工作最小的單位。在圖表的上下文中,無法進一步分解。

  • 使用者任務: 由人類執行者完成的工作。需要人類互動。
  • 服務任務: 由資訊系統或服務執行的工作。無需人類介入。
  • 手動任務: 在現實世界中手動完成的工作,可能在系統外部進行。
  • 腳本任務: 由腳本或程式碼片段執行的工作。
  • 商業規則任務: 由規則引擎或政策執行的工作。
  • 發送/接收任務:用於非同步通訊的特定類型工作。

子流程 📂

當流程過於複雜時,會被拆分成子流程。這以底部帶有加號 (+) 的圓角矩形來表示。

  • 收縮的子流程:顯示加號。詳細資訊被隱藏,以保持主圖表的整潔。
  • 展開的子流程:顯示內部任務與流程。用於詳細文件記錄。
  • 呼叫活動:對其他地方定義的可重複使用流程範本的參考。

3. 網關:邏輯控制器 🔄

網關決定流程的流向。它們是邏輯控制中最關鍵的元件。若未正確使用網關,流程將無法做出決策或處理平行工作流程。

互斥網關 (XOR) ⚡

互斥網關代表一個僅選擇一條路徑的決策點。其外觀為一個內部帶有「X」的菱形。當條件互斥時使用。

  • 邏輯:若條件 A 為真,則走路徑 A;若條件 B 為真,則走路徑 B。僅有一條路徑處於激活狀態。
  • 使用情境:審核流程(核准與駁回),根據資料值進行分支。
  • 預設流程:若無條件相符,則採用預設流程。此流程必須明確標示。

平行網關 (AND) ⚙️

平行網關可同時分割或合併流程。其外觀為一個內部帶有「+」的菱形。

  • 分割:建立多條平行路徑。所有路徑同時執行。
  • 合併:等待所有進入的平行路徑完成後才繼續。
  • 使用情境: 同時發送通知郵件並更新資料庫。在繼續之前等待多個批准。

包含閘道 (OR) 🌐

包含閘道允許選擇一個或多個路徑。它看起來像一個鑽石,內部有一個o在內部。

  • 分流:評估條件。如果條件 A 為真,則路徑 A 激活。如果條件 B 為真,則路徑 B 激活。兩者皆可為真。
  • 匯合:等待所有活躍路徑完成。它不會等待未被選擇的路徑。
  • 使用情境:複雜分支,允許多個選項被選擇(例如,選擇多種運送方式)。

基於事件的閘道 ⚠️

此閘道會等待特定事件發生。它看起來像一個鑽石,內部有一個六邊形。用於等待外部觸發。

  • 邏輯:流程會等待多個事件中的一個發生。一旦某個事件發生,其他可能的路徑將被取消。
  • 使用情境:等待付款確認或逾時到期。

閘道類型比較

閘道類型 符號 分流邏輯 匯合邏輯
排他性 (XOR) 鑽石內的 X 根據條件選擇恰好一條路徑。 匯合單一傳入路徑。
平行 (AND) 鑽石內的 + 同時創建所有路徑。 等待所有傳入路徑完成。
包含性(或) 菱形內部的 o 啟用符合條件的任何路徑。 等待所有活躍路徑完成。
基於事件 六邊形內部 等待任何事件發生。 等待發生的事件。

4. 連接物件:連結流程 🔗

連接器定義資訊與控制在元件之間傳遞的方式。箭頭的樣式表示連接的性質。

順序流 🟦

順序流連接同一流程中的元件。它是一條實線,並帶有開放的箭頭。

  • 功能:表示執行順序。
  • 方向:從上到下,從左到右流動。
  • 用途:連接單一泳道內的任務、事件與閘道。

訊息流 🟧

訊息流連接不同泳道或參與者之間的元件。它是一條虛線,並帶有開放的箭頭。

  • 功能:表示參與者之間的資訊交換。
  • 方向:可跨越泳道與泳道。
  • 用途:從客戶發送請求至供應商。

關聯 🟩

關聯將資料實體或註解連結至流程元件。它是一條虛線,並帶有實心箭頭(或開放箭頭,視方向而定)。

  • 功能:提供背景或資料參考,而不影響流程控制。
  • 使用方式:將文件連結至任務,或將文字備註連結至特定閘道。

5. 池與泳道:組織責任 🏊

複雜的流程涉及多個參與方。BPMN 使用池與泳道來呈現這些關係。

池 🟦

池代表流程中的參與者。它是一個容器,用來存放流程定義。每個池都有其獨立的開始與結束事件。

  • 公開池:代表外部組織或實體。
  • 私人池:代表內部部門或系統。
  • 訊息流:只能發生在不同池之間。

泳道 🟨

泳道是池內的子區塊。它們代表特定的角色、部門或系統,負責該區段的活動。

  • 責任:明確指出誰執行哪項任務。
  • 視覺清晰度:有助於追蹤角色之間的交接。
  • 泳道:常與泳道互換使用,用來描述水平或垂直的區分。

6. 常見模式與反模式 🛑

即使經驗豐富的建模者也會犯錯。識別常見模式與反模式,可確保您的圖表具有持久性與可用性。

無限循環 ⚠️

一個沒有終止條件就返回到先前節點的順序流會造成無限循環。在圖表中,若代表重試機制則可接受,但在執行時會導致系統卡住。

  • 解決方案: 確保迴圈中有計數限制或中斷條件。

孤兒任務

沒有任何流入或流出連接的任務稱為孤兒任務。這表示圖表不完整。

  • 解決方案: 將所有任務連接到邏輯流程路徑上。

遺失的閘道

未正確合併或分支的平行流程可能導致死鎖。如果一個流程分成兩條平行路徑,但只有一條路徑回合并,另一條路徑可能會無限期地掛起。

  • 解決方案: 始終使用平行閘道來合併所有平行分支。

7. 圖示繪製的最佳實務 📏

為維持高品質的流程文件,請遵循這些結構性指南。

命名的一致性

  • 為任務使用清晰、以行動為導向的名稱(例如,審核發票 而非 發票).
  • 根據觸發條件命名事件(例如,發票已收到 而非 開始).
  • 以條件標示閘道(例如,金額 > 1000).

視覺層次

  • 將開始事件放置於上方或左側。
  • 將結束事件放置於下方或右側。
  • 保持流程方向一致(自上而下或自左而右)。
  • 避免線條交叉。使用彎折點來使流程更順暢。

資料物件

  • 將資料以附著於任務的文件圖示來表示。
  • 使用關聯來顯示讀取或寫入的資料。
  • 不要將資料物件放置於序列流程上;它們屬於任務或閘道。

8. 進階閘道邏輯 🧠

高級建模通常需要嵌套的網關或複雜條件。理解不同類型網關之間的互動至關重要。

嵌套網關

將一個網關放置在另一個網關內部可以簡化複雜邏輯。然而,這會增加讀者的認知負擔。

  • 建議: 保持邏輯簡單。如果一個網關需要五個條件,請考慮將流程拆分為子流程。

基於事件的選擇

使用基於事件的網關時,請確保所有等待的事件都是不同的。如果兩個事件可能同時發生,其行為將變得未定義。

  • 建議: 如果存在歧義,請使用明確的邏輯來優先考慮一個事件而非另一個事件。

9. 解決常見符號混淆問題 🤔

即使是專家有時也會混淆相似的符號。以下是常見混淆的快速參考。

任務 vs. 服務任務

  • 任務:人工工作。
  • 服務任務:系統工作。
  • 檢查: 是否需要有人點擊按鈕?如果是,則為任務。如果系統自動執行,則為服務任務。

並行 vs. 包含網關

  • 並行: 所有路徑都會執行。
  • 包含: 選定的路徑會執行。
  • 檢查: 是否可能只有一條路徑執行?如果是,請使用包含網關。如果所有路徑都必須執行,請使用並行網關。

中間捕獲 vs. 投擲

  • 捕獲: 流程會等待。
  • 投擲: 流程會發送。
  • 檢查:箭頭是指向事件(捕獲)還是從事件中指出(拋出)?

10. 實施考量 🚀

雖然本指南專注於符號表示,但這些圖表的實現通常涉及執行引擎。理解符號表示可確保邏輯能轉換為程式碼或工作流程規則。

  • 條件評估: 確保網關條件為可測試的表達式。
  • 逾時: 使用計時器中間事件來追蹤服務水平協議(SLA)。
  • 通知: 使用訊息結束事件來觸發外部警報。

符號規則摘要 📜

遵循BPMN標準可確保您的圖表具有可移植性,並能被任何利益相關者理解。

  • 事件為圓形: 開始(細線),結束(粗線),中間(雙細線)。
  • 活動為圓角矩形: 任務(內部有圖示),子流程(內部有加號)。
  • 網關為菱形: XOR(X),AND(+),OR(o),事件(六邊形)。
  • 連接為線條: 順序(實線),訊息(虛線),關聯(虛線)。
  • 圖示為文件: 數據、群組、註解。

透過掌握這些符號,您將建立流程優化的基礎。清晰的圖表能減少歧義,簡化溝通,並促進精確的自動化。投入學習符號的精力,將在最終業務流程的清晰度上獲得回報。

請記住,圖表是一份合約。如果邏輯不清晰,執行將出現錯誤。定期審查您的模型,以確保它們仍反映當前的業務現實。