《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 一種基于SOA和JBPM的工作流引擎模型
一種基于SOA和JBPM的工作流引擎模型
來源:微型機與應(yīng)用2013年第15期
張輝棟,盧選民,楊 杰,李成福
(西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安710129)
摘要: 工作流技術(shù)是實現(xiàn)業(yè)務(wù)流程自動化的關(guān)鍵技術(shù),但現(xiàn)有的工作流技術(shù)已不能滿足目前分布式異構(gòu)和松散耦合的企業(yè)信息資源需求。利用SOA技術(shù),結(jié)合JBPM,提出了一種基于SOA和JBPM的工作流引擎模型,并對其流程控制與任務(wù)管理進行了分析,最后,基于SOAP、WSDL協(xié)議和JPDL實現(xiàn)了此工作流引擎,證明了其有效性。
Abstract:
Key words :

摘  要: 工作流技術(shù)是實現(xiàn)業(yè)務(wù)流程自動化的關(guān)鍵技術(shù),但現(xiàn)有的工作流技術(shù)已不能滿足目前分布式異構(gòu)和松散耦合的企業(yè)信息資源需求。利用SOA技術(shù),結(jié)合JBPM,提出了一種基于SOA和JBPM的工作流引擎模型,并對其流程控制與任務(wù)管理進行了分析,最后,基于SOAP、WSDL協(xié)議和JPDL實現(xiàn)了此工作流引擎,證明了其有效性。
關(guān)鍵詞: 工作流引擎;SOA;JBPM;流程實例;模型

 工作流是全部或部分由計算機支持或自動處理的業(yè)務(wù)過程,目的是為了提高效率、降低生產(chǎn)成本、提高企業(yè)整體的生產(chǎn)管理水平和競爭力。但是現(xiàn)代企業(yè)信息資源已呈現(xiàn)出一種分布式異構(gòu)和松耦合的特點,傳統(tǒng)的工作流已不能滿足其功能要求。
 面向服務(wù)的體系結(jié)構(gòu)SOA[1](Service-Oriented Architecture)技術(shù)將應(yīng)用程序的不同服務(wù)通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來,這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進行交互。因此,在傳統(tǒng)工作流當中引入SOA技術(shù),發(fā)揮兩者的優(yōu)勢,使工作流具有互操作性、強大的開放性及語言和平臺無關(guān)性,可以滿足跨平臺、跨組織、跨部門的分布式的企業(yè)應(yīng)用需求。
本文利用輕量級的開源工作流引擎JBPM(Java Business Process Management),結(jié)合SOA,提出了一種基于SOA和JBPM的工作流引擎模型,并對其流程控制與任務(wù)管理進行了分析,最后,基于SOAP、WSDL協(xié)議和JPDL實現(xiàn)了此工作流引擎,證明了其有效性。
1 基于SOA和JBPM的工作流引擎模型
 基于SOA和JBPM的工作流引擎框架模型如圖1所示,該模型主要由3部分組成:服務(wù)提供者、服務(wù)請求者和服務(wù)代理。


 該模型的工作流程是:工作流引擎將流程定義工具產(chǎn)生XML格式的流程定義文件解析,產(chǎn)生流程實例。然后通過Web服務(wù)接口將這個流程實例反映的流程信息封裝成服務(wù)形式,發(fā)布于服務(wù)代理中,供服務(wù)請求者查找,服務(wù)請求者根據(jù)描述信息找到服務(wù)提供者并綁定服務(wù)提供者,隨后兩者間可以消息傳遞,工作流引擎根據(jù)與服務(wù)請求者的消息交互完成流程實例。
