卓 皓
(福建幼兒師范高等??茖W(xué)校,福州 350007)
隨著教育信息化的發(fā)展,越來越多的高校開始自行設(shè)計(jì)信息管理系統(tǒng)供日常教學(xué)和行政工作使用。福建幼兒師范高等??茖W(xué)校(以下簡稱“閩幼專”)從2012年開始著手開發(fā)科研管理系統(tǒng)。為了實(shí)現(xiàn)科研審批流程處理的自動化,使用開源工作流引擎JBPM(Java Business Process Management)作為對科研流程審批和管理的核心載體,該工作流引擎強(qiáng)大的功能能夠?qū)θ5目蒲袑徟凸芾砉ぷ髌鸬綇?qiáng)大的支撐作用。但在設(shè)計(jì)過程中,JBPM工作流引擎西方式的管理模式和設(shè)計(jì)理念與學(xué)校所規(guī)定的審批流程在一些細(xì)節(jié)功能上有較大矛盾,流程回退即其中的一個典型問題。當(dāng)某個流程不符合要求時,往往需要退回給原始執(zhí)行人進(jìn)行重新編輯。這期間如果是多人聯(lián)合執(zhí)行的任務(wù),則需要退回給多個流程執(zhí)行者,經(jīng)常會涉及到多級回退,而JBPM工作流引擎缺乏相應(yīng)的回退機(jī)制。因此需要針對閩幼專的基本情況設(shè)計(jì)特殊的回退機(jī)制,并將該功能整合到JBPM工作流引擎中。
“回退”是辦公審批行為中比較常見的一個流程動作,在一定程度上能夠體現(xiàn)出辦公審批的效率和規(guī)范程度。成熟規(guī)范的審批流程,一般每個執(zhí)行環(huán)節(jié)都十分嚴(yán)謹(jǐn),“回退”情況出現(xiàn)得相對較少甚至根本不出現(xiàn)。西方發(fā)達(dá)國家的辦公審批行為十分規(guī)范,在實(shí)際審批流程中,基本不會出現(xiàn)退回重做的情況,這也就是JBPM作為世界級著名工作流引擎而缺少“回退”處理機(jī)制的主要原因。
在我國,由于體制性原因,政府機(jī)關(guān)和事業(yè)單位在辦公審批行為上受諸如上級文件規(guī)定、單位自身文件規(guī)定和其他法律法規(guī)的制約,因此流程十分復(fù)雜,經(jīng)常對不符合要求或者有欠缺的流程動作用到回退機(jī)制?;赝藱C(jī)制基本原理如圖1所示。
圖1 回退機(jī)制原理圖
由圖1可以看出,流程的執(zhí)行有許多執(zhí)行者參與,流程的創(chuàng)建者往往是初始執(zhí)行者,然后依次是執(zhí)行者1,執(zhí)行者2,…,執(zhí)行者N,向上一級執(zhí)行者的回退行為稱為“單級回退”,跨過若干個執(zhí)行者的回退行為稱為“多級回退”。成功而有效的回退機(jī)制必須達(dá)到3個標(biāo)準(zhǔn):一是流程必須成功回退給初始執(zhí)行者;第二是流程和行為相關(guān)的數(shù)據(jù)都必須回滾到目標(biāo)節(jié)點(diǎn)的當(dāng)時現(xiàn)場;第三是流程控制狀態(tài)必須回滾到目標(biāo)節(jié)點(diǎn)狀態(tài)。
對于工作流引擎,回退算法實(shí)現(xiàn)起來比較復(fù)雜,大部分工作流引擎不支持回退。所以為了實(shí)現(xiàn)回退,除了依靠復(fù)雜的算法來實(shí)現(xiàn)以外,還可以借助任務(wù)流、角色流和工作流引擎日志來實(shí)現(xiàn),可以在上下文環(huán)境中新增角色流和任務(wù)流的記錄,或者通過對工作流日志信息的讀取來間接實(shí)現(xiàn)。這種做法技術(shù)難度低,易于實(shí)現(xiàn),但效率較低。
在分析了若干回退機(jī)制實(shí)現(xiàn)方法后,筆者設(shè)計(jì)了一種使用泳道原理的回退機(jī)制。相對而言,泳道是一種比較科學(xué)合理且高效的實(shí)現(xiàn)方法。在JBPM工作流引擎中,泳道是用來分配一個流程中若干個任務(wù)的初始執(zhí)行者。當(dāng)?shù)谝粋€任務(wù)實(shí)例被分配到某個泳道之后,第一個任務(wù)實(shí)例的執(zhí)行者就確定下來,泳道內(nèi)的后續(xù)任務(wù)均由此人執(zhí)行。
福建幼兒師范高等??茖W(xué)??蒲泄芾硇畔⑾到y(tǒng)的審批回退流程為例,具體說明使用泳道概念設(shè)計(jì)和實(shí)現(xiàn)審批流程回退機(jī)制的原理(圖2)。
圖2 科研管理審批回退原理
新建泳道分配給審批任務(wù)的初次執(zhí)行者,由該執(zhí)行者發(fā)起流程;接著流程進(jìn)入文件規(guī)范性審核節(jié)點(diǎn),在該節(jié)點(diǎn)中文件和數(shù)據(jù)的規(guī)范性將被認(rèn)真審核,如果不符合相關(guān)規(guī)定的要求,則任務(wù)被退回到流程發(fā)起者;如果規(guī)范性審核通過,則進(jìn)入下面若干個任務(wù)節(jié)點(diǎn),這些節(jié)點(diǎn)的任務(wù)是審批,參與者是具有審批權(quán)限的相關(guān)負(fù)責(zé)人;審批負(fù)責(zé)人若認(rèn)為該任務(wù)需要重做,則將任務(wù)回退到流程發(fā)起者;如果不需要重做,則根據(jù)審批結(jié)果流程進(jìn)入結(jié)束環(huán)節(jié)。
使用泳道概念進(jìn)行任務(wù)分配的具體步驟如下:
(1)檢測Task任務(wù)屬性是否有swinlane這個對象實(shí)例,若有,則由任務(wù)實(shí)例taskInstance將特定的ActorID或者PooledActors分配給這個泳道。
(2)如果泳道實(shí)例不存在,則新建該實(shí)例swinlane,接著調(diào)用分配代理類assignmentHandler,通過代理機(jī)制獲取ActorID或者PooledActors,并將其指定為Task對象的執(zhí)行者。
第一任務(wù)執(zhí)行者將在首個任務(wù)實(shí)例泳道創(chuàng)建后被流程所記錄,該執(zhí)行者將在同一個泳道后續(xù)任務(wù)中繼續(xù)執(zhí)行任務(wù),利用泳道所特有的“記憶”機(jī)制,原始執(zhí)行者將在任務(wù)后續(xù)執(zhí)行時被分配任務(wù)。圖2所述流程需要兩個泳道,分別是“發(fā)起者”和“審批者”泳道,并將任務(wù)和泳道相互綁定。
用泳道原理設(shè)計(jì)的回退機(jī)制的核心控制文件是XML文件(其余Java實(shí)現(xiàn)代碼略),其中創(chuàng)建泳道的XML代碼如下:
在回退機(jī)制中,無論是多級回退或者是單級回退,只要將泳道分配給回退的任務(wù),就可以使得任務(wù)正?;赝说阶畛鯃?zhí)行者處,狀態(tài)現(xiàn)場可以同時返回。具體流程執(zhí)行數(shù)據(jù)不能夠回退,也不需要回退。
總之,通過使用泳道的基本原理對JBPM工作流引擎任務(wù)回退機(jī)制的研究和設(shè)計(jì),彌補(bǔ)了該引擎對于回退機(jī)制支持的不足,使該工作流引擎既能夠適用于不同的業(yè)務(wù)場景,又能夠擴(kuò)展并實(shí)現(xiàn)更具個性化的功能,滿足我國高校各種OA審批系統(tǒng)對于審批流程特殊的需求。
[1]卓皓.基于工作流引擎的科研審批流程的設(shè)計(jì)與實(shí)現(xiàn)[J].中國教育技術(shù)裝備,2011,10(33):111 -113.
[2]卓皓.多功能在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2010.
[3]卓皓.低耦合智能分布式工作流引擎的設(shè)計(jì)[J].赤峰學(xué)院學(xué)報(bào),2012,12:59 -61.
[4]高杰.深入淺出 JBPM[M].北京:人民郵電出版社,2009:21-23.