
業務流程模型與符號(BPMN)2.0 提供了一種標準化的語言來描述工作流程。雖然內部流程步驟相當直接,但整合組織外部的實體則需要特定的建模技術。外部參與者包括客戶、合作夥伴、第三方系統或監管機構。正確地表示這些互動,可確保流程執行的準確性並促進清晰的溝通。本指南詳細說明了在BPMN 2.0規範內連接外部參與者的機制。
理解邊界 🛑
在建模外部互動時,根本的挑戰在於定義流程的邊界。在BPMN中,一個池代表一個參與者。一個流程通常只有一個池,代表執行工作流程的組織。任何位於此池之外的實體都被視為外部。
- 內部池:包含組織所擁有的活動。
- 外部池:代表與流程互動但不控制其內部邏輯的參與者。
當您建模涉及外部方的流程時,必須區分組織內部發生的事與外部世界發生的事。這種區分決定了用於連接活動的流程類型。
訊息流與順序流 💬
BPMN中最關鍵的區別之一,就是順序流與訊息流之間的差異。混淆這兩者可能導致技術上無效或邏輯上模糊的模型。
- 順序流:代表執行的順序在單一參與者(位於一個池內)內部。這些是實線箭頭。
- 訊息流:代表資訊的交換在兩個參與者(兩個池之間)之間。這些是虛線箭頭。
在連接外部參與者時,必須使用訊息流。在兩個池之間使用順序流是一種建模錯誤。順序流暗示控制,表示上游活動直接觸發下游活動。訊息流暗示溝通,其中一方發送訊息並等待回應或確認。
視覺化表示
| 流程類型 | 方向 | 線條樣式 | 使用情境 |
|---|---|---|---|
| 順序流 | 內部 | 實線 | 同一個池內的活動至活動 |
| 訊息流 | 外部 | 虛線 | 池至池(參與者至參與者) |
| 關聯 | 內部/外部 | 點線 | 連結資料物件或註解 |
外部通訊的事件類型 📨
事件是啟動或終止與外部參與者互動的主要機制。您可以根據時機和意圖對這些互動進行分類。
開始事件
開始事件標示流程的起點。當外部參與者觸發流程時,開始事件通常為訊息開始事件.
- 此事件表示流程會等待收到訊息後才繼續進行。
- 它位於池的最開始位置。
- 進入的訊息流會直接連接到此事件。
例如,客戶發送的訂單確認訊息會啟動履行流程。在訊息到達之前,此流程並不存在。
中間事件
中間事件發生在流程的生命週期中。當流程處於活躍狀態時,它們對於捕捉訊息非常有用。
- 中間捕獲訊息事件: 流程在此處暫停,直到收到特定訊息為止。這在非同步更新中很常見,例如來自銀行系統的付款確認。
- 中間發送訊息事件: 流程在此點發送訊息。當流程需要通知外部參與者狀態變更時使用。
邊界事件
邊界事件附著於活動的邊界上。它們允許您處理例外狀況或逾時,而不會立即停止主要流程。
- 訊息邊界事件: 當流程執行期間,外部參與者發送取消請求時,此事件會捕捉到它。
- 這使得流程能夠對外部干擾做出反應,而無需放棄當前活動。
網關與決策制定 🔀
外部參與者經常透過決策點引入複雜性。流程可能需要根據來自外部來源的回應而分支。網關用來管理這些路徑。
XOR 網關
獨佔網關(XOR)從多個選項中選擇一條路徑。在外部互動的背景下,這通常在收到回應後使用。
- 如果外部系統回傳「成功」訊息,流程將遵循一條路徑。
- 如果訊息顯示「錯誤」,流程將遵循另一條路徑。
- 進入的訊息流必須連接到決策之前的一個網關或事件。
AND 網關
包含式網關允許在條件滿足時同時採取多條路徑。然而,在訊息流中,同步是關鍵。
- 匯合網關會等待所有進入的路徑完成。
- 與外部方通訊時,延遲很常見。您必須確保網關在繼續前等待必要的訊息。
處理非同步性 ⏳
外部互動很少是立即的。系統可能離線,或回應可能需要時間。BPMN 2.0 透過非同步行為來處理此情況。
- 非阻塞: 當流程發送訊息時,除非明確建模為等待,否則不會等待立即回覆。
- 訊息保留: 流程引擎會儲存訊息,直到收到為止。
- 逾時: 如果在設定時間內未收到回應,計時器中間事件可觸發升級。
這對長時間執行的流程至關重要。如果流程為每次外部呼叫都同步等待,將會低效地消耗資源。非同步訊息傳遞允許流程在等待時轉向其他任務。
資料交換與載荷 📦
訊息不僅是信號;它們還攜帶資料。在 BPMN 中,資料由以下項目表示:資料物件 和 資料輸入/輸出.
- 資料物件: 用於表示活動所使用或產生的資訊的視覺符號。
- 資料輸入: 開始活動所需的資訊。
- 資料輸出:活動產生的資訊。
與外部參與者連接時,訊息內容至關重要。您應在訊息規格中記錄預期的資料內容。
| 組件 | 功能 | 外部相關性 |
|---|---|---|
| 訊息 | 資料容器 | 定義介面合約 |
| 資料物件 | 特定資料項目 | 顯示正在傳輸的內容 |
| 關聯 | 連結物件至元素 | 明確資料流動方向 |
常見陷阱須避免 ⚠️
建模外部參與者會帶來特定風險。常見錯誤可能導致流程模型無效或難以執行。
- 使用順序流程連接泳道: 如前所述,這是無效的。跨泳道通訊時,應始終使用訊息流程。
- 遺漏訊息啟動事件: 若流程透過外部輸入啟動,必須使用訊息啟動事件。一般啟動事件表示流程內部啟動。
- 無法達成的路徑: 確保每條涉及外部輸入的路徑都有對應的回應。若流程等待永遠不會到達的訊息,就會產生死鎖。
- 忽略錯誤處理: 外部系統會失敗。應始終使用邊界事件或錯誤結束事件來建模錯誤路徑。
- 泳道過於複雜: 不要為每個外部實體都建立泳道。應將泳道保留給外部實體,僅在必要時使用泳道表示該實體內部的內部角色。
清晰度最佳實務 ✅
為確保技術團隊與業務利害關係人皆能理解模型,請遵循以下指引。
- 清楚標示: 明確命名訊息流程(例如:「訂單確認」、「狀態更新」)。
- 使用協作圖: 對於複雜的多方互動,協作圖通常比單一大型泳道更清晰。
- 分離關注點: 在可能的情況下,將內部流程邏輯與外部介面邏輯分開建模。
- 記錄介面: 為訊息中使用的資料結構附加註解或獨立的技術規格說明。
- 一致的樣式: 對所有訊息流程使用相同的線條樣式和顏色編碼,使其與順序流程區分開來。
外部互動的生命周期 🔁
理解生命周期有助於正確放置相關元素。典型的互動遵循以下順序:
- 啟動: 外部參與方發送訊息。這會觸發訊息開始事件。
- 處理: 內部活動處理資料。若需要更多外部資料,可能會發生中間事件。
- 回應: 流程將訊息回傳給外部參與方。
- 完成: 結束事件標示流程的成功終止。
若流程逾時或收到錯誤,生命周期會以不同方式結束,通常需要補償或取消流程。
外部連接的結論 🎯
建模外部參與方需要精確性。內部控制與外部通訊之間的區別,是有效 BPMN 2.0 圖表的基礎。透過正確應用訊息流程、適當的事件以及明確的邊界定義,您將建立一份準確反映業務現實的藍圖。
在這些領域注重細節可防止執行錯誤,並確保所有利益相關者理解系統如何與更廣泛的世界互動。目標是建立一個不僅視覺正確,而且語義穩健的模型。