?。?)服務(wù)請求者:當服務(wù)請求者需要某項服務(wù)時,先在服務(wù)代理中查找相關(guān)的服務(wù)描述信息,然后它與服務(wù)提供者提供的服務(wù)進行綁定,并且與服務(wù)提供者信息交換實現(xiàn)業(yè)務(wù)任務(wù)。
 (2)服務(wù)代理:存儲服務(wù)提供者發(fā)布服務(wù)的服務(wù)描述,服務(wù)消費者向服務(wù)代理查詢它所需要的服務(wù),并根據(jù)描述與服務(wù)提供者綁定。當所請求的服務(wù)是服務(wù)代理時,服務(wù)代理也經(jīng)常充當服務(wù)提供者的角色。
 (3)服務(wù)提供者:提供工作流引擎的功能,把工作流引擎提供的服務(wù)相關(guān)描述信息WSDL發(fā)布于服務(wù)代理中,供服務(wù)請求者查詢綁定。由于本模型中主要是對工作流引擎功能封裝成服務(wù),所以本模型的服務(wù)提供者即是工作流引擎模塊。
 此工作流引擎模塊主要包括JBPM工作流引擎和Web服務(wù)接口。Web服務(wù)接口主要是將工作流引擎發(fā)布為服務(wù)以和服務(wù)請求者交互,最終使得整個流程可被封裝為Web服務(wù)并完成服務(wù)請求者的需求。
上述模型中的3種角色之間的交互是通過以下3種基本操作來實現(xiàn)的。
?。?)發(fā)布服務(wù):服務(wù)提供者向服務(wù)代理發(fā)布他們的服務(wù)。其發(fā)布的信息包括服務(wù)的接口定義、服務(wù)提供者所處的位置以及其他可能用到的支持信息和文檔。
?。?)查找服務(wù):服務(wù)請求者向服務(wù)代理查找他們需要的服務(wù)。
?。?)綁定服務(wù):服務(wù)消費者與服務(wù)提供者提供的具體服務(wù)進行綁定,這個綁定的過程主要是用戶的身份驗證和服務(wù)確認。
 在上述的服務(wù)操作中,服務(wù)的發(fā)布或查找是通過WSDL協(xié)議實現(xiàn),該協(xié)議主要描述Web服務(wù)提供的功能、訪問該服務(wù)的數(shù)據(jù)格式與協(xié)議要求以及該服務(wù)如何定位等內(nèi)容。服務(wù)提供者與服務(wù)請求者間的綁定是通過SOAP協(xié)議實現(xiàn)的,SOAP是一種輕量的、簡單的、基于XML的協(xié)議,它被設(shè)計成在Web上交換結(jié)構(gòu)化的和固化的信息。而工作流引擎的流程定義是遵循JPDL協(xié)議實現(xiàn)的,在JPDL中提供了任務(wù)(tasks)、待處理狀態(tài)(wait states)、計時器(timers)、自動處理(automated actions)、事件(event)等術(shù)語,并通過圖形化的流程定義,很直觀地描述業(yè)務(wù)流程。
2 工作流引擎的流程控制與任務(wù)管理
2.1 流程調(diào)度控制

 工作流的最顯著的優(yōu)點是實現(xiàn)了流程的自動控制。在工作流引擎中的表現(xiàn)是工作流引擎把流程定義文件解析、實例,生成流程實例也就是一套對象,而這套對象的結(jié)構(gòu)則反映了流程的結(jié)構(gòu)。當流程實例創(chuàng)建完成并進入運行狀態(tài)時,流程實例的運行全部依靠工作流引擎的控制。
 在JBPM中,一個運行標記token代表一個流程實例中的一次執(zhí)行,它是運行時的概念,用來維護流程設(shè)計圖中節(jié)點的指針。token需要一個信號(signal)來讓流程向前執(zhí)行。當接收到一個signal,token會通過路徑(弧transition)離開當前所在的結(jié)點到達下一個節(jié)點。若token已經(jīng)在Start-State節(jié)點,那么就可以開始往前推進,從而促使流程實例往前運行。對于外部操作,觸發(fā)流程實例往下運行的操作有兩個:
 (1)強制執(zhí)行ProcessInstance的signal操作。
?。?)執(zhí)行TaskInstance的end操作。
 如圖2所示,這兩個操作主要是調(diào)用內(nèi)部的token.signal方法來實現(xiàn)流程實例的推進。
