BPMN 業務流程圖

關於 BPMN 圖表

BPMN 圖表記錄業務流程——跨角色、部門和系統發生的活動、決策、事件和訊息交換。它是企業 BPM、ISO-9001 / SOX 稽核和流程挖掘工具中的主導符號。唯一官方序列化格式是 BPMN 2.0 XML,但其格式冗長,對 LLM 生成不友善;Schematex 提供緊湊的文字 DSL,可產生符合標準的視覺子集。

Schematex 針對真實業務分析師實際繪製的元素實作 OMG BPMN 2.0.2 / ISO/IEC 19510:2013:池(pool)、泳道(lane)、事件(start / intermediate / end,帶 none / message / timer 觸發器)、活動(帶標記的任務 + 折疊子流程)、閘道(XOR / OR / AND / 基於事件)以及順序流 / 條件流 / 預設流 / 訊息流。

注意 — Schematex 是渲染函式庫,而非流程執行引擎。沒有 token 模擬、沒有 XML 來回轉換,也沒有 DI(圖表交換)層。v0.1 涵蓋大多數團隊使用的視覺子集;邊界事件、展開的子流程和罕見觸發器類型(取消 / 補償 / 升級 / 訊號 / 連結)延後至 v0.2+ 處理。

bpmn·§
↘ preview
100%
Loan Application Approval BPMN LR — 1 pool(s), 8 flow object(s). Bank Clerk Underwriter yes no approve reject Application received Check completeness Complete? Risk score Underwriter review Decision Approved Rejected
UTF-8 · LF · 28 lines · 469 chars✓ parsed·6.0 ms·8.2 KB SVG

1. 你的第一個 BPMN 圖表

三個區段:一行 bpmn 標頭、一個或多個 pool { … } 區塊、以及一個 flows 區塊。在每個 pool 內放 lane { … } 區塊,在每個 lane 內用 id: kind "label" 列出流程物件。

bpmn·§
↘ preview
100%
BPMN diagram BPMN LR — 1 pool(s), 3 flow object(s). Service Worker Request Process Done
UTF-8 · LF · 12 lines · 129 chars✓ parsed·0.8 ms·3.3 KB SVG

每個流程物件以 id 開頭,接著是冒號、kind、選用的子關鍵字(觸發器 / 標記 / 閘道類型),以及引號 label。Id 在流程線中被引用。


2. 池(Pool)與泳道(Lane)

pool 代表一個參與者——組織、部門或系統。lane 將 pool 細分為角色。pool 標籤在水平 pool 的左緣旋轉 90° 渲染。

pool "Customer" blackbox          // black-box pool — no internal flow
pool "Bank" {
  lane "Clerk" { … }
  lane "Underwriter" { … }
}

黑盒 pool 是你不對其內部流程建模的參與者——通常是外部客戶或合作夥伴。黑盒 pool 必須不含任何流程物件(Schematex 在解析器中強制執行此規則)。

