天天看點

工作流系列之基礎概念篇

  工作流系列 --- 基礎概念篇 1、 工作流管理系統基本概念 近兩年随着電子商務環境不斷演進(例如阿裡巴巴的 B2B 電子商務平台),從原來支援企業内部單系統的業務流程、到企業内部應用、服務的內建,再進一步向企業與合作夥伴之間業務互動,工作流正扮演着越來越重要的角色。 到底什麼是工作流呢,筆者拿一個圖來說明,如下圖所示:

工作流系列之基礎概念篇

1圖1 工作流管理系統結構圖

圖1是工作流管理系統的一個基本組成結構,由流程模組化工具、外部應用接口、任務管理工具、流程監控工具、組織模組化工具、界面定義工具(電子表單工具)和内部核心引擎組成。 2、 工作流相關規範 Ø  WFMC 工作流管理聯盟 工作流管理聯盟在 1993 年成立之後,頒布了一系列工作流管理系統相關标準和技術規範,包括工作流術語表 [4] 、工作流參考模型 [5] 、工作流管理系統各部分間協作的五個接口規格 [6-9] 、工作流産品的互操作性标準 [10] 等。其中接口一早期的标準為 WPDL ( Workflow Process Definition Language ),後來這一接口的規範變更為 XPDL ( XML Process Definition Language )。 XPDL 是至今工作流領域最為重要的一個标準,目前大多數工作流引擎是依據該标準設計開發的。 Ø  BPMI 業務流程管理促進會 BPMI ( Business Process Management Initiative ,業務流程管理促進會)一直在積極推動 BPM 的标準化。它的目标是使各種類型以及不同行業的公司都可以跨越 Internet 、透過防火牆開發與操作涉及多個業務夥伴和應用的業務流程,通過建立流程設計、部署、執行、管理和優化的相關标準來促進 BPM 的發展。 BPMI.org 制定了許多開放标準,如業務流程模組化語言( BPML - Business Process Modeling Language ) [12] 、業務流程查詢語言( BPQL - Business Process Query Language )、業務流程模組化标注( BPMN - Business Process Modeling Notation ) [13] 等。 BPMI 和 WfMC 在 2002 年 6 月 26 日宣布将合作制定業務流程和工作流标準,即采用 BPML 來描述工作流過程,同時采用 XPDL 所定義的工作流模型。 Ø  BPEL 業務流程執行語言 2002 年 8 月 9 日, Microsoft 、 BEA 、 IBM 、 SAP & Siebel 聯合送出釋出了 BPEL 規範。 2003 年 4 月 BPEL 規範送出給了 OASIS ( Organization for the Advancement of Structured Information Standards ,結構化資訊标準促進組織)更名為 WSBPEL ( Web Services Business Process Execution Language )規範 [16] , Sun Microsystems 和甲骨文公司也相繼加入了 OASIS 組織。此規範描述如何處理輸入的消息,它不是一個關于業務流程規格化定義的規範。簡單的說,可以将它看作 XML 形式的程式設計語言,提供将 WSDL-Services 組合成控制流的能力。此規範實際上 BPM 的規範,關于 Workflow 和 BPM 的差別筆者會在後續的文章中講到。 除了上述三個主要的規範以外還有, OMG 、 WSCI 、 WSFL 等規範,在此就不在贅述。 3、 工作流參考模型及解析

工作流系列之基礎概念篇

圖2 WFMC工作流參考模型 [5] 圖 2 是工作流管理聯盟提出的工作流管理系統參考模型,包括 5 個接口和 1 個核心引擎,其中各個接口的具體含義如下: Ø  接口 1 :工作流定義接口,為使用者提供一種可視化的,可以對實際業務進行模組化的工具,并生成業務過程的可被計算機處理的形式化描述。此接口的規範有 WPDL 、 XPDL 、 BPEL ( BPM 定義規範)大多數的工作流産品都實作了此接口。 Ø  接口 2 :工作流客戶應用接口,它給使用者提供一種手段,以處理流程運作過程中需要人工幹預的任務(實際上就是工作項 workitem) 。工作流管理系統負責維護這個工作項清單。 Ø  接口 3 :工作流調用應用接口,工作流引擎調用外部業務應用的規範,例如在流程執行的過程中去調用業務系統提供的接口處理業務資料等。此接口各個工作流産品實作的不盡相同,它和具體的工作流産品的實作語言和架構相關,例如本公司工作流産品就可以支援對 javabean 的調用,對 webservice 的調用(通過 webservice 技術可以調用任何異構的,不同語言實作的業務應用),對 xml bean 的事件調用,對 spring bean 的調用等。 Ø  接口 4 :工作流引擎協作接口,是不同的工作流引擎之間進行協作的接口規範,此接口 WFMC 定義的不是很詳細,不同廠商的工作流引擎直接進行協作也存在大量的困難,是以實作此接口規範的工作流引擎産品也極少。 Ø  接口 5 :管理監控接口,其功能是對工作流管理系統中所有執行個體的狀态進行監控與管理,如組織機構管理、執行個體監控管理、統計分析管理、資源控制等。   工作流引擎:它是工作流管理系統的核心, 工作流引擎對使用工作流模型描述的過程進行初始化、排程和監控過程中每個活動的執行,在需要人工介入的場合完成計算機應用軟體與操作人員的互動。另外它的另外一個重要的功能是完成與應用軟體及操作人員的互動。   4、 工作流引擎内部對象

