本文部分摘自https://www.cnblogs.com/lighten/p/5931207.html
- BPMN 代表業(yè)務(wù)流程建模符號,他是OMG維護的公共標準。它描述了業(yè)務(wù)流程分析和業(yè)務(wù)用戶可用于為業(yè)務(wù)流程建模并支持流程交互,異常處理,薪酬語義等的業(yè)務(wù)友好型流程圖
- BPMN它被商業(yè)和開源BPMS工具供應(yīng)商廣泛接受。它具有很強的適應(yīng)性,可用于捕捉從抽象過程概述到詳細過程流程到實施準備過程的所有內(nèi)容。BPMN的一個主要價值主張除了是圖表標準外,還有圖表背后的精確語義。形狀,符號(也稱為標記),邊界,BPMN圖元素的位置以及它們的屬性具有明確定義的含義,并且必須由所有工具以相同的方式進行解釋。
一、 流對象(Flow Objects)
1.1事件(Events)
事件都是用一個圓圈來代表的,影響流程的流動,一般有一個原因(trigger)或者一個影響(result)。標準定義了三種事件:開始,中間和結(jié)束。從定義和分類名稱上來看也能猜到事件的作用了,控制流程的開始,中間流轉(zhuǎn)和結(jié)束,這些控制可能采取觸發(fā)器(trigger)來完成,或者是導(dǎo)致一個結(jié)果(結(jié)束或拋出)。
- 開始事件
| 中文 | 英文 | Trigger(原因) | Marker(標記) |
|---|---|---|---|
| 開始事件 | Start Event | None (沒有) |
![]() |
| 條件開始事件 | Conditional start event | Conditional (條件句) |
![]() |
| 消息開始事件 | Message start event | Message (消息) |
![]() |
| 多重啟動事件 | Multiple start event | Multiple (多重的) |
![]() |
| 多重并行開始事件 | Parallel multiple start event | Parallel Multiple (多重并行) |
![]() |
| 信號開始事件 | Signal start event | Signal (信號) |
![]() |
| 定時開始事件 | Timer start event | Timer (定時) |
![]() |
- 中間事件
| 中文 | 英文 | Trigger(原因) | Marker(標記) |
|---|---|---|---|
| 中間事件 | None Intermediate Event | None | ![]() |
| 消息事件 | Message Intermediate Event | Message | ![]() |
| 定時事件 | Timer Intermediate Event | Timer | ![]() |
| 升級事件 | Escalation Intermediate Event | Escalation | ![]() |
| 補償事件 | Compensation Intermediate Event | Compensation | ![]() |
| 條件事件 | Conditional Intermediate Event | Conditional | ![]() |
| 鏈接事件 | Link Intermediate Event | Link | ![]() |
| 信號事件 | Signal Intermediate Event | Signal | ![]() |
| 多重事件 | Multiple Intermediate Event | Multiple | ![]() |
| 并行多重事件 | Parallel Multiple Intermediate Event | Parallel Multiple | ![]() |
中間事件遠不止這些
- 結(jié)束事件 End Event
結(jié)束事件必須是一個順序流的目標,不能是源頭,可以有多個順序流指向同一個結(jié)束流。一個流程可以有多個結(jié)束事件,也可以沒有結(jié)束事件,但是如果存在開始事件,就必須有至少一個結(jié)束事件。如果不使用結(jié)束事件,那么所有流對象沒有任何流出序列(順序)流(即不同為一個源序列流)來標志流程過程結(jié)束。流程不會結(jié)束,直到所有的并行路徑完成了。
| 中文 | 英文 | Trigger(原因) | Marker(標記) |
|---|---|---|---|
| 結(jié)束事件 | None End Event | None | ![]() |
| 消息結(jié)束事件 | Message End Event | Message | ![]() |
| 錯誤結(jié)束事件 | Error End Event | Error | ![]() |
| 升級結(jié)束事件 | Escalation End Event | Escalation | ![]() |
| 取消結(jié)束事件 | Cancel End Event | Cancel | ![]() |
| 補償結(jié)束事件 | Compensation End Event | Compensation | ![]() |
| 信號結(jié)束事件 | Signal End Event | Signal | ![]() |
| 終止結(jié)束事件< | Terminate End Event | Terminate | ![]() |
| 多重結(jié)束事件 | Multiple End Event | Multiple | ![]() |
1.2活動(Activities)
-
Task 任務(wù)
task在流程中是一個原子性的活動,當流程中的作業(yè)不能被打斷時task被作用一個更細級別的細節(jié)。通常,一個終端用戶或者應(yīng)用其執(zhí)行操作變現(xiàn)為task形式。task對象在子流程中具有相同的形狀,都是長方形有著圓角。
有三種特殊的task圖標:循環(huán)、多重和補償,一個task可能會有一個或兩個這類圖標。
其他的task
| 中文 | 英文 | 圖標 |
|---|---|---|
| 服務(wù)任務(wù) | Service Task | ![]() |
| 發(fā)送任務(wù) | Send Task | ![]() |
| 接收任務(wù) | Receive Task | ![]() |
| 用戶任務(wù) | User Task | ![]() |
| 手工任務(wù) | Manual Task | ![]() |
| 業(yè)務(wù)規(guī)則任務(wù) | Business Rule Task | ![]() |
| 腳本任務(wù) | Script Task | ![]() |
這些任務(wù)中,需要人參與自身完成的有Manual Task 和UserTask。Manual Task是一個不受任何商業(yè)流程引擎管理的任務(wù),User Task是。不受管理即意味著流程引擎無法追蹤器任務(wù)的開始和完成。舉個例子,這個可能就是一張充滿指令的紙,為電話技術(shù)人員幫顧客安裝電話
-
Sub-Processes 子流程
子流程是一個活動的內(nèi)部細節(jié)建模,使用活動、事件和網(wǎng)關(guān)以及序列流。子流程是流程內(nèi)部的一個圖形對象,但是它也能夠被打開來展現(xiàn)更低一層的流程。子流程定義了一個上下文范圍,可用于屬性可見性、事務(wù)的范圍,異常處理,事件或者是補償。
BPMN定義了五種子流程,其中Collapsed Sub-Process可以被另外四種組合取代。另外四種是loop、multi-instance、Compensation、Ad-Hoc。
用法實例:
-
Call Activity 調(diào)用活動
調(diào)用活動確定使用了全局流程或者全局任務(wù)的流程中的一點。調(diào)用過程用作為包裝器來調(diào)用全局流程或全局任務(wù)執(zhí)行中。激活調(diào)用活動將導(dǎo)致稱為全局流程或者全局任務(wù)的控制轉(zhuǎn)移。
調(diào)用活動必須滿足數(shù)據(jù)要求,同時調(diào)用CallableElement返回數(shù)據(jù)。這意味著在活動的InputOutputSpecification中需要包含這些元素,并且必須精確的和CallableElement的元素匹配。這些元素包括:DataInputs、DataOutputs、InputSets、OutputSets。
1.3 網(wǎng)關(guān)(Gateways)
網(wǎng)關(guān)用于控制序列流如何在一個流程中收斂和發(fā)散的交互。如果一個流程不需要控制,那么網(wǎng)關(guān)就是非必需的?!熬W(wǎng)關(guān)”一詞意味著有一個門機制。允許或不允許通過網(wǎng)關(guān)——也就是說,執(zhí)行到網(wǎng)關(guān)的時候,當網(wǎng)關(guān)機制被調(diào)用,輸入可以被合并在一起,或者輸出分離成若干部分。
| 中文 | 英文 | Trigger(原因) | Marker(標記) |
|---|---|---|---|
| 互斥網(wǎng)關(guān) | Exclusive Gateway | ![]() |
|
| 事件網(wǎng)關(guān) | Event-Based Gateway | ![]() |
|
| 并行事件網(wǎng)關(guān) | Parallel Event-Based Gateway | ![]() |
|
| 相容網(wǎng)關(guān) | Inclusive Gateway | ![]() |
|
| 復(fù)雜網(wǎng)關(guān) | Complex Gateway | ![]() |
|
| 并行網(wǎng)關(guān) | Parallel Gateway | ![]() |
二、 數(shù)據(jù)(Data)
傳統(tǒng)的流程建模要求能夠模擬物品(物理或信息的)在流程中的創(chuàng)建、操作和執(zhí)行過程。重要的方面就是能夠捕獲數(shù)據(jù)的結(jié)構(gòu),并且查詢或者操作結(jié)構(gòu)。
BPMN本身并不提供內(nèi)置的模型來描述數(shù)據(jù)結(jié)構(gòu)或查詢數(shù)據(jù)的語言表達式。相反,它規(guī)范hooks來允許使用外部定義的數(shù)據(jù)結(jié)構(gòu)和表達式語言。此外,在同一個模型中,BPMN允許不同的數(shù)據(jù)結(jié)構(gòu)和表達式語言。這些語言的兼容性和驗證是在規(guī)范的范圍之外,變成了工具供應(yīng)商的職責(zé)。
BPMN使用XML Schema和XPath作為其默認的數(shù)據(jù)結(jié)構(gòu)和表達式語言,但是供應(yīng)商可以自由替換他們自己的語言。
| 中文 | 英文 | 圖標 |
|---|---|---|
| 數(shù)據(jù)對象 | Data Object | ![]() |
| 集合型數(shù)據(jù)對象 | collection DataObject | ![]() |
| 數(shù)據(jù)存儲 | Data Store | ![]() |
| 輸入數(shù)據(jù) | Data Input | ![]() |
| 輸出 | Data Output | ![]() |
三、連接對象(Connecting Objects)
| 中文 | 英文 | 說明 | 圖標 |
|---|---|---|---|
| 順序流 | Sequence Flow | 序列流用于顯示活動將在流程中執(zhí)行的順序 | ![]() |
| 消息流 | Message Flow | 消息流用于顯示準備發(fā)送和接收消息的兩個參與者之間的消息流,在BPMN中,協(xié)作圖中的兩個獨立池將表示這兩個參與者 | ![]() |
| 聯(lián)想 | Association | 關(guān)聯(lián)用于將信息和構(gòu)件與BPMN araphical元素鏈接起來。文本注釋和其他工件可以與圖形元素相關(guān)聯(lián)。組合上的箭頭指示流向 | ![]() |
四、泳道(Swimlanes)
1. 池子(Pools)
- 池是一個容器,與其他的池相隔離。通常用在交互流程中。池主要作用于兩個獨立的實體或者參與者之間的物理劃分。各個池中的活動通常是有自身的流程的。因此,順序流通常不會越過多個池,而消息流是可以的
-
Pool :池是協(xié)作參與者的圖形表示(參見第112頁)。它還充當“泳道”和圖形容器,用于將一組活動從其他池中分區(qū),通常是在B2B情況下。池可能以將要執(zhí)行的流程的形式具有內(nèi)部細節(jié)?;蛘叱乜赡軟]有內(nèi)部細節(jié)
2. 泳道(Lanes)
- Pool的子劃分,可以垂直或者水平,用來對活動的組織和分類。Lane更加接近我們傳統(tǒng)的泳道的概念。Lane常用來將活動按照角色劃分,流程可以在一個pool中跨Lane流轉(zhuǎn),但是在一個pool中一般不會這樣
-
Lane : Lane是進程中的一個子分區(qū),有時在池中,它將垂直或水平地擴展進程的整個Jength。泳道用于組織和分類活動。
五、工件(Artifacts)
1. 組(Group)
將一部分元素按邏輯或特定目的進行分組,便于查看和管理,用于解釋和描述目的,不會影響流程的流轉(zhuǎn)
2. 文字注釋(Text Annotation)
提供一些附加性的文本信息給流程圖的閱讀者。




























































