版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 基于目錄樹(shù)的工作流引擎設(shè)計(jì)與實(shí)現(xiàn) 田雅軒【摘 要】目前,大多數(shù)工作流引擎流程復(fù)雜、環(huán)節(jié)較多,維護(hù)起來(lái)難度較大。并且在工作流發(fā)生變動(dòng)的情況下,很容易影響到任務(wù)正常流轉(zhuǎn)。為應(yīng)對(duì)工作流引擎在使用過(guò)程中出現(xiàn)的加載效率低、靈活性小、流轉(zhuǎn)受阻等問(wèn)題,提出了基于目錄樹(shù)結(jié)構(gòu)的工作流引擎設(shè)計(jì)。【關(guān)鍵詞】工作流;工作流引擎;目錄樹(shù);節(jié)點(diǎn)【abstract】most of the current workflow engine process complex, more links, it is difficult to maintain. and if cha
2、nges in workflow, it is easy to affect the normal circulation of official document. for the problem of loading efficiency to deal with workflow engine used in the process of low, small, flexible transfer resistance, puts forward the design of workflow engine based on tree structure.【key words】workfl
3、ow; workflow engine; the directory tree; node1 設(shè)計(jì)背景與目標(biāo)工作流引擎是根據(jù)角色、分工和條件的不同,提供對(duì)各應(yīng)用系統(tǒng)有決定作用的信息傳遞路由解決方案1。目前,市場(chǎng)上的工作流引擎系統(tǒng),流程事項(xiàng)的各環(huán)節(jié)和流轉(zhuǎn)路徑相對(duì)比較固定,當(dāng)流程發(fā)生變化時(shí),只能通過(guò)修改代碼方式進(jìn)行解決,因此,程序維護(hù)量比較大2。工作流的變動(dòng)不僅影響到程序的更改,同時(shí),還會(huì)影響到占用該工作流的任務(wù)正常流轉(zhuǎn),造成任務(wù)流轉(zhuǎn)受阻。雖然現(xiàn)在推出了很多工作流引擎的框架,例如,shark和jbpm3,可以在此基礎(chǔ)上制定個(gè)性化工作流引擎,來(lái)滿足我們對(duì)工作流靈活性和易維護(hù)性得要求4,但是當(dāng)工作流進(jìn)
4、行更改時(shí),必須將正在使用該工作流的任務(wù)進(jìn)行清理,任務(wù)必須走完流程或者被刪除重新發(fā)布,否則無(wú)法修改工作流內(nèi)容。因此,雖然解決了靈活性問(wèn)題,但在工作流維護(hù)方面又增加了額外的工作量。為此,基于.net平臺(tái),開(kāi)發(fā)了一種較輕量級(jí)的工作流引擎,用于任務(wù)流轉(zhuǎn)。同時(shí),為了保證在修改工作流的同時(shí)能夠正確處理占用該工作流且未流轉(zhuǎn)結(jié)束的任務(wù)。最終確定設(shè)計(jì)方案為:在更新或刪除工作流時(shí),如存在使用該工作流且未結(jié)束流轉(zhuǎn)過(guò)程的任務(wù),需要對(duì)任務(wù)的路由方向重新設(shè)置。2 工作流引擎模型構(gòu)建本工作流引擎在架構(gòu)上采用了目錄樹(shù)結(jié)構(gòu)方式,審批環(huán)節(jié)和審批人作為樹(shù)的葉子節(jié)點(diǎn),若為審批組則該節(jié)點(diǎn)下需要關(guān)聯(lián)審批組人員,則審批組內(nèi)的審批人員作為葉
5、子節(jié)點(diǎn)。2.1 節(jié)點(diǎn)模型2.1.1 審批環(huán)節(jié)名稱(chēng)在審批環(huán)節(jié)名稱(chēng)設(shè)置方面,所有名稱(chēng)采用結(jié)構(gòu)化處理,即環(huán)節(jié)名稱(chēng)全部從節(jié)點(diǎn)名稱(chēng)表中選取。2.1.2 審批對(duì)象審批人即審批對(duì)象是在任務(wù)流轉(zhuǎn)至各環(huán)節(jié)時(shí)處理該文的經(jīng)辦人,每個(gè)審批環(huán)節(jié)均有不同審批人負(fù)責(zé)任務(wù)審核、批閱和簽批。審批對(duì)象分為五類(lèi):審批個(gè)人、審批組、返回發(fā)文者、本部門(mén)負(fù)責(zé)人、總負(fù)責(zé)人。1)審批個(gè)人即選擇指定的人員作為審批人,當(dāng)任務(wù)流轉(zhuǎn)至特定環(huán)節(jié)時(shí),由此人負(fù)責(zé)任務(wù)的審批,其他人均看不到該文,也無(wú)法進(jìn)行審批。2)審批組審批組可以選擇一個(gè)部門(mén),例如,測(cè)試組、研發(fā)組、項(xiàng)目組;也可以預(yù)先設(shè)置一個(gè)小組作為審批組,例如,部門(mén)領(lǐng)導(dǎo)組、工會(huì)小組、黨員組。當(dāng)任務(wù)流轉(zhuǎn)至特
6、定環(huán)節(jié)前,需要用戶從該審批組中選擇人員作為下一審批人。3)返回發(fā)文者任務(wù)在上一環(huán)審批結(jié)束后會(huì)自動(dòng)返回至發(fā)文者進(jìn)行處理。例如,當(dāng)系統(tǒng)維護(hù)費(fèi)的預(yù)算經(jīng)中心領(lǐng)導(dǎo)審批后返回給發(fā)文者,發(fā)文者上傳發(fā)票后繼續(xù)下一流程審批。4)本部門(mén)負(fù)責(zé)人任務(wù)在發(fā)布后或上一審批結(jié)束后,自動(dòng)流轉(zhuǎn)至本部門(mén)領(lǐng)導(dǎo)進(jìn)行審批,當(dāng)本部門(mén)領(lǐng)導(dǎo)大于兩位以上,則需要用戶手工選擇其中一位審批領(lǐng)導(dǎo)。5)總負(fù)責(zé)人任務(wù)在發(fā)布后或上一審批結(jié)束后,自動(dòng)流轉(zhuǎn)至總負(fù)責(zé)人進(jìn)行審批,當(dāng)總負(fù)責(zé)人大于兩位以上,則需要用戶手工選擇其中一位審批領(lǐng)導(dǎo)。2.2 工作流操作工作流的操作包括工作流的建立、刪除,以及更新工作流,工作的修改操作還包括了:刪除節(jié)點(diǎn)、插入節(jié)點(diǎn)、更新節(jié)點(diǎn)內(nèi)容
7、。其中刪除工作流、更新工作流(包括:刪除節(jié)點(diǎn)、插入節(jié)點(diǎn)、更新節(jié)點(diǎn)內(nèi)容),此類(lèi)操作在執(zhí)行時(shí),需要判斷當(dāng)前操作的工作流是否被占用,如有任務(wù)使用此工作流并且該任務(wù)未流轉(zhuǎn)結(jié)束,則該任務(wù)將被“掛起”,需要將該任務(wù)轉(zhuǎn)向其他節(jié)點(diǎn),進(jìn)行下一步流轉(zhuǎn)。2.3 工作流接口設(shè)計(jì)在工作流設(shè)置過(guò)程中,通過(guò)調(diào)用workflow_interface()接口選擇節(jié)點(diǎn)類(lèi)型并對(duì)工作流進(jìn)行實(shí)例化。最終能夠?qū)崿F(xiàn)三種類(lèi)型的工作流,第一個(gè)種是以個(gè)人為審批對(duì)象的工作流person_approveflow();第二種是以組為審批對(duì)象的工作流group_approveflow(),每次任務(wù)在流轉(zhuǎn)到下一環(huán)節(jié)之前,需要從該組選擇下一審批人,然后進(jìn)行
8、流轉(zhuǎn);第三種是個(gè)人審批與組審批相結(jié)合的工作流person_groupflow(),即有些環(huán)節(jié)需要從組中選擇下一審批人,有些環(huán)節(jié)已固定審批人員,不用選擇。3 工作流引擎實(shí)現(xiàn)3.1 工作流創(chuàng)建在工作流構(gòu)建的過(guò)程中,需要將用戶的選項(xiàng)內(nèi)容以及關(guān)聯(lián)的表內(nèi)容進(jìn)行抓取,傳輸至工作流程表中,并生成目錄樹(shù)。具體事項(xiàng)如下: 1)通過(guò)public actionresult index()函數(shù)進(jìn)行初始化;2)通過(guò)遞歸方式:函數(shù)actionresultcreate(datatable table, lcsz lcsz, string id),分別創(chuàng)建各子樹(shù),并進(jìn)行實(shí)例化。3.2 工作流調(diào)用通過(guò)前序遍歷樹(shù)的遞歸方式調(diào)用工
9、作流進(jìn)行流轉(zhuǎn),并自左向右遍歷樹(shù)的每一個(gè)節(jié)點(diǎn),currentnode 為當(dāng)前節(jié)點(diǎn),nextnode為下一節(jié)點(diǎn),先訪問(wèn)第一個(gè)子樹(shù),直到訪問(wèn)至葉子節(jié)點(diǎn),再訪問(wèn)該層的兄弟節(jié)點(diǎn),再遍歷另一個(gè)兄弟子樹(shù),直至遍歷全部節(jié)點(diǎn),即流程全部走完。3.3 工作流修改/刪除工作流程內(nèi)容一旦發(fā)生變化,例如,工作流被修改,包括:增加節(jié)點(diǎn)、刪除節(jié)點(diǎn)、修改節(jié)點(diǎn)、刪除工作流,都將觸發(fā)check_trigger觸發(fā)器。通過(guò)check_trigger掃描當(dāng)前流轉(zhuǎn)過(guò)程中的任務(wù)是否占用該工作流,如果有任務(wù)被占用,工作流引擎自動(dòng)將任務(wù)置為“掛起”狀態(tài),需要將該任務(wù)進(jìn)行重置,重置方案為:1)將任務(wù)退回至初始狀態(tài);2)轉(zhuǎn)到其他工作流節(jié)點(diǎn);3)
10、轉(zhuǎn)到本工作流未被刪除/修改的節(jié)點(diǎn),如果該工作流即將被刪除,那么只能轉(zhuǎn)移到其他工作流節(jié)點(diǎn);最后更新或刪除工作流。在程序執(zhí)行的過(guò)程中,首先一旦出現(xiàn)triggeraction.delete和triggeraction.update操作,則執(zhí)行triggcontext.triggeraction觸發(fā)任務(wù),即將其變?yōu)椤皰炱稹睜顟B(tài),由修改者對(duì)任務(wù)重新設(shè)置。4 工作流引擎性能測(cè)試一般的工作流引擎是通過(guò)數(shù)據(jù)庫(kù)調(diào)取流轉(zhuǎn)路徑的數(shù)據(jù),而本設(shè)計(jì)則是直接訪問(wèn)已生成的目錄樹(shù),來(lái)調(diào)取任務(wù)流轉(zhuǎn)路由。記錄了1個(gè)用戶,10個(gè)用戶、50個(gè)用戶,100個(gè)用戶并發(fā)調(diào)用兩種工作流的平均執(zhí)行時(shí)間,過(guò)程為從任務(wù)流轉(zhuǎn)活動(dòng)開(kāi)始到結(jié)束。其中,1個(gè)
11、用戶時(shí),使用一般工作流引擎平均執(zhí)行時(shí)間為2.607s,基于目錄樹(shù)的工作流引擎平均執(zhí)行時(shí)間為1.477s;10個(gè)用戶時(shí),平均執(zhí)行時(shí)間分別為3.261s與1.763s;50個(gè)用戶時(shí),平均執(zhí)行時(shí)間分別為3.715s與1.904s;100個(gè)用戶時(shí),平均執(zhí)行時(shí)間分別為4.213s與2.024s。以上測(cè)試可以看出,對(duì)于執(zhí)行同一類(lèi)活動(dòng),使用本設(shè)計(jì)的工作流引擎比一般工作流引擎所用要少得多。且隨著并發(fā)數(shù)量的增加,這一現(xiàn)象變得更加顯著。5 結(jié)束語(yǔ)基于目錄樹(shù)的工作流引擎在建立工作流的過(guò)程中,操作簡(jiǎn)單,易于修改。在工作流調(diào)用過(guò)程中,通過(guò)性能測(cè)試得出平均執(zhí)行時(shí)間為1.792秒,時(shí)間復(fù)雜度為o(n),執(zhí)行效率較高。并針對(duì)
12、現(xiàn)有工作流設(shè)置過(guò)程中存在修改后造成流轉(zhuǎn)中任務(wù)路由錯(cuò)誤或受阻的情況,設(shè)計(jì)了工作流修改與任務(wù)流轉(zhuǎn)聯(lián)動(dòng)的機(jī)制,保證了占用所修改工作流的任務(wù)能夠重新選擇節(jié)點(diǎn)進(jìn)行新的路由。由于該工作流的設(shè)計(jì)剛初步完成,在有些流轉(zhuǎn)功能上還需要手工的參與,在實(shí)現(xiàn)全部自動(dòng)化路由方面,需要進(jìn)一步完善?!緟⒖嘉墨I(xiàn)】1武凌.工作流知識(shí)管理系統(tǒng)工作流引擎的研究j.計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(8):112-115.wu ling. study on workflow knowledge management system workflow engine. computer technology and development.
13、2010,20(8):112-115.2許悅珊.嵌入式工作流引擎的設(shè)計(jì)與應(yīng)用j.計(jì)算機(jī)時(shí)代,2009,199(1):20-24.xu ruishan. design and application of embedded workflow engine. computer era. 2009,199(1):20-24.3馬亞鋒,張玉扣.教研視野下主流開(kāi)源工作流引擎對(duì)比分析j.成才之路, 2014,413(1):60.ma yafeng, zhang yukou. analysis of teaching from the perspective of mainstream open source workflow engine. the road to success,2014,413(1):60.4馮天佑,梁立宇,李成華,等.基于activiti工作流引擎技術(shù)的電力行業(yè)業(yè)務(wù)流程管理系統(tǒng)j.信息通信,2013,130(8)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年牛津上海版七年級(jí)生物下冊(cè)月考試卷含答案
- 2025年外研版三年級(jí)起點(diǎn)九年級(jí)歷史上冊(cè)階段測(cè)試試卷含答案
- 2025年粵人版八年級(jí)地理上冊(cè)階段測(cè)試試卷
- 2025年粵教版九年級(jí)地理上冊(cè)月考試卷含答案
- 2025年人教版必修2歷史下冊(cè)階段測(cè)試試卷
- 2025年華東師大版高三歷史下冊(cè)月考試卷含答案
- 2025年統(tǒng)編版2024高三歷史上冊(cè)階段測(cè)試試卷
- 2025年度婚禮攝影服務(wù)合同范例匯編4篇
- 2025年度木門(mén)產(chǎn)品售后服務(wù)與客戶滿意度調(diào)查合同3篇
- 二零二五版綠色生態(tài)泥水工程分包合同(含雨水收集利用)4篇
- 道路瀝青工程施工方案
- 《田口方法的導(dǎo)入》課件
- 內(nèi)陸?zhàn)B殖與水產(chǎn)品市場(chǎng)營(yíng)銷(xiāo)策略考核試卷
- 醫(yī)生給病人免責(zé)協(xié)議書(shū)(2篇)
- 公司沒(méi)繳社保勞動(dòng)仲裁申請(qǐng)書(shū)
- 損傷力學(xué)與斷裂分析
- 2024年縣鄉(xiāng)教師選調(diào)進(jìn)城考試《教育學(xué)》題庫(kù)及完整答案(考點(diǎn)梳理)
- 車(chē)借給別人免責(zé)協(xié)議書(shū)
- 應(yīng)急預(yù)案評(píng)分標(biāo)準(zhǔn)表
- “網(wǎng)絡(luò)安全課件:高校教師網(wǎng)絡(luò)安全與信息化素養(yǎng)培訓(xùn)”
- 鋰離子電池健康評(píng)估及剩余使用壽命預(yù)測(cè)方法研究
評(píng)論
0/150
提交評(píng)論