工作流系列之基礎概念篇

圖3 工作流引擎執行個體關系圖 圖 3 是工作流引擎的内部執行個體對象關系圖,一個流程執行個體( InstProcess )由一個流程執行個體變量( InstProcessVariable )、 1…* 個活動執行個體( InstActivity )、 1…* 個轉移執行個體( InstTransition )組成,而一個活動執行個體包括一個活動執行個體變量( InstActivityVariable )和 1…* 個工作項執行個體( Workitem )組成。   5、 工作流之控制模式 工作流控制模式是由 [W.M.P. van der Aalst] 、 A.H.M. ter Hofstede 、 Bartosz Kiepuszewski 、 A. P. Barros 等人于 2000 年提出的一個概念。他們一共總結了 21 種工作流模式。包括:順序 (sequence) 、并行分裂( Parallel Split ))、同步( Synchronization )、排它選擇( Exclusive Choice ) 、簡單合并( Simple Merge ) 、多路選擇( Multiple Choice )、多路合并( Multiple Merge )、路徑鑒别器( Discriminator )、 M 中選 N 合并( N-out-of-M Join )、同步合并( Synchronising Join )、任意循環( Arbitrary Cycles )、絕對終止 (Implicit Termination )、多執行個體(設計時已知執行個體數目)、多執行個體(運作時才知執行個體數目)、多執行個體(無預知)、多執行個體(要求同步的多執行個體)、延期選擇( Deferred Choice )、交叉路由( Interleaved Routing )、裡程碑( Milestone )、取消任務( Cancel Activity )、取消流程( Cancel Case )。以上就是著名的工作流 21 種模式。詳細的參考資料參見: http://www.workflowpatterns.com/patterns/control/index.php   6、 工作流之資源模式 工作流資源包括參與實體資源、外部應用資源 參與者實體模式,包括直接配置設定( Direct Allocation )、基于角色 / 組配置設定(Role-Based/Group-Based Allocation )、基于崗位配置設定( Position-Based Allocation )、延期配置設定 / 動态配置設定(Deferred Allocation/Dynamic Allocation )、基于規則配置設定( Rule-Based Allocation )、基于能力的配置設定(Capability-Based Allocation )、基于組織關系配置設定(Organisational Allocation )、基于曆史配置設定(History-Based Allocation )、輪轉法配置設定( Round Robin Allocation )、競争配置設定( Competitive Allocation )、委派(Delegation )、跳躍( Skip )、重做( Redo ) 直接配置設定模式: 在工作流設計期,直接為某個活動節點指定具體的使用者為參與者; 基于角色 / 組配置設定模式: 在工作流設計期,直接為某個活動節點指定某個角色或組為參與者; 基于崗位配置設定模式: 在工作流設計期,為某個活動配置設定一個具體的崗位; 延期 / 動态配置設定模式: 在運作期動态的配置設定某個參與實體給某個活動節點; 基于規則的配置設定模式: 在設計期或運作期,根據某個具體的規則來決定某個活動節點的參與者,此規則可以由規則引擎(例如 DRools )來運算,也可以由 xpath 來查詢,或者有某個具體的運算邏輯(在活動節點調用業務應用,例如 javabean 來實作); 基于能力的配置設定模式: 要求某個活動的參與者實體必須具備特定的條件; 基于組織關系配置設定: 基于目前參與者的職位以及與其它組織資源的關系(例如請假流程中,程式員請假會自動路由給項目經理,項目經理請假會路由給部門經理,然後依次給根據行政關系自動配置設定參與者); 基于曆史配置設定模式: 目前活動節點的參與者為前續某個已經執行過的活動節點的參與者,此模式在電子政務的審批流程中經常會用到,例如某個工作項由秘書辦理後發給上司,然後又從上司處傳回個秘書; 輪轉法配置設定模式: 在運作期按照輪轉法進行配置設定,輪轉法大家應該在負載均衡的解決方案中經常看到; 競争配置設定模式: 活動節點的參與者有多個人,多個人共同競争此活動,某個人竟得此活動後,其他的參與者不能再競争; 另外還有委派、跳躍、重做等模式,上面給出了最常用的參與者模式。 對于資源模式參見: http://www.workflowpatterns.com/patterns/resource/index.php 通過上面 4 和 5 的分析,我們可以給出工作流流程的概念:工作流流程就是由多個活動節點( Activity )通過工作流控制模式(例如順序、并行分裂、排它選擇、多路選擇、多路合并等)連接配接起來形成一個有序且連續的流程。而引擎為每個活動節點按照各種參與者實體模式(例如直接配置設定,基于角色、組、崗位的配置設定,基于組織關系的配置設定模式等)配置設定具體的參與者。為了使讀者能對流程一個直覺的認識,筆者給出一個典型的流程圖,如下所示:

工作流系列之基礎概念篇

繼續閱讀