freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于oa系統(tǒng)的工作流引擎設(shè)計(jì)方案-資料下載頁(yè)

2025-05-03 22:32本頁(yè)面
  

【正文】 工作流系統(tǒng)的功能相對(duì)其他一般的管理系統(tǒng)功能較為單一,但是功能的邏輯性比較強(qiáng),在頁(yè)面上一個(gè)簡(jiǎn)單的操作,工作流引擎執(zhí)行的邏輯卻十分復(fù)雜。例如,用戶審批完表單按發(fā)送按鍵,引擎要進(jìn)行表單保存、獲取后續(xù)節(jié)點(diǎn)、判斷節(jié)點(diǎn)、產(chǎn)生工作項(xiàng)等。所以下面對(duì)一些重要功能的實(shí)現(xiàn)進(jìn)行詳細(xì)的描述。 實(shí)例化流程的遍歷算法一個(gè)流程模型本質(zhì)上是一種圖結(jié)構(gòu),流程的活動(dòng)在流程模型中以圖的結(jié)點(diǎn)形式定義。流程模型由客戶端定義工具定制并保存在數(shù)據(jù)庫(kù)中,流程的實(shí)例化等同于遍歷表示該模型的圖的每個(gè)結(jié)點(diǎn)。遍歷算法( 所示):[1] 利用一個(gè)活動(dòng)模型編號(hào)去獲取對(duì)應(yīng)的活動(dòng)模型[2] 判斷該活動(dòng)模型類別是否是并節(jié)點(diǎn),如果是并節(jié)點(diǎn),執(zhí)行[6],如果不是,執(zhí)行[5];[3] 調(diào)用getSources()獲取該節(jié)點(diǎn)的前節(jié)點(diǎn)數(shù)n;[4] 彈棧,用得到的節(jié)點(diǎn)編號(hào)實(shí)例化相應(yīng)節(jié)點(diǎn);[5] 執(zhí)行步驟[4](n1)次;[6] 利用getTargets()方法獲取當(dāng)前節(jié)點(diǎn)的后續(xù)節(jié)點(diǎn)編號(hào),壓到棧nextNodeStack里;[7] 實(shí)例化當(dāng)前節(jié)點(diǎn);[8] 如果棧nextNodeStack不為空,則取出一個(gè)編號(hào);[9] 跳到[1]。說明:該算法維護(hù)一個(gè)棧nextNodeStack ,該棧存儲(chǔ)的是活動(dòng)模型的編號(hào)。實(shí)例化流程核心代碼如下:public WorkItem initiActivities(BusinessProcessDef proDef, TableInstance tableIns) { /*實(shí)例化流程(略)*/ nextNodeStack = (nextNodeStack)。 while (!()) { curr_activityDefId = (String) ()。 activityDef = (curr_activityDefId)。 if (AND.equalsIgnoreCase(())) { num_sources = ()。 for (i = 1。 i num_sources。 i++) { other_activityDefId = (String) ()。 other_activityDef = businessActDefdao .findById(other_activityDefId)。 (other_activityDef, currProcess)。 } } nextNodeStack = (nextNodeStack)。 (activityDef, currProcess)。 } return reformNextActivity(start, currProcess, () .getStaffId())。 } 巧用Spring SimpleFormController獲取表單有兩種情況會(huì)打開表單,一是啟動(dòng)流程、二是打開工作項(xiàng)。這里使用了LaunchWorkControll類來(lái)實(shí)現(xiàn),它繼承了Spring Web MVC的SimpleFormController 類。當(dāng)客戶端以GET方式向該控制器發(fā)出請(qǐng)求,LaunchWorkControll中的formBackingObject方法將返回一個(gè)帶權(quán)限的表單對(duì)象。這里使用了兩個(gè)輔助bean類: 帶權(quán)限表單輔助類Item類集合了字段模型表、字段實(shí)例表和權(quán)限表三個(gè)表信息,表示一條帶權(quán)限值得表達(dá)字段記錄。Document類記錄了表單的標(biāo)題并以List的方式記錄了該表單的所有字段。loadDoc() 方法的返回值就是一個(gè)Document對(duì)象。 JSTL Core taglib和Spring bind處理表單顯示form method=post name=form_docid=form_doc action=c:url value=/table width=100% border=1 align=center bgcolor=CCCCCCtrtd colspan=2 align=centerc:out value=${} //td/trc:forEach var=item items=${} varStatus=loopStatus spring:bind path=[${}] trtd align=centerc:out value=${} //tdtdtextarea name=c:out value=${}.itemValue/ cols=90 rows=6 c:if test=${==39。readonly39。} readonly /c:if style=height: autoc:out value=${} //textarea/td/tr/spring:bind/c:forEach/table/form表單顯示也是該系統(tǒng)實(shí)現(xiàn)的一個(gè)難點(diǎn),如上代碼所示,table標(biāo)簽里只有兩行,即兩個(gè)tr標(biāo)簽,一個(gè)顯示表單標(biāo)題,另一行顯示字段。那么如何用一個(gè)tr標(biāo)簽顯示多個(gè)字段呢?這里使用JSTL Core taglib 進(jìn)行循環(huán)和邏輯判斷:c:forEach var=item items=${} varStatus=loopStatus此外,使用了Spring自訂的標(biāo)簽庫(kù)的bind標(biāo)簽功能。 流程導(dǎo)航核心對(duì)業(yè)務(wù)流程進(jìn)行導(dǎo)航是工作流引擎的核心功能,當(dāng)前執(zhí)行者提交工作之后,引擎第一步將尋找當(dāng)前活動(dòng)的后續(xù)活動(dòng)節(jié)點(diǎn),顯示給執(zhí)行者、或者讓執(zhí)行者進(jìn)行選擇。然后根據(jù)流程模型中活動(dòng)定義的參數(shù)決定是否插入新的工作項(xiàng)。該引擎的導(dǎo)航核心是reform()方法,它的參數(shù)是一個(gè)裝著后續(xù)節(jié)點(diǎn)ID的棧(targets)和流程實(shí)例ID。算法描述如下:[1] 判斷棧targets是否為空,為空則執(zhí)行[11],不為空?qǐng)?zhí)行[2];[2] 彈棧,獲取一個(gè)活動(dòng)模型ID;[3] 獲取該ID唯一對(duì)應(yīng)的活動(dòng)模型;[4] 判斷活動(dòng)模型是否為“AND”,如果不是,則執(zhí)行[10],如果是,則實(shí)行[5];[5] 獲取該活動(dòng)節(jié)點(diǎn)的所有前續(xù)節(jié)點(diǎn)編號(hào)放在棧sourceStack中;[6] 判斷該活動(dòng)模型并類型(joindkind)是否為“ALL”,若是,則是執(zhí)行[7],若不是,則執(zhí)行[8];[7] 根據(jù)sourceStack中的編號(hào),逐一獲取當(dāng)前活動(dòng)的前節(jié)點(diǎn)實(shí)例,判斷是否有未完成的活動(dòng),若沒有,則執(zhí)行[10],如果有未完成的活動(dòng),則執(zhí)行[11][8] 獲取該活動(dòng)的最少通過數(shù)min;[9] 根據(jù)sourceStack中的編號(hào),逐一獲取當(dāng)前活動(dòng)的前節(jié)點(diǎn)實(shí)例,累計(jì)完成的活動(dòng)實(shí)例數(shù),若大于等于min 則執(zhí)行[10],若小于min ,則執(zhí)行[11]。[10] 生產(chǎn)新的新的工作項(xiàng);[11] 結(jié)束。 public void reform(Stack targets, String currProcessId) { while (!()) { String nextDefNodeId = (String) ()。 // 獲取下一個(gè)活動(dòng)模型 BusinessActivityDef nextDefNode = businessActDefdao .findById(nextDefNodeId)。 // 獲取相應(yīng)的活動(dòng)實(shí)例 nextNode = (currProcessId)。 String nodetype = ()。 if (nodetype == null) nodetype = 。 String nextStaff = ().getStaffId()。 // 類型判斷 if ((COMM) || (END) || (SPLIT)) { (nextNode, currProcess, nextStaff)。} else if ((AND)) {// 并節(jié)點(diǎn) BusinessActivityInstance srcInsNode = null。 BusinessActivityDef srcDefNode = null。 String joinkind = ()。 if (joinkind == null) joinkind = 。 Stack sourceStack = new Stack()。 sourceStack = (sourceStack)。 if ((ALL)) { // 檢查是否所有源節(jié)點(diǎn)已經(jīng)完成工作 String sid = null。 boolean flag = true。 while (!()) { sid = (String) ()。 srcDefNode = (sid)。srcInsNode = srcDefNode .getActivityInsByProId(currProcessId)。 if (!().equalsIgnoreCase( COMPLETED)) {// pleted 為完成狀態(tài) flag = false。 break。 }} if (flag) { (nextNode, currProcess, nextStaff)。 } } else { int min = ()。 while (!() amp。amp。 min != 0) { srcDefNode = businessActDefdao .findById((String) ())。 srcInsNode = srcDefNode .getActivityInsByProId(currProcessId)。 if (() .equalsIgnoreCase(COMPLETED)) { min。 } } if (min == 0) { (nextNode, currProcess, nextStaff)。 }}}}}6 總結(jié)本次畢業(yè)設(shè)計(jì)實(shí)現(xiàn)了一個(gè)基于OA系統(tǒng)的工作流引擎,該系統(tǒng)能滿足一般辦公室辦公自動(dòng)化的要求,它與傳統(tǒng)工作流引擎相比,具有支持靈活的流程定制、文件權(quán)限設(shè)置精確以及結(jié)構(gòu)清晰、輕量級(jí)等優(yōu)點(diǎn)。 該引擎是在Eclipse ,應(yīng)用服務(wù)器是Tomcat ,數(shù)據(jù)庫(kù)是SQLServer2000。設(shè)計(jì)過程中運(yùn)用的技術(shù)或框架包括:Spring 、 JSTL、Ajax、JavaScript等。系統(tǒng)實(shí)現(xiàn)的重點(diǎn)功能包括:任務(wù)實(shí)時(shí)通知、動(dòng)態(tài)頁(yè)面顯示表單、表單權(quán)限控制、分節(jié)點(diǎn)手動(dòng)選擇發(fā)送等。本論文介紹了分析設(shè)計(jì)實(shí)現(xiàn)過程中使用的相關(guān)技術(shù),然后對(duì)工作流引擎的功能需求作了深入的闡述,并給出了詳細(xì)的設(shè)計(jì)方案。最后,介紹了重點(diǎn)功能的實(shí)現(xiàn)。不足之處:界面設(shè)計(jì)太粗糙、對(duì)于查詢功能沒實(shí)行分頁(yè)顯示。7 致謝參考文獻(xiàn)[1] :清華大學(xué)出版社,2001[2] ,2006[3] [荷蘭』Wil van der Aalst, Kees van Hee著王建民,、:清華大學(xué)出版社,2004[4] Tom Baeyens. The State of Workflow. [5] [6] Workflow Management Coalition. The Workflow Reference Model. WFMCTC001003, 1994[7] Workflow Management Coalition. Workflow Management Coalition Terminologyamp。Glossary. WFMCTC1011, 1999[8] Workflow Management Coalition. Workflow Client Application(Interface 2) Application Programming Interface (WAPI) Specification. WFMCTC1009,1998[9] Workflow Management Coalition. WflVIC Audit Data Specification. WFMCTC1015, 1998[10] Workflow Management Coalition. Workflow Process Definition Interface XML Process Definition Language. WFMCTC1025, 2002[11] ,2004[12] 肖茂兵,2006,第12期[13] 劉驍,何紅波, ,2007,第6期[14] W. M. P Van der Aalst, A. H. M. ter Hofstede, B. Kiepuszwski, and A. P. Barros. Workflow Patterns. :// , 2002[15] ,2006
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1