业务流程模型和标记法

**業務流程模型和標記法**（**BPMN**, **Business Process Model and Notation**）是一套圖形化表示法，用於以業務流程模型詳細說明各種業務流程。

它最初由業務流程管理倡議組織（BPMI, Business Process Management Initiative）開發，名稱為 "Business Process Modeling Notation"，即「業務流程建模標記法」。BPMI 於 2005 年與物件管理組織（OMG, Object Management Group）合併。2011 年 1 月 OMG 發布 2.0 版本，同時改為現在的名稱。

## 概述

業務流程模型和標記法（BPMN, Business Process Model and Notation）是物件管理組織（OMG, Object Management Group）維護的關於業務流程建模的行業性標準。它建立在與 UML 的活動圖非常相似的流程圖法（flowcharting）基礎上，為「業務流程圖」（BPD, Business Process Diagram）中的特定業務流程提供一套圖形化標記法。BPMN 的目標是，通過提供一套既符合業務人員直觀又能表現複雜流程語意的標記法，同時為技術人員和業務人員從事業務流程管理提供支援。BPMN 規範還提供從標記法的圖到執行語言基礎構造的對映，尤其是業務流程執行語言（BPEL）。

BPMN 的首要目的是提供全體業務相關者易於理解的標準標記法。業務相關者包括創造與梳理流程的業務分析師、負責實施流程的技術開發者、以及管理和監督流程的經理人。BPMN 旨在充當公共語言，跨越業務流程設計和實施之間常見的鴻溝。

當前有多種競爭的業務流程建模語言標準供建模過程和工具選用。廣泛採用 BPMN 將有助於統一基本的業務流程概念的表達（例如：公共或私有的流程、編排），就像一些進階的業務概念一樣（例如：例外處理、事務補償）。

## 歷史

BPMN 最初由業務流程管理倡議組織（BPMI, Business Process Management Initiative）開發，該組織於 2005 年與物件管理組織（OMG, Object Management Group）合併，從那時起，由 OMG 維護。BPMN 最初的名稱為 "Business Process Modeling Notation"，即「業務流程建模標記法」，2011 年 1 月 OMG 發布 2.0 版本，同時改為現在的名稱。[1]

## BPMN 基本話題

### 範圍

BPMN 僅限於支援對業務流程有用的建模概念。這意味著組織所做的非業務目的其他類型建模將排除在 BPMN 之外。例如，以下方面的建模不屬於 BPMN 的一部分：

* 組織結構
* 職能分解譯註 2
* 資料模型

此外，雖然 BPMN 會顯示資料的流（訊息）以及活動與資料器物的關聯，但它並非資料流圖（data flow diagram）。

### 要素

BPMN 用很小一套圖形要素做簡單的圖來建模，這將令業務使用者與開發者一樣容易理解其中的過程和流。它的四種基本要素如下：

**流物件（Flow Object）**
: 事件（Events），活動（Activities），閘道器（Gateways）

**連接物件（Connecting Objects）**
: 順序流（Sequence Flow），訊息流（Message Flow），關聯（Association）

**泳道（Swimlanes）**
: 池（Pool），道（Lane）

****器物**（Artifacts/Artefacts）**
: 資料物件（Data Object），組（Group），注釋（Annotation）

這四大類物件令我們有機會做出簡單的業務流程圖（BPD, business process diagram）。同時，BPMN 也允許在 BPD 中建立你自己的流物件、器物類型，使圖更好理解。

### 流物件與連接物件

* * * *

**流物件**（Flow Objects）是 BPMN 的主要描述物件，由三種核心要素（事件、活動、關口）組成。

**事件（Event）**
: 「事件」（Event）以圓環表示，指發生的事情（區分於「活動」代表所做的事情）。圓環中的圖示代表事件的類型（例如：信封為訊息，時鐘為時間）。事件也被分為「擷取」（Catching，例如擷取輸入的訊息而開始一個流程）或「丟擲」（Throwing，例如在流程結束丟擲訊息）。

**開始事件（Start event）**
: 作為流程的觸發器；以細單線標明，並且只能「擷取」（Catch），所以它顯示為空心（輪廓）的圖示。

**結束事件（End event）**
: 表現流程的結果；以粗單線標明，且只能「丟擲」（Throw），所以顯示為實心圖示。

