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

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

 工作流是全部或部分由計(jì)算機(jī)支持或自動(dòng)處理的業(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)大的開放性及語言和平臺(tái)無關(guān)性,可以滿足跨平臺(tái)、跨組織、跨部門的分布式的企業(yè)應(yīng)用需求。
本文利用輕量級(jí)的開源工作流引擎JBPM(Java Business Process Management),結(jié)合SOA,提出了一種基于SOA和JBPM的工作流引擎模型,并對(duì)其流程控制與任務(wù)管理進(jìn)行了分析,最后,基于SOAP、WSDL協(xié)議和JPDL實(shí)現(xiàn)了此工作流引擎,證明了其有效性。
1 基于SOA和JBPM的工作流引擎模型
 基于SOA和JBPM的工作流引擎框架模型如圖1所示,該模型主要由3部分組成:服務(wù)提供者、服務(wù)請(qǐng)求者和服務(wù)代理。


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

 工作流的最顯著的優(yōu)點(diǎn)是實(shí)現(xiàn)了流程的自動(dòng)控制。在工作流引擎中的表現(xiàn)是工作流引擎把流程定義文件解析、實(shí)例,生成流程實(shí)例也就是一套對(duì)象,而這套對(duì)象的結(jié)構(gòu)則反映了流程的結(jié)構(gòu)。當(dāng)流程實(shí)例創(chuàng)建完成并進(jìn)入運(yùn)行狀態(tài)時(shí),流程實(shí)例的運(yùn)行全部依靠工作流引擎的控制。
 在JBPM中,一個(gè)運(yùn)行標(biāo)記token代表一個(gè)流程實(shí)例中的一次執(zhí)行,它是運(yùn)行時(shí)的概念,用來維護(hù)流程設(shè)計(jì)圖中節(jié)點(diǎn)的指針。token需要一個(gè)信號(hào)(signal)來讓流程向前執(zhí)行。當(dāng)接收到一個(gè)signal,token會(huì)通過路徑(弧transition)離開當(dāng)前所在的結(jié)點(diǎn)到達(dá)下一個(gè)節(jié)點(diǎn)。若token已經(jīng)在Start-State節(jié)點(diǎn),那么就可以開始往前推進(jìn),從而促使流程實(shí)例往前運(yùn)行。對(duì)于外部操作,觸發(fā)流程實(shí)例往下運(yùn)行的操作有兩個(gè):
?。?)強(qiáng)制執(zhí)行ProcessInstance的signal操作。
 (2)執(zhí)行TaskInstance的end操作。
 如圖2所示,這兩個(gè)操作主要是調(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)的上下文對(duì)象、離開本節(jié)點(diǎn)、獲取轉(zhuǎn)向節(jié)點(diǎn)的上下文對(duì)象、執(zhí)行節(jié)點(diǎn)。當(dāng)執(zhí)行完本節(jié)點(diǎn)流程會(huì)循環(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)時(shí),如果由于某些依賴性或者約束性的限制,如必須等待某些任務(wù)實(shí)例的執(zhí)行,必須等到它所需要的資源都滿足時(shí)才能繼續(xù)運(yùn)行,那么該任務(wù)實(shí)例就進(jìn)入到掛起狀態(tài),直到依賴或者約束性的限制得到滿足時(shí),任務(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í)例的一個(gè)作用就是支持用戶交互,把數(shù)據(jù)顯示給用戶并從用戶那里收集數(shù)據(jù)。任務(wù)實(shí)例需要從服務(wù)請(qǐng)求者輸入數(shù)據(jù),然后工作流引擎對(duì)數(shù)據(jù)進(jìn)行處理操作,最后把信息再通過服務(wù)消息傳遞到服務(wù)請(qǐng)求者顯示給用戶。JBPM工作流引擎支持對(duì)任務(wù)實(shí)例分配處理器進(jìn)行擴(kuò)展開發(fā),實(shí)現(xiàn)對(duì)特定數(shù)據(jù)的特定處理操作,同時(shí)其支持對(duì)任務(wù)實(shí)例分配給用戶、候選者或泳道。
3 基于SOAP、WSDL協(xié)議和JPDL工作流引擎的實(shí)現(xiàn)
 本文以數(shù)字檔案歸檔流程為例,對(duì)圖1所示的模型進(jìn)行了實(shí)現(xiàn)。
?。?)SOAP
 在服務(wù)提供者與服務(wù)請(qǐng)求者之間的消息交換是通過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ù)請(qǐng)求者在服務(wù)代理中查找到需要的服務(wù)的WSDL時(shí),服務(wù)請(qǐng)求者解析其內(nèi)容,同時(shí)確定服務(wù)提供者的位置、協(xié)議、需求的數(shù)據(jù)格式、方法信息,最后生成符合的SOAP文件并發(fā)送給服務(wù)提供者,此時(shí)兩者實(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>
 (3)JPDL
 JPDL其實(shí)是一套XML語言,這套語言有特定的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)代表不同的流程定義規(guī)則。通過XML對(duì)流程進(jìn)行描述,JBPM去解析這套XML語言,然后把得到的信息存儲(chǔ)到數(shù)據(jù)庫中。
 下面是歸檔流程的JPDL部分代碼,主要是開始狀態(tài)填寫歸檔表,指定管理員,并且有提交動(dòng)作,同時(shí)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>

 對(duì)于傳統(tǒng)工作流已不能滿足分布式異構(gòu)和松散耦合的企業(yè)信息資源的要求,本文在傳統(tǒng)的工作流技術(shù)基礎(chǔ)上,利用SOA技術(shù),結(jié)合JBPM,提出了一種基于SOA和JBPM的工作流引擎模型。本文目前主要研究的是模型的構(gòu)造與工作流引擎的流程管理與任務(wù)控制方面,今后主要工作將是對(duì)服務(wù)并發(fā)數(shù)的控制與均衡進(jìn)一步完善。
參考文獻(xiàn)
[1] 毛新生.SOA原理·方法·實(shí)踐[M].北京:電子工業(yè)出版社,2007.
[2] 胡奇.JBPM4工作流應(yīng)用開發(fā)指南[M].北京:電子工業(yè)出版社,2010.
[3] 蔡孝武,韓永國,藍(lán)科.一種輕量級(jí)工作流引擎的研究與設(shè)計(jì)[J].計(jì)算機(jī)工程,2010,36(20):30-33.
[4] 朱永華,張倩,吳俊杰.基于操作的輕量級(jí)工作流模型的研究與設(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)載。