順序流(-->不允許跨越 pool 邊界。跨 pool 通訊請使用訊息流(~~>)。


3. 事件

事件是圓形。筆觸粗細編碼生命週期角色:

類型筆觸DSL
開始細(1px)start
中間細雙環intermediate
結束粗(3px)end

選用的觸發器關鍵字新增內部圖符。v0.1 支援三種最常見的觸發器——none(無圖符)、message(信封)和 timer(時鐘面):

A: start                       // none-trigger
A: start message "Inbound"     // message-catch (unfilled envelope)
T: intermediate timer "60 min" // timer (clock face)
F: end "Done"

填充圖符 = 投送(throw),空心圖符 = 捕捉(catch)。Schematex 根據事件類型自動選擇正確的填充方式。


4. 活動——任務與子流程

活動是圓角矩形。v0.1 的兩種形式是 task折疊子流程(+ 標記表示可展開的細節):

B: task "Generic abstract task"
U: task user "User decides"
S: task service "API call"
SE: task send "Send email"
RE: task receive "Wait for reply"
M: task manual "Hand-stamp the form"
SC: task script "Run rule engine"

X: subprocess "Verify identity" collapsed

任務標記(左上角小圖示)傳達誰或什麼執行工作——人員(user)、軟體服務(service)、外送訊息(send)、等待入站(receive)、系統外的手動步驟(manual),或自動化腳本(script)。若不確定,省略標記——預設為抽象類型。


5. 閘道

閘道是菱形。內部圖符編碼分支語義:

類型圖符意義DSL
排他(XOR)X恰好走一條出口路徑(資料導向)gateway xor
包含(OR)O走一條或多條出口路徑gateway or
並行(AND)+同時走所有出口路徑gateway and
基於事件五邊形-在-圓內選擇最先觸發事件的路徑gateway event

Schematex 預設使用 Bruce Silver 的 X 圖符表示 XOR——這是真實 BPMN 稽核所期望的慣例。大多數圖表使用 XOR(資料分支)和 AND(並行分裂 / 合併);OR 較少見,基於事件的主要出現在競態條件模型中。


6. 連接線

四種連接線類型。其中三種在 pool 內使用;只有訊息流允許跨越 pool 邊界。

A --> B                  // sequence flow (default)
G --? "yes" --> C        // conditional sequence (label is a guard)
G --* "default" --> D    // default flow (one per gateway, max)
"Customer" ~~> A : "Submit application"   // message flow
E ~~> "Customer" : "Notify approval"      // message flow back
  • --> 是主力——實線 + 實心三角箭頭。
  • --? "label" --> 在來源處新增小空心菱形。當從活動直接離開並帶有守護條件時使用。(在閘道處,條件標籤已足夠;不繪製菱形圖符。)
  • --* "label" --> 在來源處新增斜線標記。每個閘道最多一條預設流——Schematex 強制執行此規則。
  • ~~> 是虛線 + 空心箭頭,來源處帶小空心圓。來源或目標可以是引號pool 名稱(用於黑盒參與者)或物件 id。

7. 驗證

解析器拒絕違反 BPMN 語義的圖表,並提供行號錯誤:

規則錯誤
順序流跨越 poolsequence flow 'A --> B' crosses pool boundary — use message flow (~~>)
訊息流在同一 pool 內message flow 'A ~~> B' must cross pool boundaries
黑盒 pool 有內部元素black-box pool "X" cannot contain lanes
同一閘道兩條預設流gateway 'G' has 2 default flows (max 1)
pool 內 id 重複duplicate id 'A'
未知的來源 / 目標unknown source 'X' in sequence flow

這些檢查在解析時觸發,因此 LLM 在佈局過程之前就能獲得可用的錯誤訊號。


8. 較大範例——披薩訂單與黑盒客戶

一個標準的 BPMN 教學範例:外部客戶(其流程我們不建模)向比薩店下訂單,比薩店分為 Clerk / Chef / Delivery 泳道,Chef 的品質檢查有返工迴路。

bpmn·§
↘ preview
100%
Pizza order BPMN LR — 2 pool(s), 7 flow object(s). Customer Pizzeria Clerk Chef Delivery yes no Place order Pizza delivered Order received Take order Make pizza Pizza ok? Rework Deliver Done
UTF-8 · LF · 32 lines · 485 chars✓ parsed·1.9 ms·9.1 KB SVG

返工迴路(D --> C)建立了一條回邊,佈局的循環斷路透過 DFS 偵測——最長路徑分層隨後在前向 DAG 上進行,使欄位保持合理。


9. v0.1 的限制

以下功能延後至後續版本。如果你的圖表需要其中之一,請附上使用案例開 issue:

  • 邊界事件 — 附加到活動邊緣的事件(計時器、錯誤、升級、補償)。目前你必須將邊界建模為自由浮動的中間事件並手動連接流程。
  • 展開的子流程 — 折疊的 subprocess 可用;展開的內嵌區塊(subprocess "X" { … })延後處理。
  • 罕見事件觸發器 — 錯誤 / 升級 / 取消 / 補償 / 訊號 / 連結 / 條件 / 多重 / 並行多重。暫時使用 nonemessage 作為佔位符。
  • 交易 / 呼叫活動 — v0.1 渲染為普通任務。
  • 迴路和多重實例標記 — 活動底部中央的圖符;延後處理。
  • 人工標記(Artifact) — 資料物件 / 資料儲存 / 群組 / 文字注解。延後處理。
  • BPMN 2.0 XML 匯入 / 匯出 — 超出範圍。Schematex 從 DSL 計算佈局;沒有 DI 層可供來回轉換。

相關範例

來自範例庫的即用情境:

bpmn·§ OMG BPMN 2.0.2 / ISO/IEC 19510:2013
Pizza order BPMN LR — 2 pool(s), 7 flow object(s). Customer Pizzeria Clerk Chef Delivery yes no Place order Pizza delivered Order received Take order Make pizza Pizza ok? Rework Deliver Done
Pizza order with black-box customer (BPMN)
Two-pool BPMN — external Customer (black-box) and a Pizzeria with Clerk / Chef / Delivery lanes. Exercises message flows across pools, manual / send task markers, and a rework loop on the chef's quality check. Canonical BPMN test case 7.1.
retail
bpmn·§ OMG BPMN 2.0.2 / ISO/IEC 19510:2013
Production incident response BPMN LR — 2 pool(s), 13 flow object(s). Monitoring Engineering On-call L1 On-call L2 Comms P1 P2-P3 info Alert Status Page received Acknowledge Triage Severity? Investigate Root cause Implement fix Deploy patch Status page 30 min Update users Post-mortem Resolved
Production incident response (BPMN)
Three-lane BPMN of an on-call rotation handling a production page — L1 triage, L2 investigation, and a Comms lane that posts status updates. Exercises timer intermediate event, severity-based XOR routing, and a self-loop on the triage gate.
software & it

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.