**中間事件（Intermediate event）**
: 表現發生在開始和結束事件之間的事；以雙線標明，可以是「丟擲」或「擷取」（相應採用實心或空心圖示）。例如，一任務流到一事件，丟擲一個訊息到另一個池，然後由下一個事件守候，擷取其回應。

**活動（Activity）**
: 「活動」（Activity）用圓角矩形表示，並描述必需做的工作的種類。

**任務（Task）**
: 任務代表單一工作單元，它不會或不能被分解為更深層次上的業務流程細節，而不包含操作程式步驟的圖示（此非 BPMN 的目的）。

**子流程（Sub-process）**
: 用於隱藏或顯露深層業務流程細節 —— 收起時，在矩形底部用加號標明子流程；展開時，在矩形內顯示全部的流物件、連接物件及器物。

　
: 子流程自含開始及結束事件，來自「父」流程的順序流不可跨過其邊框。

**事務（Transaction）**
: 子流程的一種形式，其所包含的全部活動必須作為一個整體對待，即它們必須完全結束以滿足目標，其中任何一個失敗就必須全部償還（撤回）。事務作為擴充的子流程，用雙線環繞。

**關口（Gateway）**
: 「關口」（Gateway）用菱形表示，基於所示條件決定路徑的分流與合併。

「流物件」通過「**連接物件**」（Connecting objects）互相連接。連接物件包括三個類型（順序、訊息、關聯）：

**順序流（Sequence Flow）**
: 「順序流」用實心線和箭頭表示，顯示活動進行的順序。「順序流」還可以在開始端帶有符號，以小菱形標明其中一些發自活動的「條件流」（conditional flow），同時以對角斜線標明發自活動或決定，帶條件流的「預設流」（default flow）。

**訊息流（Message Flow）**
: 「訊息流」用虛線表示，起始端有一個空心圓圈，終端是一個空心箭頭。它告訴我們哪些訊息流跨過組織的邊界（即介於池之間）。訊息流不可用於在同一個池中連接活動或事件。

**關聯（Association）**
: 「關聯」（Association）用點線表示。它用於建立器物或文字到流物件的聯絡，並且可以用空心箭頭標明某種方向性（指向器物表示結果，源自器物表示輸入，同時出現則表示讀和更新）。當器物或文字聯絡到順序或訊息流時，關聯無需標明方向（那些流已經顯示了方向）。

### 泳道與器物

* * * *

**泳道**（Swimlanes）是從視覺上對活動加以組織或分類的機制。它基於交叉功能流程圖基礎，在 BPMN 中有兩種類型：

**池（Pool）**
: 表示流程中的主要參與者，典型地，用來分開不同的組織。一個池可容納一個或多個道（像真實的泳池一樣）。當池為展開的（顯示出內部細節），繪做大的矩形；若為收起的（隱藏起內部細節），繪做沿著圖的長或寬伸展的空的矩形。

**道（Lane）**
: 在池中，用於活動按職能譯註 3 或角色歸類。繪做按池的長或寬展開的矩形。道包含流物件、連接物件和器物。

 
**器物**（Artifacts）使開發者可以帶給模型／圖更多的資訊，通過這一方式，使模型／圖更可讀。預定的三種器物如下：

**資料物件（Data Objects）**
: 「資料物件」向讀者顯示在活動中需要或產生哪些資料。

**組（Group）**
: 組表現為虛線的圓角矩形。組用來將不同的活動分組，但不影響圖中的流。

**注釋（Annotation）**
: 注釋為模型／圖的讀者增加可理解性。

### 業務流程圖的類型

* 點擊小圖檢視全尺寸圖
* * * *

在 BPMN 的三種子模型之內和之間，可以建立各種類型的圖。以下列出的是能夠用 BPMN 建模的業務流程類型（其中帶星號的可能無法對映到執行語言）：

