摘 要:為解決在公告審查系統(tǒng)中多部門協(xié)同辦公的需求以及傳統(tǒng)開發(fā)方法中工作流程部分硬編碼的設(shè)計缺陷,在分析JBPM工作流管理系統(tǒng)體系結(jié)構(gòu)的基礎(chǔ)上,提出了一種以JBPM工作流引擎為核心,以SSH框架為基礎(chǔ)的公告審查系統(tǒng)設(shè)計方案,論述了系統(tǒng)流程管理的定義與部署等關(guān)鍵實現(xiàn)技術(shù)。
關(guān)鍵詞:車輛生產(chǎn)企業(yè)及產(chǎn)品公告;工作流;汽車;JBPM;JPDL
中圖分類號:TP311.52
“車輛企業(yè)及產(chǎn)品公告”(以下簡稱“公告”)是國家準(zhǔn)許車輛生產(chǎn)企業(yè)組織生產(chǎn)和銷售的依據(jù),是依據(jù)汽車產(chǎn)業(yè)發(fā)展政策和國家認(rèn)證認(rèn)可條例建立的統(tǒng)一的道路機動車輛生產(chǎn)企業(yè)和產(chǎn)品的準(zhǔn)入管理制度。公告車型在產(chǎn)品的審查環(huán)節(jié)涉及到綜合部、技術(shù)部與審核部等多個部門的協(xié)同工作,然而早期開發(fā)的審查系統(tǒng)主要以狀態(tài)標(biāo)識或硬編碼方式完成流程控制,系統(tǒng)可擴展性較低。隨著業(yè)務(wù)的不斷發(fā)展,審查流程的復(fù)雜度逐漸提高,傳統(tǒng)的開發(fā)方法已無法滿足現(xiàn)有工作的需求。
本文提出了一種基于JBPM的公告審查系統(tǒng)的開發(fā)方案,重點分析了審查系統(tǒng)在各部門間協(xié)同工作時的業(yè)務(wù)流轉(zhuǎn)模式。基于JBPM所設(shè)計的公告審查系統(tǒng),既提高了審查部門的辦公效率,同時也降低了系統(tǒng)的開發(fā)和維護(hù)成本,向公告平臺的進(jìn)一步完善邁出了重要一步。
1 JBPM簡介
JBPM是基于J2EE的輕量級工作流管理系統(tǒng),其全稱是Java Business Process Management(業(yè)務(wù)流程管理)。它是覆蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域的一個開源、靈活、易擴展的可執(zhí)行流程語言框架。使用JBPM需要遵循ASL(Apache License Version 2.0)和EULA(JBoss End User License Agreement)協(xié)議,可以免費應(yīng)用于商業(yè)開發(fā)。它既能夠以嵌入模式與業(yè)務(wù)邏輯運行在同一個應(yīng)用之內(nèi),同時也能夠以獨立的模塊單獨運行于一個應(yīng)用之中。
JBPM的主要特色是在業(yè)務(wù)邏輯定義中使用了自定義的JPDL(JBPM Process Definition Language)來描述業(yè)務(wù)流程[1][2][3]。JPDL應(yīng)用了流程虛擬機(PVM)技術(shù)[4]、UML2.0活動圖和PetriNet算法三方面的知識,利用流程虛擬機控制了工作流狀態(tài)變遷,借鑒使用了PetriNet算法,擴充了活動圖的建模能力。同時,JBPM使用了Hibernate來管理其數(shù)據(jù)庫[5] ,借助Hibernate ORM的優(yōu)勢,JBPM可以部署在任何數(shù)據(jù)庫系統(tǒng)中,同時將數(shù)據(jù)管理職能分離出去,使其可以專注于業(yè)務(wù)邏輯的開發(fā)處理。
2 系統(tǒng)的總體設(shè)計
公告審查系統(tǒng)是一種主要面向事務(wù)處理的業(yè)務(wù)系統(tǒng),考慮到基礎(chǔ)平臺的適用性和擴展性,本系統(tǒng)的開發(fā)采用了標(biāo)準(zhǔn)的J2EE三層體系架構(gòu),即表現(xiàn)層、業(yè)務(wù)邏輯層與數(shù)據(jù)訪問層,方便管理者通過Web瀏覽器實現(xiàn)對公告業(yè)務(wù)的流程管理[6][7][8]。
(1)數(shù)據(jù)訪問層實現(xiàn)了對數(shù)據(jù)庫操作的封裝,用于存儲工作流運行所使用的數(shù)據(jù),以隔離具體業(yè)務(wù)和數(shù)據(jù)庫之間的關(guān)系。系統(tǒng)中需要處理的全部數(shù)據(jù)均存儲在關(guān)系型數(shù)據(jù)庫中,其中包括JBPM的全部工作流表,各類型車輛產(chǎn)品的公告參數(shù)信息,在檢測過程中生成的doc與pdf等各種格式的檢測報告文檔,以及車型圖像等二進(jìn)制文件。二進(jìn)制文件型數(shù)據(jù)存儲在BLOB字段中,并且在數(shù)據(jù)庫中保存文件的擴展名以及文件的打開方式等信息,以便文件下載到審查終端后能夠調(diào)用正確的應(yīng)用程序予以打開。
(2)業(yè)務(wù)邏輯層負(fù)責(zé)為工作流系統(tǒng)的運行提供服務(wù),實現(xiàn)對業(yè)務(wù)邏輯的封裝,隔離用戶操作的界面和具體業(yè)務(wù)邏輯。其主要關(guān)注點集中于業(yè)務(wù)規(guī)則的制定、流程的實現(xiàn)以及與業(yè)務(wù)需求有關(guān)的系統(tǒng)設(shè)計。例如車型審查時的審查規(guī)則與參數(shù)填報要求等。
(3)表示層即用戶界面層,提供用戶操作接口,實現(xiàn)用戶同工作流系統(tǒng)的交互,向用戶提供同工作流系統(tǒng)進(jìn)行交互的工具。工作流過程定義工具和Web界面的工作流客戶端構(gòu)成了用戶界面層。
采用上述開發(fā)模型,系統(tǒng)不僅實現(xiàn)了視圖、模型與控制器的徹底分離,而且還實現(xiàn)了業(yè)務(wù)邏輯層與持久層的分離。當(dāng)視圖層發(fā)生變化時,模型層只需要進(jìn)行很少的改動,并且數(shù)據(jù)庫的變化也不會對前端造成較大影響,提高了系統(tǒng)的可復(fù)用性。而且由于不同層級之間的耦合度較小,有利于團(tuán)隊成員進(jìn)行并行工作,極大的提高了開發(fā)效率。
3 工作流運行實現(xiàn)
公告審查工作的業(yè)務(wù)流程包括綜合部、審核部、技術(shù)部以及VIN部等多個部門的協(xié)同工作。公告產(chǎn)品的下達(dá)、審查與發(fā)布等工作完全在計算機網(wǎng)絡(luò)上完成,所有流程的節(jié)點時間、負(fù)責(zé)人、審核結(jié)果等信息均需被詳細(xì)的記錄在系統(tǒng)中。
3.1 業(yè)務(wù)流程分析
為構(gòu)建基于工作流引擎的公告審查系統(tǒng),需要在詳細(xì)分析公告業(yè)務(wù)過程的基礎(chǔ)上對整個業(yè)務(wù)流程進(jìn)行抽象,通過一組工作流要素合理的表達(dá)審查任務(wù)的分配與執(zhí)行等業(yè)務(wù)需求,即通過工作流要素實現(xiàn)對業(yè)務(wù)流程的描述。
公告產(chǎn)品在進(jìn)行合規(guī)性審查時,首先由生產(chǎn)企業(yè)將擬申報車型的參數(shù)信息提交至綜合部,由綜合部對申報參數(shù)進(jìn)行初步審查后,將其列入審查隊列,并按照一定分配原則為其指定技術(shù)審查專家。公告產(chǎn)品的技術(shù)審查內(nèi)容主要包括方案審查與VIN審查兩部分,其中每個部分均分為主檢人、審核人以及批準(zhǔn)人三級審查流程。當(dāng)在任何一個節(jié)點審查不通過時,系統(tǒng)流程均會將該產(chǎn)品退回至企業(yè)申報節(jié)點,由生產(chǎn)企業(yè)按照專家審查結(jié)論對申報數(shù)據(jù)進(jìn)行重新核實與修改,然后將產(chǎn)品重新提交至申請受理隊列。如果產(chǎn)品能夠順利通過全部三級審查,則該產(chǎn)品進(jìn)入公告產(chǎn)品的發(fā)布階段,整個審查流程結(jié)束。
3.2 工作流程實現(xiàn)
在設(shè)計與實施階段,本系統(tǒng)采用了Eclipse下的圖形化流程設(shè)計器GPD進(jìn)行工作流部分的開發(fā)。GPD是一套Eclipse插件,支持基于圖形的可執(zhí)行語言編輯。GPD不僅支持JPDL中內(nèi)置的節(jié)點類型,同時也支持JPDL的用戶自定義節(jié)點類型。同時,開發(fā)人員還可以根據(jù)自身需要擴展GPD以實現(xiàn)更多自定義節(jié)點類型的圖形化編輯。
在分析人員與開發(fā)人員之間的交流中,GPD扮演著非常關(guān)鍵的角色。GPD同時支持流程圖的編輯和流程語言的編寫,分析人員可以只使用圖形化界面來定義流程,而開發(fā)人員可以繼續(xù)在XML代碼中增加技術(shù)實現(xiàn)細(xì)節(jié)。這種圖形化的表示方法可以為開發(fā)人員、業(yè)務(wù)分析人員以及客戶提供統(tǒng)一的描述方式,能夠在很大程度上避免不同人員對需求的不同理解,提高開發(fā)效率,降低開發(fā)風(fēng)險。
3.3 流程的跟蹤與監(jiān)控
在公告審查系統(tǒng)中,用戶需要對所參與的產(chǎn)品審查流程進(jìn)行跟蹤與監(jiān)控,以全面了解產(chǎn)品審查的進(jìn)展情況。然而在JBPM中卻沒有提供與流程監(jiān)控相關(guān)的API接口,需要通過手工編程方式予以實現(xiàn)。本文將JBPM流程表中的JBPM_PROCESSDEFINITION(已發(fā)布流程表)、JBPM_PROCESSINSTANCE(流程實例表)和JBPM_TASKINSTANCE[9](任務(wù)實例表)進(jìn)行關(guān)聯(lián),實現(xiàn)了對系統(tǒng)流程的監(jiān)控功能。
首先通過JbpmContext取得已發(fā)布的最新版本流程定義信息,然后根據(jù)流程名稱查找到其對應(yīng)的所有流程實例,包括處于活動狀態(tài)、不活動狀態(tài)以及掛起狀態(tài)的流程實例。然后根據(jù)流程實例查找到當(dāng)前實例所在的位置,即流程實例當(dāng)前所在位置的任務(wù)實例,進(jìn)而可以從TaskInstance表中查詢出相關(guān)任務(wù)流程的執(zhí)行情況。
3.4 系統(tǒng)開發(fā)與實現(xiàn)
該平臺在Solaris 10平臺上開發(fā),選擇SSH框架整合工作流的設(shè)計,即:數(shù)據(jù)庫訪問層(Hibernate),業(yè)務(wù)邏輯層(Spring)和表示層(Struts),以O(shè)racle 10g DBMS作為后臺數(shù)據(jù)庫管理系統(tǒng)。
系統(tǒng)基本的業(yè)務(wù)流程是:在表示層中,首先通過JSP頁面實現(xiàn)用戶交互,負(fù)責(zé)發(fā)送用戶請求(Request)和接收服務(wù)器應(yīng)答(Response),然后根據(jù)Struts配置文件將ActionServlet控制器接收到的請求委派給相應(yīng)的Action進(jìn)行處理。在業(yè)務(wù)層中,管理服務(wù)組件的Spring IoC容器負(fù)責(zé)向Action提供業(yè)務(wù)模型層(Model)組件和數(shù)據(jù)訪問層組件(DAO)完成業(yè)務(wù)邏輯,并提供事務(wù)處理、對象緩存以及數(shù)據(jù)庫連接池等組件來提升系統(tǒng)性能和保證數(shù)據(jù)完整性。而在持久層中則依賴于Hibernate的對象/關(guān)系型映射和數(shù)據(jù)庫進(jìn)行交互,處理DAO組件的數(shù)據(jù)請求,并返回執(zhí)行結(jié)果。
4 結(jié)束語
本文分析了開源工作流引擎JBoss JBPM的功能與特點,并以公告電子政務(wù)平臺為例,介紹了基于JBPM工作流的公告審查系統(tǒng)的設(shè)計與開發(fā)方法。該系統(tǒng)實現(xiàn)了公告審查信息的統(tǒng)一化管理,實現(xiàn)了相關(guān)部門的協(xié)同辦公,提高了公告審查的工作效率與管理水平,為公告系統(tǒng)的開發(fā)提供了一種新的實踐方法。
參考文獻(xiàn):
[1]LIU Peng,ZHOU Bosheng.Research on workflow patterns based on JBPM and JPDL[C]//2008 IEEE Pacific-Asia Workshop on Computational Intelligence and Industrial Application.Wuhan,China:IEEE,2008:838-843.
[2]HAN Bing,XIA Danmei.Research and Design of Document Flow Model Based on JBPM Workflow Engine[C]//2009 International Forum on Computer Science-Technology and Applications.Chongqing,China:[s.n.],2009:336-339.
[3]WANG Yonggui,LI Haishan.Application and Research of JBPM workflow Based on JBoss Seam[C]//2010 2nd International Conference on Advanced Computer Control (ICACC).Shenyang,China:[s.n.],2010:515-518.
[4]JBoss Community.JBoss JBPM Overview[DB/OL].http://www.jboss.org/jbossjbpm,2009.
[5]顧文軒,王瓊,徐汀榮.基于JBPM的工作流管理系統(tǒng)的研究與設(shè)計[J].計算機應(yīng)用與軟件,2009(05):104-106.
[6]羅滇生,葛亮,姚堯.發(fā)電企業(yè)柔性工作流管理系統(tǒng)[J].電力系統(tǒng)自動化,2003(22):76-79.
[7]范延平,曾建鷹.基于J2EE架構(gòu)的工作流引擎的分析與設(shè)計[J].武漢大學(xué)學(xué)報(信息科學(xué)版),2005(12):1107-1110.
[8]PAN Hailan,JIANG Wenrong,LIN Shiwei.Research on collaboration software based on JBPM and lightweight J2EE framework[C]//2010 International Conference on E-Business and E-Government (ICEE).Guangzhou,China:[s.n.],2010:191-194.
[9]JBoss Community.JBPM4 Developers Guide [DB/OL].http://docs.jboss.com/jbpm/v4/devguid/html_single,2009.12.22.
作者簡介:程旭(1978-),男,天津人,工程師,碩士研究生,研究方向:軟件工程、信息檢索等。
作者單位:中國汽車技術(shù)研究中心,天津 300300
基金項目:中國汽車技術(shù)研究中心科研項目(項目編號:14141245)。