摘 要:根據項目特點,建立了適合ASP平臺的基于協調理論和反饋機制的擴展活動網絡模型,采用XML模式的XPDL規范實現過程定義;然后通過DOM解析XML數據文檔和J2EE的技術支持實現了系統的輕量級工作流引擎。詳細介紹了系統實現中解決的兩個關鍵問題:事務型操作的處理和并發控制,并提出了基于優先級的鎖綁定機制。
關鍵詞:工作流引擎; 輕量級; 可擴展標記語言; 過程定義; 可擴展標記語言模式的過程定義語言; 關鍵業務
中圖分類號:TP393文獻標志碼:A
文章編號:1001—3695(2007)03—0203—03
工作流(Workflow)技術最初起源于辦公自動化和企業生產中的過程概念。隨著信息技術和管理理論的發展,無疑工作流技術已成為當今計算機技術領域研究的一大熱點。工作流技術是實現企業業務過程建模、業務過程仿真分析、業務過程優化、業務過程管理與集成,最終實現業務過程自動化的核心技術[1]。目前,運用工作流管理技術開發信息系統是大勢所趨。
1993年8月成立的工作流聯盟(Workflow Management Coa ̄lition,WfMC), 制定的工作流參考模型已成為工作流管理技術的規范和標準。工作流管理聯盟給工作流的定義是:“商務過程的全部、部分自動化或計算機化。”簡單地說,工作流就是一系列相互銜接、自動進行的業務活動或任務[2]。
工作流管理系統[1]是支持企業經營過程高效執行并監控其執行過程的計算機軟件系統。因此,工作流管理系統與企業的業務流程重組(Business Process Reengineering,BPR)緊密地結合在一起。
1 系統簡介和技術背景
本系統是ASP模式面向中小企業服裝紡織業的信息平臺,實現以信息技術集約化的運營方式。通過ASP平臺分銷管理系統,企業以低成本ASP方式實現了企業信息化建設。
1.1 XML技術的引入
XML(eXtensible Markup Language,可擴展標記語言)是W3C推薦的標準,是一種用于定義文本數據的簡便而標準的標記語言。2001年5月,WfMC發布了XML工作流過程定義語言XPDL0.03草案[3],將XML作為過程定義交換機制中的語言,形成了XPDL(XML模式的過程定義語言)一種公共的交換標準,提供了一種描述及訪問已建立工作流過程模型和工作流過程元數據模型的公共方法。
在本系統的實際業務中,一項任務往往涉及多個異地合作伙伴,因此企業間、企業與客戶間要進行大量的信息交換,涉及到復雜的業務邏輯和多種表達格式。在這種異構、分布、松散耦合的計算環境下,存在著信息的標準化問題和靈活性問題。與平臺無關的語言Java加上與平臺無關的數據XML,確實能夠完成最為復雜且彈性最后的分布式應用[4]。采用XML描述復雜的商務數據交換和過程模型,使系統實現跨平臺、跨應用。
1.2 關鍵業務的輕量級工作流引擎
輕量級工作流引擎[5]是指從低成本、靈活、夠用的設計原則出發,不追求工作流引擎功能的完備和復雜,只是實現其中必不可少的功能和特征。本文設計了一個充分支持關鍵性業務的小型工作流引擎,使它無縫地嵌入到J2EE應用開發環境中。
針對服裝紡織行業的營銷管理需求和敏捷商業供應鏈的特點,系統提煉出關鍵性核心業務,作為輕量級工作流引擎的主體。其中,銷售模式是較復雜的關鍵性核心業務,它涉及了組織結構、用戶信息、訪問權限、產品庫存管理、業務流轉、財務管理及其他擴展業務,尤其與銷售有關的上下游單據的流轉是其核心。因此,將銷售模式實現基于XML的輕量級工作流引擎,會降低系統開發的難度,可以提高系統的效率和可靠性。
2 過程建模和輕量級工作流引擎實現
2.1 系統體系結構
系統體系結構如圖1所示。
圖1 系統體系結構
2.2 過程模型
工作流過程模型是對系統業務流程的抽象表示。文中建模是針對圖1系統體系結構的工作流執行服務和XML(業務、控制數據)兩個部分。選定模型要根據系統的具體需求,但必須有足夠豐富的描述表達能力以表示出工作流元素和元素之間的確切關系。
本系統采用的建模方法是在傳統活動網絡基礎上,基于協調理論和反饋機制的擴展活動網絡模型[6],增加了請求、服務、協調、多實例化等新的建模元素。文獻[6]中提出的這種建模方法在提高模型描述能力、降低模型復雜性、提高系統柔性及適應性方面有明顯優點,對于設計開發ASP公共服務平臺這種對可靠性、柔性和適應性要求很高的工作流管理系統具有重要的應用價值。
圖2給出了系統ASP平臺進、銷、存過程的工作流模型。圖中的節點表示活動或任務,節點間的連接弧表示工作流中的控制流和數據流。該模型控制的流程需要完成的任務描述如下:①以人工方式觸發流程的開始,系統接收到客戶的要貨訂單,形成需求。②按照客戶訂單檢查庫存,如果庫存量大于等于訂單數,并通過財務審核(是否收到客戶付款),則開據出貨單;否則,通過財務撥款進行采購、入庫(子過程),然后轉去執行第②步。③出庫送貨。④結束。
在這個工作流模型中,包含了三種控制結構,即順序(如第①—②步)、分支(第②步)和循環(第②步)。同時,模型中除了包含“開始”“結束”兩個活動節點之外,還包括了“形成需求”等幾個普通活動節點、“多個訂單”多實例化節點、“接收客戶需求”請求—等待節點(發服務請求并等待服務)、“檢查庫存”服務節點。另外還有三個特殊節點,即與分支節點(同時執行各分支上的活動)、顯示或分支節點(按照節點中定義的條件來選擇滿足條件的分支來執行)和同步節點(用來同步多個并行流程以實現業務過程所需的同步)。
2.3 過程模型的XML定義
根據文獻[7]中定義的規范,用XPDL描述模型中的實體,包括各個活動或任務節點、轉移信息 、相關數據、參與者及應用聲明等。在XPDL語法中給出了對應元素的文檔類型定義(DTD),包括工作流過程定義、過程活動定義、轉換定義 、條件定義、異常處理、相關數據等。也就是說DTD文檔定義了文檔中可用的標記以及標記間的關系。
以下是過程特征元素的定義片斷,其中包括工作流過程的屬性,即Id、Name和流程的訪問級別AccessLevel;另外還包括必要的子元素,即過程頭、相關數據、 參與者、工作流應用聲明、活動、轉移、擴展屬性列表等。活動的屬性Id、Name及其他子元素構成,如工作流參與者實體Performer;Start Mode描述如何觸發任務的執行,可選項為自動執行Automatic和人工執行Manual;Transition Restrictions提供轉移約束,在Join/Split(匯合/分支)中任選其一;Deadline定義截止期限到達時產生的系統行為,其屬性Execution的值為ASYCHR表示異步執行,值為SYNCHR表示同步執行。
下面給出系統中定義的活動實例。銷售模式中的單據流轉,由CreateBill(Activity Id=\"0001\")流轉到SubmitBill(Activity Id=\"0002\")或CancelBill (Activity Id=\"0003\"),是個顯式或分支結構。新建銷售單據后如果審核通過(checked=\"true\"),則向數據庫提交;否則,此單據作廢。工作流過程定義中部分控制活動間流轉的定義如下:2.4 解析XML數據
系統中采用基于樹的解析器,遵守W3C的文檔對象模型(Document Object Model,DOM)。DOM是一種獨立于平臺和語言的接口(僅僅是接口定義,DOM實現的任務要由第三方完成),能夠對樹結構的文檔進行操作。它將XML文檔轉換為可以通過程序訪問的節點樹,從而完成了解釋過程定義、實例創建、調度活動,以及為參與者分配任務和資源等任務。系統中以Java類庫方式實現DOM的XML數據解析:
系統通過JSP/HTML/JavaScript,完成了對工作流實例執行過程中各種活動的處理,實現了客戶端頁面以瀏覽器的方式操作。
3 系統中解決的幾個關鍵問題
3.1 事務型操作的處理
對于工作流引擎控制下的數據,任務的執行是原子的。這意味著在系統崩潰、異常終止或任務取消時,工作流相關數據和工作流控制數據要回滾(自動或借助其他途徑),并請求一個適當的補償任務。例如,在提交銷售單據未成功時,取消任務的執行;為保證系統繼續正常工作,必須采取方法控制數據的回滾,以恢復到未提交前的狀態。系統中采用J2EE技術實現工作流引擎。以下是解決事務性問題的Java代碼:
3.2 并發控制
在本系統中工作流過程定義時,一些相關數據是多個活動的共享資源。例如銷售單據A要根據企業業務來流轉,在業務部門由員工甲新建了之后,要到財務部門員工乙處去審核,但絕不允許甲和乙同時操作單據A。為避免資源的這種訪問沖突,本文提出基于優先級的鎖綁定機制(Lock Tie Mechanism Based on PRI)來解決這一問題。
定義1 (鎖綁定機制)當一個工作流參與者要操作某數據資源或控制資源時,將資源的操作權分配給此參與者并以鎖的方式綁定參與者和資源,直到操作結束才開鎖并重新分配鎖和資源。
定義2 (基于優先級的鎖綁定機制)當一個以上的工作流參與者同時爭用某數據資源或控制資源時,按預先定義好的優先級,將資源的操作權分配給優先級別最高的參與者,并以鎖的方式綁定參與者和資源,直到操作結束才開鎖并將鎖和資源分配給次優先級參與者。
系統中實現上述機制的Java代碼如下:
系統中采取這種機制,經過一段時間運行測試后,實際應用達到了預期效果,很好地解決了共享資源的并發控制問題,這也是本系統開發中的一個難點問題。
4 結束語
根據服裝行業和項目特點,本文選擇了適合ASP平臺的基于協調理論和反饋機制的擴展活動網絡模型,采用XML模式工作流過程定義語言XPDL描述了過程模型;后臺工作流引擎的實現采用了J2EE技術,并在前臺以JSP/HTML方式提供了瀏覽器操作的用戶界面。在描述過程模型時,XML數據表現出了強大的建模能力。
采用工作流技術的ASP平臺,達到了ASP模式下分散資源的有效集約、企業業務流程的半自動化,并從整體上改觀了企業原有的繁雜而又混亂低效的傳統經營過程;解決了ASP模式下并發控制和事務型操作的回滾問題。在系統特有的計算環境下已實現了系統的可靠性、穩定性、可擴展性和靈活性,企業實施運行效果良好,達到了預期目的,這也是研發此項目的初衷。特別是在搭建公共服務平臺時的一次有益嘗試,對以后的工作具有現實的指導意義。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。