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

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

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


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

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

 

 


 初始態(tài)指任務(wù)實(shí)例被創(chuàng)建成功的狀態(tài),,當(dāng)執(zhí)行任務(wù)的條件滿足后就進(jìn)入到運(yùn)行態(tài),任務(wù)實(shí)例在運(yùn)行態(tài)時,,如果由于某些依賴性或者約束性的限制,,如必須等待某些任務(wù)實(shí)例的執(zhí)行,必須等到它所需要的資源都滿足時才能繼續(xù)運(yùn)行,,那么該任務(wù)實(shí)例就進(jìn)入到掛起狀態(tài),,直到依賴或者約束性的限制得到滿足時,任務(wù)實(shí)例重新進(jìn)入運(yùn)行態(tài),,任務(wù)實(shí)例的運(yùn)行由于某些原因可能執(zhí)行失敗,,任務(wù)實(shí)例進(jìn)人到終止態(tài),當(dāng)任務(wù)成功執(zhí)行后進(jìn)入到完成態(tài),,任務(wù)的執(zhí)行結(jié)束,。
 任務(wù)實(shí)例的一個作用就是支持用戶交互,把數(shù)據(jù)顯示給用戶并從用戶那里收集數(shù)據(jù),。任務(wù)實(shí)例需要從服務(wù)請求者輸入數(shù)據(jù),,然后工作流引擎對數(shù)據(jù)進(jìn)行處理操作,最后把信息再通過服務(wù)消息傳遞到服務(wù)請求者顯示給用戶,。JBPM工作流引擎支持對任務(wù)實(shí)例分配處理器進(jìn)行擴(kuò)展開發(fā),,實(shí)現(xiàn)對特定數(shù)據(jù)的特定處理操作,同時其支持對任務(wù)實(shí)例分配給用戶、候選者或泳道,。
3 基于SOAP,、WSDL協(xié)議和JPDL工作流引擎的實(shí)現(xiàn)
 本文以數(shù)字檔案歸檔流程為例,對圖1所示的模型進(jìn)行了實(shí)現(xiàn),。
?。?)SOAP
 在服務(wù)提供者與服務(wù)請求者之間的消息交換是通過SOAP協(xié)議進(jìn)行的。SOAP是一種輕量的,、簡單的,、基于XML的協(xié)議,它被設(shè)計(jì)成在Web上交換結(jié)構(gòu)化的和固化的信息,。SOAP協(xié)議可以與現(xiàn)存的許多因特網(wǎng)協(xié)議和格式結(jié)合使用,,包括超文本傳輸協(xié)議(HTTP),簡單郵件傳輸協(xié)議(SMTP),,多用途網(wǎng)際郵件擴(kuò)充協(xié)議(MIME),,它還支持從消息系統(tǒng)到遠(yuǎn)程過程調(diào)用(RPC)等大量的應(yīng)用程序。同樣,,SOAP中消息頭和消息體的機(jī)構(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ù)代理中,。當(dāng)服務(wù)請求者在服務(wù)代理中查找到需要的服務(wù)的WSDL時,,服務(wù)請求者解析其內(nèi)容,同時確定服務(wù)提供者的位置,、協(xié)議,、需求的數(shù)據(jù)格式、方法信息,,最后生成符合的SOAP文件并發(fā)送給服務(wù)提供者,,此時兩者實(shí)現(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>
?。?)JPDL
 JPDL其實(shí)是一套XML語言,,這套語言有特定的節(jié)點(diǎn),每個節(jié)點(diǎn)代表不同的流程定義規(guī)則,。通過XML對流程進(jìn)行描述,,JBPM去解析這套XML語言,然后把得到的信息存儲到數(shù)據(jù)庫中,。
 下面是歸檔流程的JPDL部分代碼,,主要是開始狀態(tài)填寫歸檔表,,指定管理員,并且有提交動作,,同時JBPM需要進(jìn)行數(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ù)的控制與均衡進(jìn)一步完善,。
參考文獻(xiàn)
[1] 毛新生.SOA原理·方法·實(shí)踐[M].北京:電子工業(yè)出版社,2007.
[2] 胡奇.JBPM4工作流應(yīng)用開發(fā)指南[M].北京:電子工業(yè)出版社,,2010.
[3] 蔡孝武,,韓永國,藍(lán)科.一種輕量級工作流引擎的研究與設(shè)計(jì)[J].計(jì)算機(jī)工程,,2010,,36(20):30-33.
[4] 朱永華,張倩,,吳俊杰.基于操作的輕量級工作流模型的研究與設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),,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)載。