楊志+肖中杰
摘要:公文流轉(zhuǎn)系統(tǒng)是電子政務(wù)系統(tǒng)的重要組成部分,在政府和企事業(yè)單位中得到了廣泛的使用和普及。本文基于目前業(yè)界使用較為普遍的開源工作流引擎JBPM作為研究對(duì)象,針對(duì)高校的業(yè)務(wù)模式,提出了面向高校的公文流轉(zhuǎn)系統(tǒng),并將其應(yīng)用到高校公文流轉(zhuǎn)系統(tǒng)的開發(fā)中。首先,論文介紹了工作流的相關(guān)技術(shù),然后研究了JBPM工作流引擎的開發(fā)機(jī)制,分析了高校公文流轉(zhuǎn)系統(tǒng)的功能需求,并給出了系統(tǒng)主要設(shè)計(jì)方案,最后,基于JBPM工作流引擎以及高校的業(yè)務(wù)模式,實(shí)現(xiàn)了公文流轉(zhuǎn)系統(tǒng)。該系統(tǒng)的實(shí)施提高了工作效率和辦公自動(dòng)化水平。
關(guān)鍵詞:公文流轉(zhuǎn);工作流;JBPM;J2EE;辦公自動(dòng)化
O 引言
辦公自動(dòng)化系統(tǒng)已經(jīng)成為提高日常辦公效率、降低辦公成本的重要技術(shù)手段。通過對(duì)常見辦公自動(dòng)化系統(tǒng)的對(duì)比研究發(fā)現(xiàn),工作流技術(shù)己經(jīng)發(fā)展成為辦公自動(dòng)化系統(tǒng)的核心技術(shù)之一。通過引入工作流技術(shù),系統(tǒng)可以在復(fù)雜多變的工作模式、異構(gòu)環(huán)境下提供良好的互操作性,從而提高系統(tǒng)的性能和健壯性。
通過比較常見的工作流引擎技術(shù)發(fā)現(xiàn),以往的工作流開發(fā)結(jié)構(gòu)中,往往采用“業(yè)務(wù)驅(qū)動(dòng)”方式,造成業(yè)務(wù)代碼和流程代碼重復(fù)開發(fā),并產(chǎn)生大量冗余代碼,對(duì)于系統(tǒng)長(zhǎng)期發(fā)展和維護(hù)十分不利,需要將業(yè)務(wù)過程和流程處理過程進(jìn)行完全解耦合,如何提高代碼的復(fù)用率,減小冗余代碼,提高開發(fā)效率,是傳統(tǒng)工作流開發(fā)中面臨的重要問題。而JBPM具有靈活的流程定義語言和良好的數(shù)據(jù)庫移植性,提供了很多預(yù)留接口,具有足夠的彈性與良好的擴(kuò)展性,非常適合商業(yè)應(yīng)用的二次開發(fā),在一些復(fù)雜流程的處理中有一定優(yōu)勢(shì),已成為當(dāng)前主流的工作流引擎技術(shù)。綜合上述因素考慮,本論文結(jié)合高?,F(xiàn)有公文流轉(zhuǎn)的需求,采用JBPM 工作流引擎技術(shù)進(jìn)行公文流轉(zhuǎn)系統(tǒng)的開發(fā),并實(shí)現(xiàn)了校內(nèi)公文的正常流轉(zhuǎn)。
1 JBPM工作流引擎
1.1 JBPM簡(jiǎn)介
JBPM是包括了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等一系列相關(guān)領(lǐng)域的開源的輕量級(jí)框架,其特點(diǎn)靈活、易擴(kuò)展。同以往面向?qū)ο蠛兔嫦蚯忻婢幊痰拈_發(fā)框架不同,JBPM是面向過程的框架,用于業(yè)務(wù)流程的管理,它使用自己的流程定義語言JPDL進(jìn)行流程定義,較其他工作流產(chǎn)品通俗易懂,同時(shí)引擎底層基于Active Diagram模型,使用Hibemate作為持久層框架,可以配置到任何主流數(shù)據(jù)庫如MySQL、Oracle等,數(shù)據(jù)庫移植性好。
1.2 JBPM開發(fā)流程
其開發(fā)流程都是通過提供的Servlce類進(jìn)行的,并由流程引擎ProcessEngine獲得。開發(fā)流程如下:
①確定數(shù)據(jù)庫。因?yàn)镴BPM使用了Hibemate作為其OR-Mapping框架,所以可以選擇任意Hibemate支持的數(shù)據(jù)庫。數(shù)據(jù)庫的初始化任務(wù)可由JBPM主動(dòng)實(shí)現(xiàn),也可通過antgenerate.ddl自動(dòng)生成SQL語句。
②使用JPdl定義工作流,生成流程定義文件。流程定義文件包括 processdefinition.xml、processimage.jpg、gpd.xml。其中processdefinition.xml是工作流的流程定義文件,processimage.jpg為流程展示圖片,gpd.xml為流程中各個(gè)節(jié)點(diǎn)坐標(biāo)位置等信息的文件。
③使用Antcreate.pde生成pde包的丁作目錄,使用antbuild.precess.archives生成pde包。
④使用Antdeploy.process.archives,將生成的pde部署到數(shù)據(jù)庫。
⑤使用JBPM API接口開發(fā)相應(yīng)的業(yè)務(wù)流程。
2 系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)流程設(shè)計(jì)
公文流轉(zhuǎn)系統(tǒng)主要涉及到校發(fā)文、外來公文以及簽呈幾個(gè)業(yè)務(wù)流程的管理工作。每個(gè)業(yè)務(wù)流程涉及到擬稿、審批、流轉(zhuǎn)、會(huì)簽、意見等活動(dòng),以及擬稿人、單位負(fù)責(zé)人、公文管理員、校辦、教代會(huì)、會(huì)簽單位、校領(lǐng)導(dǎo)等角色。本文均以流程泳道圖來表示。
①發(fā)文流程
發(fā)文流程分為六個(gè)階段:由發(fā)文的承辦單位擬稿人起草公文;經(jīng)該單位負(fù)責(zé)領(lǐng)導(dǎo)復(fù)核后,公文提交至兩辦秘書科;秘書科發(fā)文管理員對(duì)公文進(jìn)行初審;初審?fù)ㄟ^后,發(fā)文管理員對(duì)公文流轉(zhuǎn)進(jìn)行控制,可根據(jù)公文是否簡(jiǎn)明流程、是否涉及其他部處等選擇發(fā)送給相關(guān)審批環(huán)節(jié),其公文流轉(zhuǎn)為星形結(jié)構(gòu),即以發(fā)文管理員為核心的“請(qǐng)求響應(yīng)式”公文審批;經(jīng)各環(huán)節(jié)審批通過后,發(fā)文管理員提交校領(lǐng)導(dǎo)簽發(fā);校領(lǐng)導(dǎo)簽發(fā)完畢后,發(fā)文管理員進(jìn)行校發(fā)公文的排版與發(fā)布。流程圖如圖1所示:
②收文流程
外來公文流轉(zhuǎn)程序主要分為三個(gè)階段:收文登記、擬辦;領(lǐng)導(dǎo)批閱;部門反饋及歸檔。其典型流程描述為:收文管理員登記外來公文,錄入公文標(biāo)題、類別、文號(hào)等信息;兩辦主任提出擬辦意見;收文管理員根據(jù)擬辦意見,進(jìn)行公文流轉(zhuǎn)控制,傳遞給校領(lǐng)導(dǎo)批復(fù)或知會(huì)各單位及中層干部等;根據(jù)領(lǐng)導(dǎo)批復(fù)的意見,轉(zhuǎn)相關(guān)單位,要求其進(jìn)行反饋;公文流轉(zhuǎn)完畢后,辦結(jié)公文,進(jìn)行歸檔。流程圖如圖2所示。
③簽呈流程
簽呈流程主要分為四個(gè)階段:起草一主管部處審核一公文簽批流轉(zhuǎn)一相關(guān)部處反饋。具體流程為:各單位簽呈擬稿人起草簽呈并呈送單位負(fù)責(zé)人;單位負(fù)責(zé)人進(jìn)行復(fù)核,審核通過后選擇發(fā)送該事由的主管部處;主管部處審核通過后,呈送校辦;校辦的簽呈管理員根據(jù)該事由的主管領(lǐng)導(dǎo)及主管部處的簽署意見,選擇請(qǐng)求相關(guān)校領(lǐng)導(dǎo)批示意見;批示完畢后,兩辦簽呈管理員根據(jù)批示意見,選擇發(fā)送簽呈報(bào)送單位填寫常委會(huì)討論結(jié)果或者發(fā)送管理部門填寫辦理執(zhí)行情況。流程圖如圖3所示。
2.2 系統(tǒng)架構(gòu)設(shè)計(jì)
從技術(shù)層面來講,公文流轉(zhuǎn)系統(tǒng)采用Vaading+Struts+Spring+Hibemate的框架。Vaading是最近幾年比較流行的一款用于創(chuàng)建RIA的優(yōu)秀開發(fā)框架,它擁有豐富的UI界面組件庫,先進(jìn)的事件監(jiān)聽和數(shù)據(jù)綁定功能,并且有強(qiáng)大的CSS渲染功能,對(duì)前臺(tái)開發(fā)提高效率起到了很大的作用。系統(tǒng)的業(yè)務(wù)邏輯層和數(shù)據(jù)層采用目前Web應(yīng)用開發(fā)常見的Srping+Hibernate輕量級(jí)開源框架,由此來完成事務(wù)管理、持久化、面向切面的編程以及OR-Mapping等功能。公文流轉(zhuǎn)的工作流引擎采用JBPM2.0框架,采用CAS實(shí)現(xiàn)SSO單點(diǎn)登錄功能,基于OAuth2.0標(biāo)準(zhǔn),實(shí)現(xiàn)對(duì)第三方系統(tǒng)的授權(quán)和認(rèn)證。分層體系結(jié)構(gòu)如圖4所示。endprint
2.3 系統(tǒng)功能結(jié)構(gòu)設(shè)計(jì)
公文流轉(zhuǎn)系統(tǒng)包括工作配置系統(tǒng)、工作流監(jiān)控系統(tǒng)、文件管理系統(tǒng),其中監(jiān)控系統(tǒng)中又包括短信子系統(tǒng)。工作流配置系統(tǒng)用來定義工作流程,通過流程監(jiān)控系統(tǒng)來實(shí)現(xiàn)工作流引擎的管理,接收來自工作流配置系統(tǒng)中預(yù)定義的工作流配置數(shù)據(jù),對(duì)于逾期未辦理完成者,由系統(tǒng)發(fā)出短信通知。T作流監(jiān)控系統(tǒng)以短信子系統(tǒng)為基礎(chǔ),流轉(zhuǎn)公文到達(dá)辦理人的通知是調(diào)用短信系統(tǒng)實(shí)現(xiàn)的。用戶在收到短信后對(duì)公文進(jìn)行處理,然后發(fā)送給下一步驟的辦理人[8]。公文流轉(zhuǎn)系統(tǒng)的功能層次如圖5所示:
3 系統(tǒng)應(yīng)用程序設(shè)計(jì)與實(shí)現(xiàn)
本公文流轉(zhuǎn)項(xiàng)目總共有20個(gè)子項(xiàng)目,portal.oa.workflow為公文流轉(zhuǎn)主工程。其他包括ws.rs.auth文檔,與授權(quán)認(rèn)證相關(guān);ws.rs.oa,與用戶、角色、組織結(jié)構(gòu)等相關(guān);data.tools實(shí)現(xiàn)批量導(dǎo)人數(shù)據(jù)工具;ftp.client ftp為客戶端;signets.client為數(shù)字簽名客戶端;sms.client為短信客戶端;support.jersey,封裝webservlce框架;support.spring,封裝Spring框架;support.vaadin,封裝vaadin框架;tju.utils為基本工具包;tju.vaadin為vaading 工具包;ws.rs.client.oa為oa客戶端;ws.rs.client.auth為客戶端;ws.rs.common為通用工具包;ws.rs.exception封裝異常信息;ws.rs.model封裝model信息。其中項(xiàng)目 portal.oa.worktlow . ws.rs.auth、ws.rs.oa ,是核心的三個(gè)Web service應(yīng)用,采用Jersy+Spring+Hibemate框架,提供Rest API接口,公文流轉(zhuǎn)系統(tǒng)三層之間則通過基于Restful風(fēng)格的WebServlce接口進(jìn)行調(diào)用,所有資源請(qǐng)求首先需要使用HTTPS進(jìn)行用戶認(rèn)證,認(rèn)證方式為Basic HTTP accessauthentication[11]。調(diào)用流程如圖6所示:
4 結(jié)束語
本論文以青海民族大學(xué)公文流轉(zhuǎn)實(shí)際需求為開發(fā)背景,在對(duì)工作流理論進(jìn)行了深入細(xì)致的研究的基礎(chǔ)上,采用B/S架構(gòu)及分層體系架構(gòu),設(shè)計(jì)和實(shí)現(xiàn)了以JBPM為工作流引擎,基于Vaadin/Struts/Spring/Hibernate架構(gòu)的公文流轉(zhuǎn)系統(tǒng)。目前,該系統(tǒng)已投入實(shí)際使用,系統(tǒng)運(yùn)行穩(wěn)定可靠,效果良好。結(jié)果表明,該系統(tǒng)能有效提高公文流轉(zhuǎn)效率,提高學(xué)校辦公自動(dòng)化水平。endprint