* 高層次私有流程的活動（非職能分解）\*
* 細節私有流程（Detailed private business process）
* 當前或過往的業務流程 \*
* 未來或新業務流程
* 與一個或多個外部實體互動的細節私有業務流程（或「黑盒子」流程）
* 兩個或更多細節私有業務流程的互動作用
* 細節私有業務流程到抽象流程的聯絡
* 細節私有業務流程到協同運作流程的聯絡
* 兩個或更多抽象流程 \*
* 抽象流程與協同運作流程的關係 \*
* 單獨的協同運作流程（例如：ebXML BPSS 或 RosettaNet）\*
* 兩個或更多細節私有業務流程通過抽象流程的互動作用
* 兩個或更多細節私有業務流程通過一個協同運作流程的互動作用
* 兩個或更多細節私有業務流程通過抽象與寫作流程的互動作用

BPMN 的設計目標是允許上述全部類型的圖。然而，需要小心的是，包含了太多的子模型類型，例如三種或更多的私有流程之間都有訊息流連接，這樣的圖可能會變得難以理解。因而，我們建議建模者為諸如私有流程、協同運作流程的 BPD 建立明確的目標。

### BPMN 2.0

BPMN 2.0 為新的業務流程模型和標記法建立單一規範，對標記法、元模型和交換格式做出界定。2.0 版的名稱有所修改，但仍會維持「BPMN」這個標誌。特徵包括：

* 結合 BPMN 和業務流程定義元模型（BPDM），形成單純一致的語言
* 使能在建模工具間交換業務流程模型及其布局，以保持語意完整性
* 擴充 BPMN 以允許將模型組態與編排成獨立或整合的模型
* 支援模型上不同透視法的顯示和交替，令使用者可以聚焦於特定的關注點
* 串行化 BPMN，為模型轉換提供 XML 方案（schemes），向執行決策支援方向擴充業務模型。

BPMN 2.0 在 2011 年 1 月發布。

## BPMN 的使用

業務流程建模用於傳達廣泛而多樣的資訊給廣泛而多樣的受眾。BPMN 的設計就是為了覆蓋這種廣泛的用途，並且允許端到端的業務流程建模，從而令圖的觀察者能夠方便地區分一個 BPMN 圖上的不同部分。在一個端到端的 BPMN 模型中有三種基本的子模型：「私有」（內部的）業務流程、「抽象」（公共的）流程，和「協同運作」（全域的）流程：

**私有（Private；內部的）業務流程**
: 私有業務流程是指特定組織內部且通常被稱為工作流或業務流程管理（BPM）流程的一類流程。如果用了泳道，則一個私有業務流程將包容在單個的池中。該流程的順序流完全包含在其池之中，不可跨越邊界。訊息流可以跨越池的邊界，顯示不同的私有業務流程間的互動作用。

**抽象（Abstract；公共的）流程**
: 表示私有業務流程與其它流程或參與者之間的互動。只有那些通訊範圍超出私有業務流程的活動包括在抽象流程中。剩下那些私有業務流程的「內部」活動不顯示在抽象流程中。即，抽象流程向外部世界顯示訊息序列，這些訊息序列是與其業務流程互動所必須的。抽象流程可包含在一個池中並單獨建模，或包含在一個大的 BPMN 圖中顯示抽象流程活動與其它實體之間的訊息流。如果一抽象流程與其對應的私有流程在同一個圖中，則其活動對可關聯的流程雙方是共享的。

**協同運作（Collaboration；全域的）流程**
: 協同運作流程刻畫兩個或更多業務實體之間的互動作用。這些互動作用定義為活動序列，這些活動序列表示所涉及實體之間的訊息交換模式。協同運作流程也可能包容在一個池中，不同參與者的業務互動作用顯示為該池中的道。在這種情形下，每個道將代表兩個參與者和他們之間的移動方向。它們也可以顯示為兩個或更多的抽象流程，通過訊息流互動作用（如上一節所描述）。這些流程可以獨自建模，或者在一個大的 BPMN 圖中顯示協同運作流程活動和其它實體間的關聯。如果協同運作流程在同一個圖中作為協同運作的私有業務流程，則其活動對可關聯的流程雙方是共享的。

## BPMN 的弱點

BPMN 的弱點涉及以下方面：

* 在共享的 BPMN 模型中的歧義與混淆
* 對例行工作的支援
* 對知識工作的支援
* BPMN 模型到執行環境的轉換

## 譯註

## 參考文獻

## 外部連結

1. BPMN Information Home Page（頁面存檔備份，存於網際網路檔案館） OMG information page for BPMN.
2. BPMN 1.1 Poster - Poster showing all BPMN constructs