BPMN

概述


BPMN,即BusinessProcessModelingNotation,業務流程建模符號。是用一種類似於流程圖的圖表形式來描述業務流程的一種方法。BPMN最初是由業務流程管理計畫組織(BusinessProcessManagementInitiativeBPMI)制定和發展起來的,目前由對象管理組織(ObjectManagementGroupOMG)來維護管理。BPMN從2002開始制定,到2004年5月發布了第一個版本。目前版本是1.1,好像2.0正在制定中。
在BPMN出現之前,關於流程設計的符號並沒有統一的標準,各個大的流程模型設計公司都有自己流程定義符號。這樣在理解和溝通上就給大家造成了不便。所以BPMI組織就推出了BPMN這個標準,來統一業務流程描述符號。BPMN為大家提供了一種標準的、易讀的定義和分析公開的和隱私的業務流程的方法。同時,BPMN也為管理人員、分析人員和程式開發人員提供了一種簡單易懂的標註符號標準。從而消除公司或企業內部各個部門以及公司與公司之間的溝通障礙,為大家建立起一道溝通的橋樑。同時,業務流程建模符號還能夠通過對各個業務流程的運行而設計的XML(擴展標記語言)文檔加上了一種普通的符號使得該文檔更加的直觀易讀。
BPMN是一種圖形化的建模工具,它的使用者主要是不懂IT技術的業務人員,有點像我們使用的UML。XPDL是一種基於XML的過程定義語言,主要是為了不同系統間有一個統一的流程定義語言,它像接口。而bpel是業務流程執行語言,它是給流程引擎去直接執行的。它更像一種程式語言,讓機器去運行。三者之間具體的區別,有時間我會另寫一篇文章的。總的說來,BPMN是建模的,XPDL,BPEL是模型的實現。BPMN比後兩者有更高的抽象。
基本元素
BPMN是以業務流程圖(businessprocessdiagramBPD)為核心的。每個BPD根據提供的模型類型不同可以有三種基本的類型:Collaborative(Global)B2BProcesses協作圖,Internal(Private)BusinessProcesses獨立圖,Public(Abstract)Process抽象圖。前者主要用來描述兩個以上的業務實體或者說是參與者之間的互動,協作的情況。而後者主要關注的是某一個參與者內部業務流程的流轉。而抽象圖則是用來描述內部業務流程與外界的互動,關注點在互動,內部流程中不與外界互動的活動將被忽略。
BPMN是以BPD為中心,規定了一些統一的圖形元素。BPMN有四種基本元素。FlowObjects,ConnectingObjects,Swimlanes,Artifacts.
FlowObjects是BPMN的核心元素。它又包括:Event,Activity,Gateway。
Event:StartEvent,IntermediateEvent,EndEvent三種。Event是指業務流程的運行過程中發生的事件。這些event會影響到流程的狀態。一個event通常會有某種trigger或result。Trigger就是觸發器,當有個訊息到來,或者某個事情發生,比如說時間到了,都可以是一個Trigger,來觸發該event。而Result就是該event發生後的一個結果,比如說發出一個訊息等等。
Activity,活動。就是業務流程中基本的業務單元。每一個activity代表一個特定的業務,比如說登入,註銷等等都可以是一個activity。Activity有兩種類型:Task,Sub-process。Task很明顯就是單一的業務活動。而sub-process是一個複合的業務活動,在該活動中存在一個子業務流程。相信學編程的人都可以理解這個概念。
Gateway,網關。用來表示流程的分支和聚合。Gateway在BPMN是個很複雜的概念。它包括好幾個種類:Data-basedexclusive,Event-basedexclusive,inclusive,Complex,Parallel。不同的gateway的組合使用有時候可能會產生合法性問題。所以在使用的時候我們要格外小心。
連線對象ConnectingObjects。在一個業務流程圖中,是使用連線對象把圖中的各個獨立的業務活動連線起來組成一個完成的含有語義的業務流程的。有三種連線對象:SequenceFlow,MessageFlow,Association。
SequenceFlow序列流。用來表示業務流程中被執行的業務單元的執行順序。
MessageFlow訊息流。用來表示不同業務流程參與者之間的訊息互動的信息流。
Association關聯。用來把對某個業務活動的輸入輸出的描述與這個業務活動聯繫起來。
Swimlanes甬道(泳道?)呵呵,也不知道用那箇中文詞比較合適。Swimlanes是用來區分不同部門或者不同參與者的功能和職責的。Swimlanes也包含兩種類型:Pool,Lane。
Pool代表流程中的一個參與者。它可以作為一個容器來包含其他圖形元素,用以和其他參與者(其他Pool)來區分。在一個業務流程圖中使用Pool主要是為了顯示一個業務中不同的參與者之間的互動情況。每個Pool中的activity通常都有自身的流程。所以,SequenceFlow是不能穿越Pool的邊界,而MessageFlow就可以。它被用來表示兩個不同流程之間訊息的互動。
Lane是Pool的子劃分。它可以垂直也可以水平,用來對活動進行組織和分類。Lane常被用來將活動按角色劃分,流程可以在一個Pool里跨Lane流轉,也就是說SequenceFlow可以穿過Lane的邊界。這種情況下,MessageFlow就不可以。
Artifacts怎么翻譯呢?一直找不到確切的中文意思,這裡就直接使用英文吧。Artifacts是流程圖中的擴展符號。它提供方法使得流程圖可以具有描述更加詳細活動的上下文的途徑。Artifacts包括DataObject,Group,Annotation
DataObject用來描述業務活動所需或者產生的數據。他們可以用Association與Activity連線起來。
Group組。用來描述和解釋的。
Annotation注釋。提供一些附加的文本信息給流程圖的使用者和閱讀者。
BPD的合法性
BPMN是有向圖,在繪製時,會因為不小心造成業務流程模型無效,或者說是個不合法的模型。更高級的,我們有時會要求業務流程有一些特性,比如說時間上的最佳化。所以我們要對BPMN圖進行合法性和有效性檢查。這也是個難題。有過很多方法,我就無法展開介紹了。就合法性,我舉個小例子。比如說我們在使用Gateway時就有可能出錯。在正常的線型業務流程中使用了Gateway,就會出現分支,出現了分支,就有可能會出現死結或者無限循環,使得流程無法正常結束。氣死了,不知道如何從PPT中考圖,這裡就無法描述了。最簡單的吧,就是出現了分支,這個分支又指向了Gateway的前面的業務活動,如果這個Gateway是無條件轉向的,那就會造成無限循環。
BPMNtoBPEL
BPMN是圖形化來表示業務流程的,它主要是為了人們的閱讀。要想讓BPMN所畫出來的流程圖能夠被工作流引擎,特別是BPEL引擎所執行。我們就需要把BPMN的BPD圖轉化成BPEL。這種轉化在BPMN中的規範中已經有介紹了。這裡就不多說了。但在具體的轉化過程中,還存在很多問題。這主要是因為BPD是一種有向圖,而BPEL是一種嚴格嵌套的塊結構執行語言。它們的轉化就是要把一個有向圖轉化成嵌套結構。學過圖論的同學,都會知道,這有一定的難度。當然也會有不同的辦法去解決它。以後有機會我會詳細介紹這部分的。

相關詞條

相關搜尋

熱門詞條

聯絡我們