token.signal()方法的一些內(nèi)部操作如圖3所示。即:確定轉(zhuǎn)向節(jié)點、確定轉(zhuǎn)向節(jié)點的上下文對象、離開本節(jié)點、獲取轉(zhuǎn)向節(jié)點的上下文對象、執(zhí)行節(jié)點。當執(zhí)行完本節(jié)點流程會循環(huán)進入token.signal()方法,直至完成流程實例。

 

 


 初始態(tài)指任務(wù)實例被創(chuàng)建成功的狀態(tài),當執(zhí)行任務(wù)的條件滿足后就進入到運行態(tài),任務(wù)實例在運行態(tài)時,如果由于某些依賴性或者約束性的限制,如必須等待某些任務(wù)實例的執(zhí)行,必須等到它所需要的資源都滿足時才能繼續(xù)運行,那么該任務(wù)實例就進入到掛起狀態(tài),直到依賴或者約束性的限制得到滿足時,任務(wù)實例重新進入運行態(tài),任務(wù)實例的運行由于某些原因可能執(zhí)行失敗,任務(wù)實例進人到終止態(tài),當任務(wù)成功執(zhí)行后進入到完成態(tài),任務(wù)的執(zhí)行結(jié)束。
 任務(wù)實例的一個作用就是支持用戶交互,把數(shù)據(jù)顯示給用戶并從用戶那里收集數(shù)據(jù)。任務(wù)實例需要從服務(wù)請求者輸入數(shù)據(jù),然后工作流引擎對數(shù)據(jù)進行處理操作,最后把信息再通過服務(wù)消息傳遞到服務(wù)請求者顯示給用戶。JBPM工作流引擎支持對任務(wù)實例分配處理器進行擴展開發(fā),實現(xiàn)對特定數(shù)據(jù)的特定處理操作,同時其支持對任務(wù)實例分配給用戶、候選者或泳道。
3 基于SOAP、WSDL協(xié)議和JPDL工作流引擎的實現(xiàn)
 本文以數(shù)字檔案歸檔流程為例,對圖1所示的模型進行了實現(xiàn)。
?。?)SOAP
 在服務(wù)提供者與服務(wù)請求者之間的消息交換是通過SOAP協(xié)議進行的。SOAP是一種輕量的、簡單的、基于XML的協(xié)議,它被設(shè)計成在Web上交換結(jié)構(gòu)化的和固化的信息。SOAP協(xié)議可以與現(xiàn)存的許多因特網(wǎng)協(xié)議和格式結(jié)合使用,包括超文本傳輸協(xié)議(HTTP),簡單郵件傳輸協(xié)議(SMTP),多用途網(wǎng)際郵件擴充協(xié)議(MIME),它還支持從消息系統(tǒng)到遠程過程調(diào)用(RPC)等大量的應(yīng)用程序。同樣,SOAP中消息頭和消息體的機構(gòu)確?;A(chǔ)架構(gòu)消息和服務(wù)應(yīng)用消息的完整性。
下面是SOAP協(xié)議部分代碼:
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/
soap-encoding">
<soap:Bodyxmlns:m="http://localhost:8080/
FilearchivingProcess">
<m:GetArchiveTable>
</m:GetArchiveTable>

</soap:Body>
</soap:Envelope>
(2)WSDL
 WSDL是Web服務(wù)描述語言,主要描述Web服務(wù)提供的功能、訪問該服務(wù)的數(shù)據(jù)格式與協(xié)議要求以及該服務(wù)如何定位等內(nèi)容。服務(wù)提供者把自己的服務(wù)轉(zhuǎn)換成XML格式的描述語言發(fā)布于服務(wù)代理中。當服務(wù)請求者在服務(wù)代理中查找到需要的服務(wù)的WSDL時,服務(wù)請求者解析其內(nèi)容,同時確定服務(wù)提供者的位置、協(xié)議、需求的數(shù)據(jù)格式、方法信息,最后生成符合的SOAP文件并發(fā)送給服務(wù)提供者,此時兩者實現(xiàn)連接。
 下面是歸檔流程的WSDL部分代碼:<wsdl:message name="archiveTable">
