轉載請注明源地址:http://www.cnblogs.com/lighten/p/5931207.html
對於BPMN我也不是十分清楚,目前也只是因為對於Modeler中不熟悉的組件查詢,來對這部分的內容進行學習,不求一次理解,邊學邊理解吧。所以這一章的介紹會比較簡單,但也足夠了。
Modeler中的組件列表划分和BPMN的略微有些不同,而且有些內容好像也沒有,最后移植到自己的demo中,還遇到了一些問題,如果可能的話,之后會詳細介紹一下Modeler的構成,大致是官方文檔的第七節Overview以及第十節Process(重要),網上已有人將其歸納總結過了 http://wenku.baidu.com/view/92b1bc06cc17552707220854.html?from=search,可以直接看這個鏈接中的內容。我下面的是對其與官方文檔校對之后的內容,說明這欄沒有翻譯(太耗時)。
BPMN(Business Process Modeling Notation),業務流程建模與標注,可以用其定義的一系列符號(我稱為組件)組成業務流程圖。接下來分類別來介紹這些組件。官方網站:http://www.bpmn.org/ 里面有BPMN v2.0的介紹和例子,如果有不懂的可以查看一下。http://www.omg.org/spec/BPMN/2.0/ 文檔以及XML校驗文件XSD下載地址。這里面才是詳細介紹,不過都是英文的,我也懶得看了,只是一些基礎應用而已,如果有需要的時候再看。http://www.omg.org/cgi-bin/doc?dtc/10-06-02 這里是官方給的一些例子,教導你如何使用這些組件。
1 流對象(Flow Objects)
流對象是最為基礎的概念了,十分重要。
1.1 事件(Events)P271
事件都是用一個圓圈來代表,影響流程的流動,一般有一個原因(trigger)或者一個影響(result)。標准定義了三種事件:開始,中間和結束。從定義和分類名稱上來看也能猜到事件的作用了,控制流程的開始,中間流轉和結束,這些控制可能采取觸發器(trigger)來完成,或者是導致一個結果(結束或拋出)。
(1)開始事件
1.2 活動(Activities)P181
(1)Tasks 任務 P186
task在流程流中是一個原子性的活動,當流程中的作業不能被打斷時task被用作一個更細級別的細節。通常,一個終端用戶或者應用其執行操作表現為task的形式。task對象在子流程中具有相同的形狀,都是長方形有着圓角。
有三種特殊的task圖標:循環、多重實例和補償,一個task可能會有一個或兩個這類圖標。
其它的task:
中文 | 英文 | 說明 | 圖標 |
服務任務 | Service Task | ![]() |
|
發送任務 | Send Task | ![]() |
|
接收任務 | Receive Task | ![]() |
|
用戶任務 | User Task | ![]() |
|
手工任務 | Manual Task | ![]() |
|
業務規則任務 | Business Rule Task |
![]() |
|
腳本任務 | Script Task | ![]() |
這些任務中,需要人參與自身完成的有Manual Task和User Task。Manual Task是一個不受任何商業流程引擎管理的任務,User Task是。不受管理意味着流程引擎無法追蹤其任務的開始和完成。舉個例子,這個可能就是一張充滿指令的紙,為電話技術人員幫顧客安裝電話。
(2)Sub-Processes 子流程 P203
子流程是一個活動的內部細節建模,使用活動、事件和網關以及序列流。子流程是流程內部的一個圖形對象,但是它也能夠被打開來展現更低一層的流程。子流程定義了一個上下文范圍,可用於屬性可見性、事務的范圍,異常處理,事件或者是補償。
BPMN定義了五種子流程,其中Collapsed Sub-Process可以被另外四種組合取代。另外四種是loop、multi-instance、Compensation、Ad-Hoc。
下面是一些用法:
(3)Call Activity 調用活動 P213
調用活動確定使用了全局流程或者全局任務的流程中的一點。調用過程用作為包裝器來調用全局流程或全局任務執行中。激活調用活動將導致稱為全局流程或者全局任務的控制轉移。
調用活動必須滿足數據要求,同時調用CallableElement返回數據。這意味着在活動的InputOutputSpecification中需要包含這些元素,並且必須精確的和CallableElement的元素匹配。這些元素包括:DataInputs、DataOutputs、InputSets、OutputSets。
1.3 網關(Gateways)P317
網關用於控制序列流如何在一個流程中收斂和發散的交互。如果一個流程不需要控制,那么網關就是非必需的。“網關”一詞意味着有一個門機制。允許或不允許通過網關——也就是說,執行到網關的時候,當網關機制被調用,輸入可以被合並在一起,或者輸出分離成若干部分。
中文 | 英文 | 說明 | 圖標 |
互斥網關 | Exclusive Gateway | ![]() |
|
事件網關 | Event-Based Gateway |
![]() |
|
並行事件網關 | Parallel Event-Based Gateway |
![]() |
|
相容網關 | Inclusive Gateway | ![]() |
|
復雜網關 | Complex Gateway | ![]() |
|
並行網關 | Parallel Gateway | ![]() |
2 數據(Data)P233
傳統的流程建模要求能夠模擬物品(物理或信息的)在流程中的創建、操作和執行過程。重要的方面就是能夠捕獲數據的結構,並且查詢或者操作結構。
BPMN本身並不提供內置的模型來描述數據結構或查詢數據的語言表達式。相反,它規范hooks來允許使用外部定義的數據結構和表達式語言。此外,在同一個模型中,BPMN允許不同的數據結構和表達式語言。這些語言的兼容性和驗證是在規范的范圍之外,變成了工具供應商的職責。
BPMN使用XML Schema和XPath作為其默認的數據結構和表達式語言,但是供應商可以自由替換他們自己的語言。
中文 | 英文 | 說明 | 圖標 |
數據對象 | Data Object | ![]() |
|
集合型數據對象 | collection DataObject |
![]() |
|
數據存儲 | Data Store | ![]() |
|
輸入數據 | Data Input | ![]() |
|
輸出 | Data Output | ![]() |
3 連接對象(Connecting Objects)P59
4 泳道(Swimlanes)
4.1 池子(Pools)
池是一個容器,與其他的池相隔離。通常用在交互流程中。池主要作用於兩個獨立的實體或者參與者之間的物理划分。各個池中的活動通常是有自身的流程的。因此,順序流通常不會越過多個池,而消息流是可以的(這段話摘自:http://wenku.baidu.com/view/59b540d228ea81c758f5783c.html?from=search)
4.2 泳道(Lanes)
Pool的子划分,可以垂直或者水平,用來對活動的組織和分類。Lane更加接近我們傳統的泳道的概念。Lane常用來將活動按照角色划分,流程可以在一個pool中跨Lane流轉,但是在一個pool中一般不會這樣(出處與上面相同)。
5 工件(Artifacts)
5.1 組(Group)
將一部分元素按邏輯或特定目的進行分組,便於查看和管理,用於解釋和描述目的,不會影響流程的流轉(出處同上)。
5.2 文字注釋(Text Annotation)
提供一些附加性的文本信息給流程圖的閱讀者。