金建勛 葉巖明 周夢(mèng)熊 陳琰
摘要:為實(shí)現(xiàn)軟件外包協(xié)作,同時(shí)避免采用通用工作流的復(fù)雜度,提出了簡易工作流系統(tǒng)的實(shí)現(xiàn)方案,并在此基礎(chǔ)上實(shí)現(xiàn)了輕量級(jí)工作流引擎和圖形化的流程定義器。通過在公文流轉(zhuǎn)中的應(yīng)用實(shí)例,驗(yàn)證了該方案的可行性。
關(guān)鍵詞:工作流系統(tǒng);公文流轉(zhuǎn);流程定義器;辦公自動(dòng)化;工作流引擎
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)24-5746-04
Design of Simple Workflow System and Application in the Document Circulation
JIN Jian-xun, YE Yan-ming, ZHOU Meng-xiong, CHEN Yan
(Hangzhou Dianzi University, Hangzhou 310018, China)
Abstract: To realize software outsourcing cooperation, and avoid the complexity of the generic workflow, an architecture of simple work flow system is puts forward, and based on which,the lightweight workflow engine and graphical process designer are implemented. Through the application in document circulation, the feasibility of the architecture is verified.
Key words: workflow system; document circulation; process designer; office automation; workflow engine
軟件外包協(xié)作是提高軟件園綜合競爭力的重要手段,其中外包項(xiàng)目發(fā)包/接單流程化和標(biāo)準(zhǔn)化、開發(fā)協(xié)作化是軟件外包協(xié)作的核心內(nèi)容。這些內(nèi)容都涉及到多個(gè)公司或部門,他們之間的交互主要靠以文檔和表單等為形式的公文的流轉(zhuǎn)來實(shí)現(xiàn)。因此,實(shí)現(xiàn)基于工作流的公文流轉(zhuǎn)是軟件外包協(xié)作成功的首要條件。
近年來學(xué)術(shù)界和工業(yè)界陸續(xù)推出了多款工作流產(chǎn)品,就研究來說開源工作流系統(tǒng)得到了更為廣泛的關(guān)注,其中JBPM和Activiti是最受歡迎的兩款開源工作流系統(tǒng)。JBPM結(jié)合應(yīng)用了狀態(tài)圖+活動(dòng)圖+PetriNet的知識(shí),涵蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等多個(gè)領(lǐng)域,因此已成為目前應(yīng)用最廣泛的工作流項(xiàng)目;相對(duì)而言Activiti是一種輕量級(jí)可嵌入的BPM引擎,支持新的BPMN 2.0標(biāo)準(zhǔn),包括支持對(duì)象管理組(OMG),互操作性和云架構(gòu)。但開源項(xiàng)目往往都具有大而全的通病,在具體應(yīng)用中如果直接應(yīng)用將會(huì)導(dǎo)致系統(tǒng)變得非常龐大和臃腫。因此,為了適應(yīng)公文流轉(zhuǎn)的實(shí)現(xiàn),分析這兩款工作流的結(jié)構(gòu)和原理并進(jìn)行化繁為簡、有針對(duì)性地形成相應(yīng)的功能模塊將是十分必要的。簡易工作流系統(tǒng)就是由這些功能模塊組成,主要包括:工作流引擎和流程定義器;流程管理功能將被剝離出簡易工作流系統(tǒng),而在具體的應(yīng)用中實(shí)現(xiàn),例如在公文流轉(zhuǎn)過程中實(shí)現(xiàn)。
傳統(tǒng)的工作流系統(tǒng)都是采用XPDL作為流程定義語言,因此其流程定義器主要是實(shí)現(xiàn)圖形化組件和XPDL元素之間的對(duì)應(yīng)關(guān)系,而工作流引擎主要是實(shí)現(xiàn)XPDL的解析。雖然XPDL的應(yīng)用帶來了XML的各種好處,但是也無形中增加了系統(tǒng)本身的復(fù)雜性。為降低復(fù)雜性,實(shí)現(xiàn)公文流轉(zhuǎn)的簡易工作流系統(tǒng)采用數(shù)據(jù)庫表來代替XPDL作為流程定義。主要的幾張數(shù)據(jù)庫表定義如下:
流程表:主要描述流程的基本信息,包括流程的ID(FLOW_ID);流程名稱(FLOW_NAME);和流程的創(chuàng)建者(CREATOR)三個(gè)字段。
圖6公文流轉(zhuǎn)表的設(shè)計(jì)
在流程執(zhí)行過程中,任務(wù)之間的流轉(zhuǎn)主要以公文的形式進(jìn)行。公文流轉(zhuǎn)主要包括3個(gè)功能:公文的指定分派;上傳公文的管理;公文的下載。
通過公文流轉(zhuǎn)表,可以將公文文件和具體的流程、流程節(jié)點(diǎn)、用戶等關(guān)聯(lián)起來。下面重點(diǎn)介紹一下公文流轉(zhuǎn)的實(shí)現(xiàn)過程。
將USER_ID和LOAD_PATH關(guān)聯(lián),并且在文件路徑后增加指定的USER_ID標(biāo)志,如:a.txt[3,4]。上傳到服務(wù)器上。當(dāng)讀取路徑時(shí)將字符串拆分,獲取出該文件要分派的用戶,以此實(shí)現(xiàn)公文的指定分派。
將用戶上傳的所有公文信息用“|”標(biāo)識(shí)開;遍歷后進(jìn)行刪除,修改。
取出文件的路徑信息從數(shù)據(jù)庫中讀取出來,去掉USER_ID的標(biāo)志,做為指派用戶的下載路徑。
通過上面的分析與探討,簡易工作流系統(tǒng)在技術(shù)層面上能夠?qū)崿F(xiàn)公文流轉(zhuǎn),滿足軟件外包協(xié)作的基本要求。雖然目前各類工作流系統(tǒng)種類繁多,而且功能都非常強(qiáng)大,但是在具體的項(xiàng)目中是否需要采用這些復(fù)雜的工作流系統(tǒng),應(yīng)該具體問題具體分析,條件允許的話量身定做應(yīng)該是最好的方式。簡易工作流系統(tǒng)采用數(shù)據(jù)庫表和JavaBean設(shè)計(jì),能夠較好地支持可重用性和可擴(kuò)展性,但是無法應(yīng)用在復(fù)雜應(yīng)用場景下。