0 引言
工作流管理技術是一種正在快速發(fā)展的技術,正在被越來越多的企業(yè)所應用。企業(yè)的日;顒又,約有70%是屬于流程類活動,如訂單出貨流程、生產(chǎn)流程、企業(yè)內(nèi)各類申請表單、公文簽審、信息傳遞與簽收、公司各類支出與收付等。由于在Internet上開展電子商務的廉價與方便性,促進了企業(yè)之間的交流,擴大了企業(yè)視野,在這種環(huán)境下,工作流管理系統(tǒng)就暴露出了很多不足之處:缺乏柔性,不能及時響應變化和相互之間缺乏互操作等,這些顯然不能滿足現(xiàn)代企業(yè)業(yè)務流程管理的要求。
面向服務體系結構(Service-Oriented Architecture,SOA)的出現(xiàn),為解決上述難題提供了契機。SOA是為解決在Internet環(huán)境下業(yè)務集成的需要,通過連接能完成特定任務的獨立功能實體實現(xiàn)的一種軟件架構。把SOA加入到工作流系統(tǒng)中,可以很好地解決現(xiàn)有工作流管理系統(tǒng)的柔性缺乏、不能及時響應變化和相互之間互操作性差等缺點,極大地提高了工作流系統(tǒng)的應用范圍,促進工作流管理系統(tǒng)的發(fā)展。因此,研究并實現(xiàn)基于SOA的工作流管理系統(tǒng)具有重要的現(xiàn)實意義和廣闊的應用前景。文中設計開發(fā)的工作流管理系統(tǒng)應用于某電力公司設備管理系統(tǒng),實際應用表明,設計的工作流管理系統(tǒng)改善了電力公司的內(nèi)外部流程,提高了工作效率,達到了預期的效果。
1 基于SOA的工作流系統(tǒng)設計
1.1 工作流系統(tǒng)結構設計
設計的工作流系統(tǒng)結構如圖1所示。
圖1 工作流系統(tǒng)結構示意圖
其中,流程定義存儲服務負責提供保存流程定義文件的服務;流程實例存儲服務保存流程實例狀態(tài)數(shù)據(jù);工作流引擎服務負責從流程定義存儲服務處獲得流程定義,解釋后執(zhí)行,并通過流程實例存儲服務保存流程實例數(shù)據(jù),通過調(diào)用其它服務完成流程活動,與其它引擎服務協(xié)作可進行流程遷移或并行執(zhí)行,用戶則通過用戶界面與工作流引擎進行交互。
在基于SOA的工作流管理系統(tǒng)中,工作流的使用不再限于它的位置,任務由服務完成。只要為服務定義標準接口,它們就能被任何依據(jù)標準的應用訪問到。由于一個流程不再限制于工作流引擎的位置,流程能夠在任何地方設計、存儲和執(zhí)行。用戶能夠選擇分布在網(wǎng)絡環(huán)境中的任何可獲得的工作流引擎服務來開始執(zhí)行一個流程。在執(zhí)行過程中,可以在不同引擎服務間遷移來達到負載平衡,降低不同應用和引擎服務間的通信費用,易于從錯誤中恢復,甚至一個流程同時在多個引擎服務上執(zhí)行,以獲得更高的效率?梢姡赟OA的工作流管理系統(tǒng)具有分布、高效、容錯、負載平衡等優(yōu)點,非常適應復雜信息環(huán)境的需求。
1.2 系統(tǒng)模塊及接口設計
整個工作流系統(tǒng)由建模工具、客戶端、模型分析、工作流引擎、SOA服務管理模塊組成。建模工具用來進行工作流過程建模。模型建立后使用模型分析工具對模型進行完整性、約束、時間可行等方面的檢查,檢查后在數(shù)據(jù)庫中建立對應記錄。工作流引擎將數(shù)據(jù)庫中的記錄實例化。客戶可以使用狀態(tài)查詢某個實例的狀態(tài),并可以控制或修改相應的流程?蛻羰褂脼g覽器作為客戶端,通過工作流引擎提供的功能完成對應的功能。SOA服務管理可細分為Web服務管理和Web服務注冊。Web服務管理主要是將已有的Web服務組合,形成從工作流活動到Web服務的對應關系,供客戶使用。Web服務注冊主要是對Web服務進行注冊,并由Web服務管理模塊進行管理。
工作流聯(lián)盟(Workflow Management Coalition,WFMC)給出了5類接口,結合本系統(tǒng)的需要,將其5類接口細化為6類接口,如圖2所示。
圖2 接口示意圖
(1)接口1:工作流服務和工作流建模工具。
(2)接口2:工作流服務和客戶應用之間的接口,客戶端使用瀏覽器,而客戶應用使用Web服務技術,所以,可以使用Java提供的標準接口。
(3)接口3:工作流引擎和直接調(diào)用的應用程序之間的接口,即Web服務與工作流引擎之間的接口。
(4)接口4:工作流管理系統(tǒng)之間的互操作接口,細化為對數(shù)據(jù)庫操作的事務。各模塊并不直接調(diào)用,使用對數(shù)據(jù)庫的事務技術來進行互操作。
(5)接口5:工作流服務和工作流管理工具之間的接口,細化為狀態(tài)查詢與數(shù)據(jù)庫的實時讀操作。
(6)接口6:單個Web服務與Web服務管理系統(tǒng)之間的接口。
其中,接口1為在不同物理或電子介質之間傳遞過程定義的信息提供了交互的形式和API調(diào)用;接口2定義了通信建立、工作流定義操作等功能;接口3激活應用程序的API函數(shù)應覆蓋的幾個方面的功能;接口4通過提供大量完成工作流執(zhí)行服務之間需要的API來實現(xiàn)工作流引擎互操作,例如,2個工作流執(zhí)行服務之間的直接調(diào)用或者通過網(wǎng)關函數(shù);接口5主要實現(xiàn)對工作流的管理和監(jiān)視;接口6實現(xiàn)工作流活動自身的管理,實現(xiàn)業(yè)務重組之類的功能。
2 SOA服務與工作流的整合
企業(yè)內(nèi)部所有應用功能都是以Web服務的方式提供的,方便用戶需求改變時的業(yè)務重組。同時,工作流引擎在進行調(diào)度的時候,采用(Simple Object Access Protocol,SOAP)協(xié)議來實現(xiàn)工作流引擎和Web服務之間的交互。在Web服務與工作流之間交互時通過Web服務管理器,做到邏輯上的獨立性。為此,發(fā)布Web服務時使用標準的Web服務描述語言(WSDL),同時,采用SOAP代理來實現(xiàn)SOAP消息的生成和傳送。整合的整個系統(tǒng)架構如圖3所示。
圖3 SOA與工作流整合系統(tǒng)架構示意圖
系統(tǒng)的工作原理及流程可以從3個方面來描述:
首先是服務定義階段,在該階段,根據(jù)功能需求分析對應Web服務,使用WSDL來定義。WSDL和SOAP一起構成了Web服務的核心結構單元。WSDL基于XML格式,用來描述Web服務。它描述了Web服務可以執(zhí)行的操作以及Web服務可以發(fā)送或接收的消息格式。WSDL文檔可以看成是客戶端和服務器之間的一個協(xié)約。使用WSDL工具可以自動處理這個過程,幾乎不用手工編寫代碼就能夠讓應用程序整合新的服務。因此,WSDL是Web服務體系結構的基礎,因為它提供了一個通用語言,用來描述服務和整合這些服務的平臺。由于WSDL文件能夠導入其它的WSDL文件,因此,總有可能發(fā)生名字沖突的時候。所以,最后注冊的WSDL文件需要在它們的
其次是流程定制階段,在工作流定制的過程中可使用流程定制工具,它提供了友好、簡單的圖形化界面,以支持拖放的方式實現(xiàn)工作流定制。一個流程是由許多的活動組成,每個活動表示一個要執(zhí)行的功能,該功能的執(zhí)行者就叫做參與者。一個參與者有2個可能的選項:Web服務和角色。如果是Web服務,用戶選擇企業(yè)WSDL數(shù)據(jù)庫中的某一Web服務;如果是角色,僅僅需要指定角色的名字。或者同時指定服務與角色。一個典型的Participant元素的定義如下:
最后是流程執(zhí)行階段,當執(zhí)行到某個活動需要請求Web服務時,工作流引擎發(fā)送服務請求信息,如Web服務的名字,給Web服務管理器,管理器通過讀取并解析在流程數(shù)據(jù)庫中存儲的工作流描述文檔(WSDL),可以得到包括Web服務名稱、操作名稱、操作所需的入口參數(shù)等信息。將這些信息傳給SOAP代理,由SOAP代理執(zhí)行SOAP調(diào)用。
3 基于SOA的工作流管理系統(tǒng)EleFlow的實現(xiàn)
3.1 工作流引擎設計
工作流引擎作為工作流管理系統(tǒng)的核心部分,提供對系統(tǒng)有決定作用的根據(jù)角色、分工和條件的不同決定信息傳遞路由、內(nèi)容等級等核心解決方案。如果一個工作流系統(tǒng)缺乏功能強大的引擎,勢必變得容易出錯。在前面設計的基礎上,對系統(tǒng)工作流引擎與系統(tǒng)的具體實現(xiàn)進行了設計。該引擎可以劃分為幾個模塊,這些模塊涵蓋了引擎的使用、配置、流程定義、查詢和運行時等方面內(nèi)容,通過這些模塊可以對整個系統(tǒng)進行調(diào)度和資源協(xié)調(diào)。其中,包括對工作流引擎核心模塊、工作流引擎配置模塊、工作流引擎定義模塊、工作流引擎異常處理模塊、工作流引擎的數(shù)據(jù)庫結構進行了設計。
WorkflowModule模塊是引擎的核心,用戶與工作流系統(tǒng)的大部分交互內(nèi)容都在這部分模塊內(nèi)實現(xiàn),它定義了最常用的接口、類和異常。Workflow接口是一個最基本的接口,通過與它交互,用戶幾乎可以完全使用EleFlow的功能,包括工作流調(diào)度和查詢、工作流定義管理和設置工作流配置信息等。ConfigModule模塊是工作流引擎配置模塊,與EleFlow的配置相關,定義了一個類DefaultConfiguration,這個類實現(xiàn)了Configuration接口。LoaderModule模塊是工作流引擎定義模塊,與工作流定義密切相關,包含了與工作流定義中對應元素的實現(xiàn)類,如果在工作流引擎運行時需要了解指定的動作、步驟的狀態(tài)、名字等信息時,這些元素的描述會起到很大作用。ExceptionModule模塊負責處理工作流引擎的異常。工作流的錯誤包含兩種錯誤:一是流程錯誤,如活動的執(zhí)行者不存在,活動的應用程序定義錯誤等;二是系統(tǒng)的錯誤,如網(wǎng)絡不通,數(shù)據(jù)庫系統(tǒng)異常。對于工作流引擎控制器來說,前類異常屬于無法處理的錯誤,只能通知錯誤的存在;后者是工作流引擎控制器可以處理的錯誤,工作流引擎控制器可以進行容錯處理,例如:在數(shù)據(jù)庫恢復后自動重新建立連接。執(zhí)行機對可能出現(xiàn)的錯誤進行編碼,并附有對應的描述信息。工作流引擎所使用的數(shù)據(jù)表主要是用來存儲引擎調(diào)用時所需的數(shù)據(jù),包括當前步驟數(shù)據(jù)和歷史步驟數(shù)據(jù)。
3.2 系統(tǒng)與外部應用交互的實現(xiàn)
在EleFlow中,函數(shù)function是用來定義(引用)并執(zhí)行外部的商業(yè)邏輯和服務,實現(xiàn)EleFlow與外部具體的應用之間交互。當系統(tǒng)有額外的需求和功能,例如處理“角色”、“任務分配”、“提交任務”等諸如此類的操作,就擴展function接口。
所有的function實現(xiàn)類都必須實現(xiàn)這個FunctionProvider接口中execute方法,而且能夠處理的信息也全部來自這個方法中的3個參數(shù):
(1)transientVars:最為核心的參數(shù),記錄非常重要的一些對象,比如WorkflowContext,WorkflowEntry,輸入?yún)?shù)等。
(2)args:存儲了流程定義里的參數(shù),如00l。
(3)ps:PropertySet對象,記錄了流程實例所需要保存的數(shù)據(jù),可以理解成EleFlow所描述的流程相關數(shù)據(jù)。
3.3 系統(tǒng)的訪問控制實現(xiàn)
工作流管理系統(tǒng)對安全性要求較高,為了達到要求,必須做到充分的安全控制。訪問控制的目的是保護信息資源不被未授權用戶瀏覽或修改,從而實現(xiàn)數(shù)據(jù)的保密性和完整性。因此,訪問控制技術對解決工作流系統(tǒng)安全問題起著非常重要的作用。為了實現(xiàn)這一目標,工作流系統(tǒng)訪問控制機制應當能夠滿足兩方面的需求:一是用戶選擇,即能夠在一個活動實例被激活后選擇合適的用戶來完成;二是實現(xiàn)活動實例與用戶權限的同步,當一個用戶試圖完成工作列表中的某項工作時,能夠判斷該用戶是否為合法用戶,為合法用戶分配必要的權限,并在工作完成后收回分配的權限。
3.4 實際應用
下面是基于以上方法設計的某電力公司設備管理系統(tǒng),具體設計與實現(xiàn)如下。
3.4.1 任務數(shù)據(jù)錄入
數(shù)據(jù)錄入界面如圖4所示。
圖4 設備申請錄入界面
該頁面主要錄入設備申請的相關信息,后臺程序操作如下:
(1)創(chuàng)建一個Workflow對象。
BasicWorkflow workflow=new BasicWorkflow("caller");
(2)準備工作流相關參數(shù)。
Map args=new HashMap();
args.put("owner",caller);
(3)實例化一個工作流。
long id=workflow.initialize("applyequipment",0,args);
(4)處理業(yè)務數(shù)據(jù)(spring實現(xiàn))。
(5)工作流狀態(tài)改變。
workflow.doAction(id,001,args);
3.4.2 獲取工作流列表
設備審批過程應根據(jù)登錄用戶的角色不同而顯示不同的數(shù)據(jù),如圖5所示。
圖5 流程審批界面
當部門管理用產(chǎn)登錄的時候無法看到設備管理用戶的數(shù)據(jù)。
在后臺程序中,通過WorkflowExpressionQuery進行符合條件的查詢,代碼如下(片段):
(1)符合當前條件的步驟。
(2)屬于哪個工作流流程(本系統(tǒng)有兩處用到工作流,還有設備報修流程,所以有兩個流程配置文件,需要區(qū)分當前工作流實例屬于哪個流程)。
(3)實例是否存在。
(4)進行復合查詢,上述條件為and關系。
4 結語
設計實現(xiàn)了基于SOA的工作流管理系統(tǒng),并在長春某電力公司設備管理中得到了成功應用。結果表明,該系統(tǒng)的應用基本消除了企業(yè)的“信息孤島”,提高了工作效率,為企業(yè)全面信息化打下良好的技術基礎。
核心關注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領域的管理,全面涵蓋了企業(yè)關注ERP管理系統(tǒng)的核心領域,是眾多中小企業(yè)信息化建設首選的ERP管理軟件信賴品牌。