<wsdl:part element="tns:archiveTable"name="
parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="FilearchivingProcess">
<wsdl:operation name="submit">
<wsdl:input message="tns:archiveTable"
name="archiveTable">
</wsdl:input>
<wsdl:output message="tns:archiveResponse"name="archiveResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:service name="FilearchivingProcessImplService">
<wsdl:port binding="tns:
FilearchivingProcessImplServiceSoapBinding"
name="FilearchivingProcessImplPort">
<soap:address location="http://localhost:8080/
FilearchivingProcess"/>
</wsdl:port>
</wsdl:service>
 (3)JPDL
 JPDL其實是一套XML語言,這套語言有特定的節(jié)點,每個節(jié)點代表不同的流程定義規(guī)則。通過XML對流程進行描述,JBPM去解析這套XML語言,然后把得到的信息存儲到數(shù)據(jù)庫中。
 下面是歸檔流程的JPDL部分代碼,主要是開始狀態(tài)填寫歸檔表,指定管理員,并且有提交動作,同時JBPM需要進行數(shù)據(jù)處理。
<start-state name="填寫歸檔表">?
<task name="填寫歸檔表">
<assignment
class="com.archive.assign.ApplicantHandler">
</assignment>?
</task>?
<transition to="主管審批"name="主管審批">
<action name="Submit"
class="com.archive.action.SubmitHandler">
</action>
</transition>?
</start-state>

 對于傳統(tǒng)工作流已不能滿足分布式異構(gòu)和松散耦合的企業(yè)信息資源的要求,本文在傳統(tǒng)的工作流技術(shù)基礎(chǔ)上,利用SOA技術(shù),結(jié)合JBPM,提出了一種基于SOA和JBPM的工作流引擎模型。本文目前主要研究的是模型的構(gòu)造與工作流引擎的流程管理與任務(wù)控制方面,今后主要工作將是對服務(wù)并發(fā)數(shù)的控制與均衡進一步完善。
參考文獻
[1] 毛新生.SOA原理·方法·實踐[M].北京:電子工業(yè)出版社,2007.
[2] 胡奇.JBPM4工作流應(yīng)用開發(fā)指南[M].北京:電子工業(yè)出版社,2010.
[3] 蔡孝武,韓永國,藍科.一種輕量級工作流引擎的研究與設(shè)計[J].計算機工程,2010,36(20):30-33.
[4] 朱永華,張倩,吳俊杰.基于操作的輕量級工作流模型的研究與設(shè)計[J].計算機工程與設(shè)計,2012,33(1):153-157.
[5] Guo Xiaofeng, Shen Jianjing, Wu Shanming. On Workflow Engine Based on Service-Oriented Architecture[C].2008International Symposium on Information Science and Engieering, Shanghai, 2008.
[6] Wang Huijiao, Huang Tinglei, Chen Zhifen. Research and Design of the Workflow Engine based on Web Services[C].Intelligent Computing and Integrated Systems, Guilin,2010.
[7] Yu Jie, Yu Zhang. The Research and application of Web-Application Based Workflow Engine[C]. 2011Communication Software and Networks, 2011.
[8] HEINIS, THOMAS. Design and evaluation of an autonomic workflow engine[C]. Autonomic Computing, Seattle, WA.2005.
[9] Liu Peng. Research on workflow patterns based on JBPMand JPDL[C]. Computational Intelligence and IndustrialApplication, 2008.
[10] Liu Guanjun, Jiang Changjun, Zhou Mengchu. Interactive Pe-tri Nets[J]. Systems, Man, and Cybernetics: Systems,2013(43):291-302.
[11] KIM K P. BPM-supported social networks discover-y and analysis techniques[C]. Kyonggi Univ.Advanced Communication Technology (ICACT),2013.
[12] DU Y,TAN W, ZHOU M C. Timed compatibility analysis of web servicecomposition: a modular approach based on petri nets[J]. Automation Science and Engineering, 2013:1-13.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。