




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、窗體頂端第一章 引 言1.1 輕量級(jí)工作流引擎的概念 輕量級(jí)的工作流引擎指的是從夠用、靈活和低成本的設(shè)計(jì)原則出發(fā),不追求工作流引擎的功能的完備和復(fù)雜,只是實(shí)現(xiàn)其中必不可少的功能和特征。在設(shè)計(jì)工作流引擎時(shí)主要考慮對(duì)其數(shù)據(jù)模型的定義和解釋、活動(dòng)之間的協(xié)調(diào)以及任務(wù)的分配和控制等功能提供支持,而不支持諸如提供內(nèi)建(built-in)的應(yīng)用開發(fā)工具、對(duì)應(yīng)用資料的定義和完整性維護(hù)、完善的異常處理以及長事務(wù)控制等功能。輕量級(jí)工作流引擎的概念的提出,給開發(fā)工作流管理系統(tǒng)的開發(fā)人員開辟了一條新的道路。工作流管理技術(shù)本身就是一項(xiàng)抽象復(fù)雜的技術(shù),它致力追求從企事業(yè)各種各樣的業(yè)務(wù)中抽取出一個(gè)通用的模型,由這個(gè)模型去描
2、述所有業(yè)務(wù)的一致性,以達(dá)到“放之四海皆可用”的程度。不過,要把眾多的而又錯(cuò)綜復(fù)雜的業(yè)務(wù)都集中在這個(gè)模型中,這是一件非常困難的工作,要經(jīng)過一段漫長的摸索歷程。而輕量級(jí)的概念讓我們認(rèn)識(shí)到可以從一般性的而又簡單的業(yè)務(wù)入手,為企事業(yè)快速的開發(fā)出一個(gè)適應(yīng)他們本身業(yè)務(wù)需求的而又帶有可擴(kuò)展性可移植性的信息管理系統(tǒng),為他們提高工作效率,并保證在一段很長的時(shí)間內(nèi)滿足不斷增加的業(yè)務(wù)需求。1.2 工作流管理系統(tǒng)的分類及本文的側(cè)重點(diǎn)根據(jù)工作流過程本身的特點(diǎn)、系統(tǒng)建模的方式、所使用的底層支撐技術(shù)、以及工作流過程的執(zhí)行方式等的不同而對(duì)工作流管理系統(tǒng)進(jìn)行相應(yīng)的分類。1.2.1 面向文檔的與面向過程的前者的側(cè)著點(diǎn)在于將電子形
3、式的文件、圖像等在有關(guān)的人員之間進(jìn)行分發(fā),以便能夠得到不同人的處理與審閱?,F(xiàn)有的文件管理與映像管理系統(tǒng)均屬此類。在面向過程的WFMS中,工作流被描述成一序列執(zhí)行環(huán)節(jié)。與各環(huán)節(jié)相應(yīng)都有待處理的資料對(duì)象。各環(huán)節(jié)的資料對(duì)象可以按不同的方式分發(fā)到其它環(huán)節(jié)中去,如可以將資料對(duì)象的值作為控制條件、或者依此資料對(duì)象組裝成其它的資料對(duì)象等。高端的WFMS一般都屬此類系統(tǒng)。1.2.2 結(jié)構(gòu)化的與即席的結(jié)構(gòu)化工作流指的是在實(shí)際工作過程中會(huì)反復(fù)重復(fù)、嚴(yán)格按照某個(gè)固定的步驟進(jìn)行的業(yè)務(wù)過程。定義此種工作流所需要的各種類型的信息可以通過對(duì)業(yè)務(wù)過程進(jìn)行詳細(xì)的分析而得到,從而得到完整的過程定義并在以后的應(yīng)用過程中反復(fù)使用。大
4、量的辦公程序,如公文處理、審批等都屬此類。即席工作流則是針對(duì)那些重復(fù)性不是很強(qiáng)或沒有重復(fù)性的工作流程的,關(guān)于這類流程執(zhí)行所需的有關(guān)參數(shù)(如參加者等)事先無法確定,而必須推遲到過程實(shí)例運(yùn)行時(shí)才能確定,同時(shí)在執(zhí)行過程中間還可能會(huì)發(fā)生一些意外的情況。這種動(dòng)態(tài)多變的特點(diǎn)在提供更高靈活性的同時(shí),也為過程的建模與執(zhí)行帶來更多的復(fù)雜性。1.2.3 基于郵件和基于數(shù)據(jù)庫前者使用電子郵件來完成過程實(shí)例執(zhí)行過程中消息的傳遞、資料的分發(fā)與事件的通知。低端的系統(tǒng)所使用的經(jīng)常就是此種方法,它可以充分發(fā)揮電子郵件系統(tǒng)在廣域環(huán)境下的資料分發(fā)功能,但整個(gè)系統(tǒng)將運(yùn)行于一種松散耦合的模式下。在基于數(shù)據(jù)庫的WFMS中,所有的資料都
5、保存在某種類型的DBMS中,過程的執(zhí)行實(shí)際上就是對(duì)這些資料的查詢與處理。高端的大規(guī)模系統(tǒng)所使用的一般都是此種方法。1.2.4 任務(wù)推動(dòng)的與目標(biāo)拉動(dòng)的前者指的是從過程的開始逐步地一個(gè)環(huán)節(jié)一個(gè)環(huán)節(jié)的執(zhí)行,當(dāng)某個(gè)活動(dòng)實(shí)例被處理完之后,后續(xù)的有關(guān)活動(dòng)將被創(chuàng)建并被激活,由此直至整個(gè)工作流程的完成。這是目前大多數(shù)面向過程的WFMS所使用的執(zhí)行方式。而在目標(biāo)拉動(dòng)的WFMS中,一個(gè)業(yè)務(wù)流程被看成是一個(gè)目標(biāo)。過程實(shí)例執(zhí)行時(shí),該目標(biāo)將被分解得到多個(gè)相互之間按一定約束條件的關(guān)聯(lián)起來的可執(zhí)行的多個(gè)環(huán)節(jié),其中各環(huán)節(jié)還可以當(dāng)成是子目標(biāo)而進(jìn)一步進(jìn)行分解。在各環(huán)節(jié)均執(zhí)行完畢之后,整個(gè)過程也就完成了。目標(biāo)拉動(dòng)是一種全新的執(zhí)行方
6、式,下一代的WFMS將具有此種特征。應(yīng)該說明的是:上述分類只是從不同的角度入手的。一般來說,后面那些特點(diǎn)將給WFMS帶來更好的靈活性,同時(shí)也將成為那些能夠支持跨機(jī)構(gòu)的大規(guī)模復(fù)雜工作流管理、面向關(guān)鍵任務(wù)的WFMS不可缺少的特征。1.2.5 本文的側(cè)重點(diǎn)本文的側(cè)重點(diǎn)不在于完全實(shí)現(xiàn)其中一種工作流管理系統(tǒng)的所有功能,更不在于實(shí)現(xiàn)所有種類的工作流管理系統(tǒng)的全部功能,前文已經(jīng)說過,這是一件非常困難的事情。那么我們的側(cè)重點(diǎn)在哪里呢?就在于綜合以上四種工作流管理系統(tǒng)的主要特點(diǎn),是一個(gè)面向文件的,基于數(shù)據(jù)庫的,由目標(biāo)拉動(dòng)的結(jié)構(gòu)化的工作流管理系統(tǒng),并且由此去設(shè)計(jì)和實(shí)現(xiàn)工作流管理系統(tǒng)的核心工作流引擎。從一般性來說,
7、目前大多數(shù)的企事業(yè)的業(yè)務(wù)都是事務(wù)申請(qǐng),公文流轉(zhuǎn),各項(xiàng)通知等等,這些業(yè)務(wù)或者需要查看,或者需要審批,而這些業(yè)務(wù)的資料基本上是以文件的形式保存在計(jì)算機(jī)上,而其中一些格式化的資料是保存在數(shù)據(jù)庫中,所以面向文件和面向數(shù)據(jù)庫是輕量級(jí)工作流引擎的一個(gè)重要特征。業(yè)務(wù)的發(fā)起和結(jié)束是一項(xiàng)過程化的任務(wù),任務(wù)又可以分解成一個(gè)一個(gè)環(huán)節(jié)任務(wù),而任務(wù)是帶有目的性的,由這個(gè)目的去拉動(dòng)這個(gè)過程中的一個(gè)一個(gè)的環(huán)節(jié)任務(wù),促使環(huán)節(jié)任務(wù)的推進(jìn),最終達(dá)到任務(wù)完成的目的。這些業(yè)務(wù)的過程化不是隨機(jī)的,而是已經(jīng)嚴(yán)格規(guī)定好的,只有遵循這些過程化的規(guī)則和流程環(huán)節(jié)才能完成整個(gè)業(yè)務(wù)。輕量級(jí)的工作流引擎就組合了以上這些,不追求工作流引擎的功能的完備和
8、復(fù)雜,以滿足一般性業(yè)務(wù)為目的,為企事業(yè)快速開發(fā)出適合他們業(yè)務(wù)的工作流管理系統(tǒng)。第二章 工作流管理系統(tǒng)參考模型簡介在闡述工作流引擎之前,我們來了解一下工作流技術(shù)的基本知識(shí)。早在幾年前,為了建立工作流管理系統(tǒng)的相關(guān)標(biāo)準(zhǔn),國際上成立了一個(gè)稱為“工作流管理聯(lián)盟”(簡稱WFMC)的國際組織。她提出了有關(guān)工作流管理系統(tǒng)的一些規(guī)范,定義了工作流管理系統(tǒng)的結(jié)構(gòu)及其與應(yīng)用、管理工具和其它工作流管理系統(tǒng)之間的應(yīng)用編程接口,也就是工作流系統(tǒng)參考模型。WFMC給出的工作流參考模型如下圖: 接口2接口3接口4接口1接口5過程定義工具工作流API與交換格式工作流執(zhí)行服務(wù)工作流機(jī)(工作流引擎)工作流管理工具其它工作流執(zhí)行服
9、務(wù)工作流機(jī)工作流客戶應(yīng)用工作流機(jī)直接調(diào)用的應(yīng)用圖2.1 工作流參考模型從圖中可以看出,參考模型包含了五類接口,分別是: 接口1:過程定義輸入輸出接口,這是工作流服務(wù)與工作流建模之間的接口,該接口提供的功能包括通信建立,工作流模型操作和工作流模型對(duì)象操作。 接口2:客戶端函數(shù)接口,這是工作流服務(wù)與客戶應(yīng)用之間的接口,這是最主要的接口規(guī)范,它約定所有客戶方應(yīng)用與工作流服務(wù)之間的功能操作方式。包括通信建立,工作流定義操作(對(duì)過程模型定義操作),過程實(shí)例管理功能,過程狀態(tài)管理功能,任務(wù)項(xiàng)列表/任務(wù)項(xiàng)處理功能,數(shù)據(jù)處理過程,過程監(jiān)控功能,其它的管理功能,應(yīng)用程序激活。 接口3:激活應(yīng)用程序接口,這是工作
10、流引擎和直接調(diào)用的應(yīng)用程序之間的接口,包括通信建立,活動(dòng)管理功能,數(shù)據(jù)處理功能。 接口4:工作流執(zhí)行服務(wù)之間的互操作接口,這是工作流管理系統(tǒng)之間的互操作接口,包括連接的建立,對(duì)工作流模型和其中對(duì)象的操作,對(duì)過程實(shí)例的控制和狀態(tài)描述,對(duì)活動(dòng)的管理,對(duì)資料進(jìn)行處理。 接口5:系統(tǒng)管理與監(jiān)控接口,這是工作流服務(wù)和工作流管理工具之間的接口,包括資源控制,角色管理,用戶管理,過程實(shí)例的管理,狀態(tài)管理,審核管理。五個(gè)接口以及對(duì)應(yīng)的API函數(shù)囊括了工作流管理系統(tǒng)的全部功能。一個(gè)完整的工作流管理系統(tǒng)就是以工作流引擎為中心,向外部部件(應(yīng)用程序或其它工作流引擎)提供這五個(gè)接口,提供其實(shí)現(xiàn)的所有功能。第三章 系統(tǒng)
11、分析與設(shè)計(jì)在所有準(zhǔn)備工作完成后,我們就開始進(jìn)行系統(tǒng)設(shè)計(jì)和設(shè)計(jì),構(gòu)造一個(gè)輕量級(jí)的工作流引擎。輕量級(jí)的工作流引擎并不完全實(shí)現(xiàn)WFMC所提出的工作流模型包含的五個(gè)接口,特別是接口4,在分布式工作流管理系統(tǒng)才具有該接口。既然我們從輕量級(jí)的概念出發(fā),我們就不再明顯區(qū)分各個(gè)接口的界限以及其所具有的特定的功能,以夠用、靈活和低成本的設(shè)計(jì)原則去設(shè)計(jì)出我們所理解的工作流引擎。我們運(yùn)用了面向?qū)ο蟮姆椒ǎ紫葟谋姸嗟臉I(yè)務(wù)需求中抽取出工作流模型所包含的對(duì)象,再分析各個(gè)對(duì)象之間的邏輯關(guān)系,然后提出一個(gè)系統(tǒng)結(jié)構(gòu),再進(jìn)行模塊劃分,數(shù)據(jù)庫設(shè)計(jì),最終完成類的設(shè)計(jì)。我們當(dāng)中所用到的建模工具就是ROSE UML。3.1 工作流模型
12、的設(shè)計(jì)對(duì)工作流模型的設(shè)計(jì)是工作流引擎設(shè)計(jì)的重要組成部分。 3.1.1 工作流模型的對(duì)象企事業(yè)經(jīng)營過程就是一項(xiàng)項(xiàng)業(yè)務(wù)的實(shí)現(xiàn)過程,我們從一般業(yè)務(wù)入手,并對(duì)這些業(yè)務(wù)進(jìn)行詳細(xì)的分析,研究,其結(jié)果就是得到一般性的業(yè)務(wù)對(duì)象,從而抽象成工作流模型對(duì)象。3.1.1.1 從一個(gè)簡單的業(yè)務(wù)實(shí)例看業(yè)務(wù)的需求目前企事業(yè)的一項(xiàng)基本事務(wù)就是出差管理。它主要是對(duì)企事業(yè)的人員因?yàn)槟撤N工作上的原因需要到別的地方出差進(jìn)行的管理。我們可以列出出差的相關(guān)步驟: 申請(qǐng)人需要出差,并且他(她)具有出差的權(quán)利; 申請(qǐng)人填寫出差表格,說明因何事出差,出差何處,申請(qǐng)出差金額,何時(shí)回來等等和出差相關(guān)的情況; 申請(qǐng)人需要其它說明的話,可以將更具體
13、的說明以文檔的形式保存下來; 申請(qǐng)人確認(rèn)申請(qǐng)無誤后提交申請(qǐng),等待申請(qǐng)的結(jié)果; 根據(jù)規(guī)定,該申請(qǐng)必須先讓申請(qǐng)人的上一級(jí)審批,那么該申請(qǐng)就會(huì)以一項(xiàng)工作項(xiàng)的形式交給該級(jí)領(lǐng)導(dǎo)處理; 處理該申請(qǐng)的領(lǐng)導(dǎo)對(duì)該申請(qǐng)進(jìn)行處理,他(她)會(huì)先查看該申請(qǐng)所有的資料,包括出差申請(qǐng)表和與之相關(guān)的其它文檔,然后對(duì)其進(jìn)行審批,審批的結(jié)果是同意那么該次申請(qǐng)會(huì)交給再下一級(jí)領(lǐng)導(dǎo)處理;審批的結(jié)果不同意,該申請(qǐng)被打回,通知申請(qǐng)人申請(qǐng)不通過的結(jié)果。等所有需要審批的領(lǐng)導(dǎo)都審批通過了,該申請(qǐng)就成功完成,通知申請(qǐng)人申請(qǐng)通過的結(jié)果;申請(qǐng)人得到申請(qǐng)的結(jié)果,如果審批通過則準(zhǔn)備出差,如果審批不通過則根據(jù)審批結(jié)果對(duì)該申請(qǐng)進(jìn)行修改,重新提交申請(qǐng); 申請(qǐng)事
14、務(wù)結(jié)束。這是一個(gè)簡單的業(yè)務(wù)實(shí)例,對(duì)該實(shí)例進(jìn)行分析我們可以得到該業(yè)務(wù)的一些對(duì)象: 申請(qǐng)人:他(她)屬于該企事業(yè)的某個(gè)部門的成員,并且具有啟動(dòng)該業(yè)務(wù)的權(quán)利; 審批領(lǐng)導(dǎo):他(她)也屬于該企事業(yè)的某個(gè)部門的成員,并且具有對(duì)該業(yè)務(wù)進(jìn)行處理的權(quán)利; 出差表格:它是該業(yè)務(wù)規(guī)定的格式化資料,并且是必須的 出差具體說明:它是該業(yè)務(wù)附加的資料,可以不要的 申請(qǐng)人已經(jīng)填寫好的出差表格:它是出差表格的實(shí)例化,代表一個(gè)具體的應(yīng)用 審批同意和不同意:它們是對(duì)該業(yè)務(wù)的處理,遵循一定的業(yè)務(wù)規(guī)則 申請(qǐng):這是一個(gè)過程,不是一個(gè)動(dòng)作,需要時(shí)間和人的活動(dòng)才能完成 審批:這是一個(gè)活動(dòng),是過程的一部分,并且可以向另外一個(gè)活動(dòng)轉(zhuǎn)化 其它應(yīng)
15、用程序:申請(qǐng)人要填寫出差具體說明時(shí)要調(diào)用相應(yīng)的外部應(yīng)用程序編輯該說明并以一定的格式保存下來,審批領(lǐng)導(dǎo)要查看出差具體說明時(shí)也要調(diào)用相應(yīng)的外部應(yīng)用程序打開該說明并以一定的格式顯示出來。從這些業(yè)務(wù)對(duì)象,再利用工作流技術(shù),我們可以得到工作流模型的一些基本對(duì)象: 用戶:正如申請(qǐng)人,審批領(lǐng)導(dǎo),他們就是工作流管理系統(tǒng)的用戶,由他們?nèi)ナ褂迷撓到y(tǒng)的各種功能,并且直接參與業(yè)務(wù)活動(dòng),促使業(yè)務(wù)的完成。 角色:有些人可以申請(qǐng)出差,有些人對(duì)出差申請(qǐng)可以審批,這兩種不同的人可以作為兩個(gè)不同的角色。角色是具有某種使用系統(tǒng)特定功能的權(quán)利的一個(gè)人員或多個(gè)人員的組合。 工作流應(yīng)用資料:出差申請(qǐng)表格,出差具體說明,這些就是對(duì)應(yīng)某個(gè)具
16、體業(yè)務(wù)(這里是出差管理)的相關(guān)資料,根據(jù)這些業(yè)務(wù)資料我們可以對(duì)該業(yè)務(wù)進(jìn)行處理。 需激活的應(yīng)用程序:在需要其它應(yīng)用程序提供支持的時(shí)候,會(huì)去激活這些應(yīng)用程序。 流程:整個(gè)出差申請(qǐng)的過程就是一個(gè)流程,它從整體去描述一個(gè)業(yè)務(wù)。 環(huán)節(jié):又稱活動(dòng),它反映了業(yè)務(wù)流程的局部情況,通常業(yè)務(wù)流程是由一個(gè)一個(gè)的環(huán)節(jié)組成。 流程實(shí)例:將該出差申請(qǐng)這個(gè)業(yè)務(wù)流程實(shí)例化,就得到一個(gè)流程實(shí)例。 環(huán)節(jié)實(shí)例:將流程的其中一個(gè)環(huán)節(jié)實(shí)例化,就得到一個(gè)環(huán)節(jié)實(shí)例。 業(yè)務(wù)規(guī)則:業(yè)務(wù)的開始和結(jié)束需要一定的條件,在處理業(yè)務(wù)的過程中必須按照一定的規(guī)則,這些都是業(yè)務(wù)規(guī)則,只有嚴(yán)格遵循業(yè)務(wù)規(guī)則,業(yè)務(wù)才能完成。3.1.1.2 工作流對(duì)象的具體分析和說
17、明通過一個(gè)具體的業(yè)務(wù)我們可以得到工作流模型的一些對(duì)象,那么我們再對(duì)其他一般性業(yè)務(wù)進(jìn)行分析,研究,我們就會(huì)找到它們的共同點(diǎn),并歸納出基于這些業(yè)務(wù)的公共的對(duì)象,這些公共的對(duì)象的組合,就是一個(gè)通用的模型,也就是工作流模型,這個(gè)模型能去描述每個(gè)業(yè)務(wù),是我們追求輕量級(jí)工作流引擎的最終成果。 用戶:業(yè)務(wù)的執(zhí)行者和參與者,對(duì)應(yīng)于企事業(yè)的每一個(gè)雇員,是一個(gè)獨(dú)立的、具有一定行為能力和一定技術(shù)能力的人的實(shí)體; 角色:以技能為前提,能夠完成某項(xiàng)功能的人員的總稱; 部門:對(duì)應(yīng)于企事業(yè)的靜態(tài)結(jié)構(gòu)劃分,由企事業(yè)的實(shí)際部門設(shè)置情況來決定,可以是傳統(tǒng)的面向職能的,也可以是現(xiàn)在流行的面向過程與客戶的; 職位:以行政責(zé)任為前提,
18、代表了管理上的等級(jí)關(guān)系; 工作組:以執(zhí)行某一任務(wù)為目標(biāo)而動(dòng)態(tài)組建的、跨部門劃分的一種組織結(jié)構(gòu); 流程:對(duì)應(yīng)于一個(gè)業(yè)務(wù)過程,表示一個(gè)業(yè)務(wù)由發(fā)起、處理、結(jié)束的一個(gè)過程; 流程實(shí)例:對(duì)應(yīng)于一個(gè)業(yè)務(wù)流程具體應(yīng)用,是業(yè)務(wù)流程實(shí)例化的表現(xiàn)形式; 環(huán)節(jié):對(duì)應(yīng)于業(yè)務(wù)流程中一個(gè)單一的業(yè)務(wù)操作,是流程按照業(yè)務(wù)要求的細(xì)化; 環(huán)節(jié)實(shí)例:對(duì)應(yīng)于一個(gè)環(huán)節(jié)的具體應(yīng)用,是環(huán)節(jié)實(shí)例化的表現(xiàn)形式; 工作流定義主信息:描述一個(gè)工作流模型的主要信息,從整體來描述工作流模型; 工作流附件信息:描述一個(gè)工作流模型所用到的附件信息,也就是工作流應(yīng)用資料,或者叫業(yè)務(wù)資料。按照WFMC提出的工作流模型,這不是工作流模型所包含的對(duì)象,可是我們對(duì)
19、其進(jìn)行格式化,把它抽取成一個(gè)模型對(duì)象,用來規(guī)定了工作流模型在具體應(yīng)用時(shí)所需業(yè)務(wù)資料的格式,我們把它分為兩類: 表格類型:這是以表格的形式保存附件信息,可以用關(guān)系結(jié)構(gòu)來定義附件信息,并保存在數(shù)據(jù)庫中,每一條記錄就是一個(gè)該附件的實(shí)例; 文檔類型:只是以文件形式保存附件信息,可以是work文檔,也可以是文本文件,它的實(shí)例化是就是一個(gè)一個(gè)帶有對(duì)應(yīng)某個(gè)業(yè)務(wù)應(yīng)用標(biāo)志的文件,保存在硬盤上 工作流實(shí)例信息:描述一個(gè)工作流模型實(shí)例化的信息,也作為啟動(dòng)一個(gè)工作流的信息,它記錄該業(yè)務(wù)流程隨著時(shí)間和人員的參與處理的不斷變化,直到整個(gè)業(yè)務(wù)的結(jié)束; 工作項(xiàng)信息:描述參與某個(gè)業(yè)務(wù)應(yīng)用時(shí)被分配到的一項(xiàng)任務(wù),這就體現(xiàn)了參與人員
20、和系統(tǒng)交互的典型特征; 業(yè)務(wù)規(guī)則:描述業(yè)務(wù)在運(yùn)行的過程中必須要遵守的規(guī)定和原則,也是業(yè)務(wù)活動(dòng)得以向另一個(gè)活動(dòng)推進(jìn)的規(guī)則。我們把它分為四類規(guī)則,分別是: 自動(dòng)型:它主要描述一些只給參與人員查看業(yè)務(wù)信息的業(yè)務(wù)規(guī)則,例如通知、公文流轉(zhuǎn)等等業(yè)務(wù)。該類業(yè)務(wù)不需要參與人員去審批或其它人為上的處理,只需要參與人員去查看其中的內(nèi)容就足夠,整個(gè)業(yè)務(wù)流程的完成是全自動(dòng)的。 與聚合:業(yè)務(wù)活動(dòng)的完成是需要參與該活動(dòng)的所有人員都進(jìn)行人為處理,其中有一個(gè)人員沒對(duì)其進(jìn)行處理,整個(gè)活動(dòng)只能停在原地,等待所有人員的處理,當(dāng)最后一個(gè)參與人員執(zhí)行了處理工作,它才能完成。 或聚合:在參與某一業(yè)務(wù)活動(dòng)的人員當(dāng)中只要有一個(gè)對(duì)其進(jìn)行處理,
21、整個(gè)活動(dòng)就可以完成。 投票聚合:統(tǒng)計(jì)參與該活動(dòng)的參與人員的處理結(jié)果,當(dāng)滿足一定條件該活動(dòng)才能完成。 轉(zhuǎn)換條件:描述流程、活動(dòng)狀態(tài)改變時(shí)需要的條件,用于業(yè)務(wù)運(yùn)行過程中的約束。例如流程的完成必須等待所有活動(dòng)的完成才能完成,活動(dòng)的完成必須按照業(yè)務(wù)規(guī)則去完成等等; 需激活的應(yīng)用程序:工作流管理系統(tǒng)需要其它應(yīng)用程序的支持,例如編輯和查看文本文件信息等等; 日志信息:描述工作流中所有的狀態(tài)改變、事件和控制流相關(guān)資料的變化,工作流實(shí)例和環(huán)節(jié)實(shí)例的啟動(dòng)、結(jié)束、掛起和激活等等信息都會(huì)記錄下來,以便對(duì)其進(jìn)行管理。3.1.2 對(duì)象之間的邏輯關(guān)系在找出工作流模型的對(duì)象后,我們就開始分析它們之間的業(yè)務(wù)邏輯關(guān)系。3.1.
22、2.1 對(duì)對(duì)象進(jìn)行分類以及各個(gè)分類中對(duì)象之間的關(guān)系到此為止,我們有必要對(duì)工作流模型對(duì)象進(jìn)行一下分類,根據(jù)工作流對(duì)象對(duì)工作流管理系統(tǒng)所起的作用我們可以分成以下幾類: 組織模型組織模型描述了企事業(yè)的組織機(jī)構(gòu)關(guān)系,包括的對(duì)象有用戶,部門,職位,角色,工作組,它們的關(guān)系可以用下圖表示: 設(shè)置負(fù)責(zé)組成組成資格組成部門職位用戶工作組角色圖3.1 組織模型結(jié)構(gòu) 從圖中可以看到它們之間的關(guān)系,用戶是基本的單位,部門是由用戶組成,每個(gè)用戶對(duì)應(yīng)一個(gè)職位,負(fù)責(zé)該職位所要求的職能,用戶憑著某種資格賦予一種角色,工作組也由用戶組成,也可以由角色組成。這幾個(gè)基本的對(duì)象以及其關(guān)系所構(gòu)成的組織模型,已經(jīng)可以滿足輕量級(jí)工作流引
23、擎對(duì)組織模型的需要了。 工作流定義模型工作流定義模型描述了工作流模型的定義信息,包括工作流定義主信息,流程定義信息,環(huán)節(jié)定義信息,工作流附件信息,業(yè)務(wù)規(guī)則。它們之間的關(guān)系如下圖:圖3.2 工作流定義模型結(jié)構(gòu)包含包含包含包含遵循包含工作流定義附件信息主信息業(yè)務(wù)規(guī)則環(huán)節(jié)流程包含 流程是包含若干環(huán)節(jié)的,而環(huán)節(jié)遵循一定的業(yè)務(wù)規(guī)則,再加上工作流主信息和附件信息,共同構(gòu)成工作流定義模型。 工作流實(shí)例模型工作流實(shí)例模型描述了工作流模型實(shí)例化時(shí)的信息,通過這些信息我們可以知道實(shí)例過程中的各種狀態(tài)變化和最終的結(jié)果,因而得到一個(gè)業(yè)務(wù)具體應(yīng)用的情況。它包括流程實(shí)例,環(huán)節(jié)實(shí)例,工作流實(shí)例信息,工作項(xiàng)信息和轉(zhuǎn)換條件,它
24、們之間的關(guān)系如下圖: 記錄記錄細(xì)化細(xì)化影響影響影響影響記錄記錄轉(zhuǎn)換條件環(huán)節(jié)實(shí)例信息流程實(shí)例信息工作項(xiàng)信息工作流實(shí)例信息日志信息日志信息細(xì)化圖3.3 工作流實(shí)例模型結(jié)構(gòu) 轉(zhuǎn)換條件影響工作流實(shí)例,流程實(shí)例,環(huán)節(jié)實(shí)例和工作項(xiàng)的狀態(tài),并由轉(zhuǎn)換條件去決定它們的狀態(tài)轉(zhuǎn)變,工作流實(shí)例信息流程實(shí)例信息環(huán)節(jié)實(shí)例信息工作項(xiàng)信息,自上而下逐層細(xì)化,不但從全局了解業(yè)務(wù)運(yùn)行情況,而且從局部了解業(yè)務(wù)運(yùn)行的細(xì)節(jié)情況。而它們的狀態(tài)改變都會(huì)記錄在日志中,用以追蹤工作流實(shí)例的運(yùn)行情況。 外部支持模型外部支持模型在本文只包括一個(gè)對(duì)象,就是需激活的外部應(yīng)用程序,嚴(yán)格來說這不是工作流模型的一部分,可是提供接口去激活所需的外部應(yīng)用程序?yàn)?/p>
25、工作流管理系統(tǒng)提供支持是工作流模型的功能之一。有了這些外部應(yīng)用程序的支持,我們的工作流管理系統(tǒng)的功能才變得更完善。3.1.2.2 各個(gè)模型之間的邏輯關(guān)系不但模型中各個(gè)對(duì)象有一定的邏輯關(guān)系,而且各個(gè)模型之間也有一定的邏輯關(guān)系,如下圖所示: 調(diào)用依賴使用使用角色和工作組用戶定義工作流實(shí)例模型外部支持模型工作流定義模型組織模型圖3.4 模型之間的關(guān)系 組織模型的用戶定義工作流定義模型;工作流定義模型使用組織模型的角色和工作組,用來規(guī)定工作流模型的啟動(dòng)條件和任務(wù)分配條件,因?yàn)楣ぷ髁髂P偷膯?dòng)和任務(wù)的分配必須由一定的角色或工作組完成;工作流實(shí)例模型依賴工作流定義模型,同時(shí)使用組織模型的所有對(duì)象,并且調(diào)用
26、外部支持模型為其提供支持。3.1.3 工作流實(shí)例,流程實(shí)例,環(huán)節(jié)實(shí)例和工作項(xiàng)的狀態(tài)轉(zhuǎn)換工作流實(shí)例,流程實(shí)例,環(huán)節(jié)實(shí)例和工作項(xiàng)從不同的層次去描述業(yè)務(wù)運(yùn)行過程的具體情況,不同級(jí)別的用戶可以看到業(yè)務(wù)運(yùn)行的不同方面,創(chuàng)建工作流實(shí)例的用戶可以看到工作流實(shí)例信息以及其狀態(tài)轉(zhuǎn)換,參與該工作流實(shí)例的用戶可以看到工作項(xiàng)信息以及其狀態(tài)的改變,系統(tǒng)管理員可以看到所有信息以及其狀態(tài)的轉(zhuǎn)換。 工作流實(shí)例狀態(tài)圖 創(chuàng)建管理員管理員管理員Running(運(yùn)行)Completed(結(jié)束)正常情況Suspended(掛起)terminated(終止)Initial(初始化)圖3.5 工作流實(shí)例狀態(tài)圖提交 流程實(shí)例狀態(tài)圖管理員管理
27、員管理員Running(運(yùn)行)Completed(結(jié)束)正常情況Suspended(掛起)terminated(終止)圖3.6 流程實(shí)例狀態(tài)圖 環(huán)節(jié)實(shí)例狀態(tài)圖處理中接受完成正常處理沒有完成異常處理回退處理提交給下一環(huán)節(jié)圖3.5 環(huán)節(jié)實(shí)例狀態(tài)圖 工作項(xiàng)狀態(tài)轉(zhuǎn)換圖等待操作完成通過沒有完成不通過無操作,超時(shí)操作下一工作項(xiàng)回退處理已查看初始化未審批未查看圖3.5 工作項(xiàng)狀態(tài)圖接受3.1.4 任務(wù)分派任務(wù)分派是工作流引擎的一個(gè)重要功能。當(dāng)環(huán)節(jié)實(shí)例產(chǎn)生時(shí),就會(huì)以一定的準(zhǔn)則把需要處理的工作當(dāng)作一項(xiàng)任務(wù)項(xiàng)(工作項(xiàng))分派給參與該環(huán)節(jié)實(shí)例的所有用戶,而這些用戶是同屬一個(gè)角色或者工作組的。我們又把角色和工作組進(jìn)行細(xì)
28、化,可以得到以下準(zhǔn)則: 基于部門的:這就是說把任務(wù)分派到某個(gè)部門的所有人員,該部門的所有人員都參與了該項(xiàng)任務(wù),因而會(huì)為該部門的所有人員都產(chǎn)生一個(gè)工作項(xiàng); 基于職位的:這就是說把任務(wù)分派到某個(gè)職位的所有人員,同屬該職位的所有人員都被分配到一項(xiàng)工作項(xiàng); 基于部門職位的:這就是說把任務(wù)分派到某個(gè)部門的某個(gè)職位的所有人員,同屬該部門的該職位的人員都被分配到一項(xiàng)工作項(xiàng); 基于所有人的:這就是說把任務(wù)分派到該企事業(yè)的所有人,該企事業(yè)的所有人都被分配到一項(xiàng)工作項(xiàng); 基于工作組的:這就是說把任務(wù)分派到該企事業(yè)的某個(gè)特定的工作組上,同屬該組的所有人員都被分配到一項(xiàng)工作項(xiàng)?;诓块T的,基于職位的,基于部門職位的和
29、基于所有人的這四種類型,其實(shí)是基于角色的細(xì)化,通過這些準(zhǔn)則的分類,我們盡量做到系統(tǒng)與企事業(yè)有較強(qiáng)的適應(yīng)性,以及使系統(tǒng)在任務(wù)分派時(shí)有較大的靈活性。3.1.5 轉(zhuǎn)換條件的滿足工作流實(shí)例,流程實(shí)例,環(huán)節(jié)實(shí)例和工作項(xiàng)的狀態(tài)轉(zhuǎn)換有各自特定的條件,分別如下: 工作流實(shí)例的轉(zhuǎn)換條件工作流實(shí)例從整體看業(yè)務(wù)運(yùn)行過程,工作流實(shí)例被用戶創(chuàng)建后就進(jìn)行初始化并提交給工作流引擎,由工作流引擎去處理,此時(shí)實(shí)例處于運(yùn)行狀態(tài);在運(yùn)行過程中,它會(huì)根據(jù)流程實(shí)例的狀態(tài)而不斷進(jìn)行本身的狀態(tài)改變;當(dāng)管理員由于某種原因要掛起它時(shí),它就處于掛起狀態(tài),直到管理員重新激活它使它處于運(yùn)行狀態(tài)或者終止它使它非正常結(jié)束;當(dāng)它被正常處理完畢后,就正常結(jié)
30、束。 流程實(shí)例的轉(zhuǎn)換條件流程實(shí)例也從整體看業(yè)務(wù)的運(yùn)行過程,流程實(shí)例在工作流實(shí)例初始化時(shí)就開始它的工作。在運(yùn)行過程中,它會(huì)根據(jù)各個(gè)環(huán)節(jié)的完成程度來改變自己的狀態(tài),當(dāng)所有環(huán)節(jié)實(shí)例都正常完成它就正常結(jié)束;管理員可能要掛起它使它處于掛起狀態(tài),直到管理員重新激活它使它處于運(yùn)行狀態(tài)或者終止它使它非正常結(jié)束。 環(huán)節(jié)實(shí)例的轉(zhuǎn)換條件環(huán)節(jié)實(shí)例從某個(gè)方面看業(yè)務(wù)的運(yùn)行過程,環(huán)節(jié)實(shí)例在流程實(shí)例運(yùn)行時(shí)就開始它的工作處于處理中狀態(tài)。之后環(huán)節(jié)實(shí)例的狀態(tài)由兩方面決定,一是工作項(xiàng)的處理結(jié)果,一是業(yè)務(wù)規(guī)則的規(guī)定。 如果業(yè)務(wù)規(guī)則是自動(dòng)型的,不管工作項(xiàng)的處理結(jié)果怎樣,當(dāng)系統(tǒng)把任務(wù)項(xiàng)分派(給特定用戶)完畢后,該環(huán)節(jié)實(shí)例就正常完成處于正常
31、結(jié)束狀態(tài); 如果業(yè)務(wù)規(guī)則是與聚合的,系統(tǒng)分派完任務(wù)項(xiàng)后,當(dāng)所有參與人員都正常處理完該環(huán)節(jié)各自的工作項(xiàng)后,該環(huán)節(jié)才正常完成處于正常結(jié)束狀態(tài);在處理過程中,只要有一個(gè)工作項(xiàng)是非正常處理的,該環(huán)節(jié)就非正常完成處于非正常結(jié)束狀態(tài);在處理過程中,有工作項(xiàng)還未被處理并且沒有一個(gè)工作項(xiàng)被非正常處理,那么環(huán)節(jié)實(shí)例仍然處于處理中狀態(tài); 如果業(yè)務(wù)規(guī)則是或聚合的,系統(tǒng)分派任務(wù)后,只要有一個(gè)工作項(xiàng)是正常處理的,該環(huán)節(jié)實(shí)例就正常完成處于正常結(jié)束狀態(tài);如果所有同屬該環(huán)節(jié)實(shí)例的工作項(xiàng)都被非正常完成,那么該環(huán)節(jié)實(shí)例就處于非正常結(jié)束狀態(tài); 如果業(yè)務(wù)規(guī)則是投票聚合的,系統(tǒng)分派任務(wù)后,統(tǒng)計(jì)工作項(xiàng)的完成程度,當(dāng)正常完成的工作項(xiàng)數(shù)量達(dá)
32、到一定數(shù)量時(shí),該環(huán)節(jié)實(shí)例就正常完成處于正常結(jié)束狀態(tài);當(dāng)正常完成的工作項(xiàng)數(shù)量不達(dá)到規(guī)定的數(shù)量時(shí),該環(huán)節(jié)就非正常完成處于非正常結(jié)束狀態(tài);當(dāng)所有工作項(xiàng)還沒處理并且正常完成的工作項(xiàng)還沒達(dá)到規(guī)定數(shù)量時(shí),該環(huán)節(jié)實(shí)例仍然處于處理中狀態(tài)。 工作項(xiàng)的轉(zhuǎn)換條件工作項(xiàng)從更細(xì)節(jié)的方面看業(yè)務(wù)運(yùn)行過程,工作項(xiàng)的狀態(tài)轉(zhuǎn)換要看參與人員對(duì)各自的工作項(xiàng)的處理情況和業(yè)務(wù)規(guī)則的規(guī)定。我們把與聚合,或聚合和投票聚合這些要人工干預(yù)的規(guī)則統(tǒng)稱為人工型規(guī)則。 如果業(yè)務(wù)規(guī)則是自動(dòng)型,同屬該規(guī)則的工作項(xiàng)的狀態(tài)就只有正常處理后的正常結(jié)束狀態(tài),當(dāng)然如果對(duì)該工作項(xiàng)還沒被處理則處于處理中狀態(tài),可這不對(duì)環(huán)節(jié)實(shí)例等產(chǎn)生影響; 如果業(yè)務(wù)規(guī)則是人工型,就會(huì)有正
33、常處理和非正常處理兩種情況,正常處理該工作項(xiàng)則使到該工作項(xiàng)處于正常結(jié)束狀態(tài),非正常處理該工作項(xiàng)則使到該工作項(xiàng)處于非正常結(jié)束狀態(tài)。3.2 系統(tǒng)結(jié)構(gòu)本著基于輕量級(jí)工作流引擎的原則,我們已經(jīng)對(duì)工作流模型進(jìn)行了詳細(xì)的分析和詳細(xì)的設(shè)計(jì),在這里我們就提出一個(gè)系統(tǒng)結(jié)構(gòu),如下圖所示:工作流定義器工作流解析器實(shí)例調(diào)度中心任務(wù)管理器任務(wù)分派器啟動(dòng)控制器工作流定義數(shù)據(jù)工作流實(shí)例數(shù)據(jù)日志數(shù)據(jù)工作流定義接口工作流實(shí)例接口組織定義數(shù)據(jù)組織定義接口組織定義器狀態(tài)轉(zhuǎn)換器組織管理器圖3.6 工作流引擎系統(tǒng)結(jié)構(gòu)圖 從圖中可以知道,系統(tǒng)提供了三類接口:組織定義接口、工作流定義接口和工作流實(shí)例接口。這三類接口實(shí)現(xiàn)了工作流模型的接口一
34、,接口二,接口三和接口五規(guī)定的主要功能;系統(tǒng)有一個(gè)實(shí)例調(diào)度中心,這是一個(gè)很重要的部件,它控制工作流實(shí)例的運(yùn)行,通過工作流解析器對(duì)該工作流模型進(jìn)行解析其含義,通過任務(wù)分派器按照一定的分派準(zhǔn)則把任務(wù)項(xiàng)分派給參與該工作流實(shí)例的用戶,通過任務(wù)管理器管理各個(gè)任務(wù)項(xiàng)的信息,通過啟動(dòng)控制器控制工作流的啟動(dòng)權(quán)利和啟動(dòng)信息,通過狀態(tài)轉(zhuǎn)換器控制工作流實(shí)例、流程實(shí)例、環(huán)節(jié)實(shí)例和工作項(xiàng)的狀態(tài)轉(zhuǎn)換;組織定義器定義企事業(yè)的組織結(jié)構(gòu);工作流定義器定義工作流模型信息,并通過組織管理器得到組織定義信息,為工作流模型提供組織支持。各個(gè)部件處理的相關(guān)信息都保存在數(shù)據(jù)庫中。3.3 系統(tǒng)模塊的劃分根據(jù)功能實(shí)現(xiàn)的不同我們進(jìn)行模塊的劃分如
35、下: 用戶管理模塊:對(duì)用戶信息的管理,包括注冊用戶信息,注銷用戶信息,查詢用戶信息等功能; 部門管理模塊:對(duì)企事業(yè)部門結(jié)構(gòu)信息的管理,包括增加部門信息,刪除部門信息,查詢部門信息等等功能; 職位管理模塊:對(duì)企事業(yè)職能信息的管理,包括增加職位信息,刪除職位信息,查詢職位信息等等功能; 角色管理模塊:對(duì)企事業(yè)某種技能信息的管理,包括新增角色信息,刪除角色信息,查詢角色信息等等功能;- 工作流模型管理模塊:對(duì)工作流定義模型信息的管理,包括定義新的工作流模型信息,刪除舊的工作流模型信息,查詢工作流模型信息; 工作流實(shí)例管理模塊:對(duì)工作流實(shí)例信息的管理,包括啟動(dòng)一個(gè)新的工作流實(shí)例,查詢工作流實(shí)例信息,按
36、照一定的業(yè)務(wù)規(guī)則生成新的環(huán)節(jié)實(shí)例信息,為用戶分派工作項(xiàng),管理工作項(xiàng)信息,按照一定的轉(zhuǎn)換條件為工作流實(shí)例、環(huán)節(jié)實(shí)例轉(zhuǎn)換狀態(tài)等等功能; 系統(tǒng)監(jiān)控模塊:為工作流實(shí)例,環(huán)節(jié)實(shí)例等的狀態(tài)轉(zhuǎn)換信息加入日志,掛起、激活工作流實(shí)例,強(qiáng)制結(jié)束工作流實(shí)例,為遲遲不對(duì)自己的工作項(xiàng)進(jìn)行處理的用戶發(fā)出提醒或警告信息,查看各個(gè)工作流實(shí)例的完成程度等等功能。功能模塊的劃分,為系統(tǒng)的實(shí)現(xiàn)做好充分的準(zhǔn)備。3.4 數(shù)據(jù)庫設(shè)計(jì)基于輕量級(jí)的工作流引擎的特點(diǎn)之一就是把系統(tǒng)相關(guān)的資料,如工作流模型定義信息,工作流實(shí)例信息,組織模型定義信息等等,都以特定的實(shí)體形式保存在關(guān)系型數(shù)據(jù)庫中。 工作流定義主信息表(workflowTable)靜態(tài)
37、定義工作流主要信息,包括該工作流的標(biāo)識(shí)ID(可以定義為以”WORKFLOW_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的序號(hào)),工作流名稱,工作流描述,工作流類型(工作流的類型有自動(dòng)型,人工型和混合型,自動(dòng)型不需要人工參與,由工組流引擎自動(dòng)執(zhí)行,人工型需要人工參與,混合型包含了自動(dòng)型和人工型),工作流創(chuàng)建日期,工作流創(chuàng)建者ID(即用戶ID),工作流創(chuàng)建人名稱(即用戶名),工作流生命周期(每個(gè)工作流實(shí)例都有它的生命周期期限,在該期限內(nèi)還沒完成它的工作就直接死亡),目前該工作流實(shí)例數(shù)目(記錄當(dāng)前工作流實(shí)例數(shù)目),工作流啟動(dòng)者角色(指明該工作流可以由哪個(gè)角色發(fā)
38、起,屬于該角色的用戶都可以啟動(dòng)該工作流模型對(duì)應(yīng)的實(shí)例)。工作流重要信息還包括兩方面,一是工作流附件,因?yàn)樵诠ぷ髁鬟M(jìn)行過程中,肯定會(huì)帶有一些信息,這些信息對(duì)于出差申請(qǐng)來說就是出差申請(qǐng)表,對(duì)于公文流轉(zhuǎn)來說就是以word文檔形式的公文,對(duì)于通知來說可能就是以文本文檔形式的通知書,等等;一是工作流流程描述,包括若干個(gè)環(huán)節(jié)(activity),這些環(huán)節(jié)有一定的順序,表現(xiàn)工作流順序執(zhí)行的特征。把工作流附件和工作流流程描述從工作流定義分離出來,是基于工作流附件和工作流流程描述對(duì)于不同工作流有不同形式和數(shù)量的原因,有利于工作流附件和工作流流程描述的擴(kuò)展。 工作流附件信息表(workflowAttachment
39、Table)靜態(tài)定義工作流所需要的附件,包括附件ID(可以定義為以”Attachment_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的序號(hào)),工作流ID(標(biāo)識(shí)屬于哪個(gè)工作流),附件類型(表或文件),附件名稱(如果類型是表,則為該表的名稱,如果是word文檔,則為該文檔名稱,如果是文本文檔,則為該文件名稱),其它信息(如果類型為表格,該字段以一定的格式保存該附件表格的所有字段的各種信息,包括字段名稱,字段數(shù)據(jù)類型,數(shù)據(jù)類型長度,字段描述)。 工作流流程描述表(workflowProcessTable)靜態(tài)定義工作流的流程,由若干環(huán)節(jié)(activity)組成
40、,一個(gè)環(huán)節(jié)為一條記錄,包括工作流ID(環(huán)節(jié)所屬工作流ID),環(huán)節(jié)ID(可以定義為以”ACTIVITY_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的序號(hào)),環(huán)節(jié)名稱(即該環(huán)節(jié)名稱),環(huán)節(jié)描述(對(duì)該環(huán)節(jié)的具體描述),參與者角色I(xiàn)D(將相同權(quán)限的用戶作為一個(gè)集合,在數(shù)據(jù)庫以同一個(gè)角色操作數(shù)據(jù)庫特定操作,該項(xiàng)標(biāo)識(shí)角色I(xiàn)D),環(huán)節(jié)任務(wù)分派規(guī)則,上一個(gè)環(huán)節(jié)ID(保存上一個(gè)環(huán)節(jié)的ID,由這項(xiàng)可以判斷該環(huán)節(jié)是否整個(gè)流程的開始環(huán)節(jié),或者該環(huán)節(jié)的任務(wù)沒有完成(審批不通過,或沒在其生命周期期限內(nèi)完成)時(shí)作回滾處理的重要數(shù)據(jù)項(xiàng),根據(jù)這個(gè)數(shù)據(jù)項(xiàng)可以回滾到上一個(gè)環(huán)節(jié)),下一個(gè)環(huán)節(jié)I
41、D(保存下一環(huán)節(jié)的ID,由這項(xiàng)可以判斷該環(huán)節(jié)是否整個(gè)流程的結(jié)束環(huán)節(jié),或者該環(huán)節(jié)的任務(wù)完成了,根據(jù)這個(gè)數(shù)據(jù)項(xiàng)可以啟動(dòng)下一環(huán)節(jié),繼續(xù)向前推進(jìn))。 工作流實(shí)例啟動(dòng)描述(workflowInstanceStartUpTable)動(dòng)態(tài)定義工作流實(shí)例啟動(dòng)信息(其實(shí)這也是工作流實(shí)例信息表)啟動(dòng)者在產(chǎn)生一個(gè)工作流實(shí)例之前必須根據(jù)工作流的定義做好準(zhǔn)備工作,這些準(zhǔn)備工作的信息就填入該表中,然后交付給工作流引擎。該描述包括工作流ID(所屬工作流ID),工組流實(shí)例ID(標(biāo)識(shí)該工作流實(shí)例,可以定義為以”WORKFLOWINSTANCE_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的
42、序號(hào)),工作流實(shí)例描述,工作流實(shí)例創(chuàng)建時(shí)間,工作流實(shí)例創(chuàng)建者ID(啟動(dòng)者ID),工作流實(shí)例創(chuàng)建者名稱,當(dāng)前工作流狀態(tài)(標(biāo)識(shí)當(dāng)前工作流實(shí)例的狀態(tài),啟動(dòng)者在創(chuàng)建后卻沒提交給工作流引擎前的狀態(tài)為“initialized”初始化狀態(tài),之后的狀態(tài)要視工作流類型而定),當(dāng)前狀態(tài)具體描述,當(dāng)前操作者ID(當(dāng)前工作流要被誰操作),當(dāng)前操作者名稱。工作流實(shí)例完成標(biāo)志(標(biāo)識(shí)該工作流實(shí)例的完成),工作流實(shí)例完成時(shí)間,當(dāng)前工作流狀態(tài)和當(dāng)前操作者ID和當(dāng)前工作流狀態(tài)具體描述三項(xiàng)在工作流實(shí)例的運(yùn)行過程中,可以動(dòng)態(tài)追蹤該工作流實(shí)例的運(yùn)行,而這三項(xiàng)再加上工作流完成標(biāo)志和工作流完成時(shí)間,可以知道該工作流實(shí)例的完成情況。 工作流
43、實(shí)例過程描述(workflowInstanceProcessingTable)以環(huán)節(jié)為單位動(dòng)態(tài)描述工作流實(shí)例的處理過程,啟動(dòng)者創(chuàng)建工作流實(shí)例后,提交給工作流引擎后,工作流實(shí)例就根據(jù)工作流定義的流程進(jìn)行運(yùn)轉(zhuǎn)了。包括工作流實(shí)例ID,工作流實(shí)例所對(duì)應(yīng)環(huán)節(jié)(工作流流程就是由一系列的環(huán)節(jié)組成,按照預(yù)定義的流程一個(gè)環(huán)節(jié)過渡到另一個(gè)環(huán)節(jié)),當(dāng)前該環(huán)節(jié)所處狀態(tài)(這標(biāo)識(shí)著該環(huán)節(jié)在處理過程中的狀態(tài),最終狀態(tài)表示該環(huán)節(jié)的完成狀態(tài)),當(dāng)前操作者(對(duì)應(yīng)的是角色),當(dāng)前狀態(tài)具體描述。 工作項(xiàng)描述(workItemTable)動(dòng)態(tài)描述已經(jīng)參與該工作流實(shí)例處理的參與者(對(duì)應(yīng)已處理環(huán)節(jié)的角色的每個(gè)用戶)的工作情況。包括工作項(xiàng)I
44、D(可以定義為以”WorkItem-_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的序號(hào)),工作項(xiàng)名字,工作項(xiàng)描述,工作流實(shí)例ID(該工作項(xiàng)所屬的工作流實(shí)例),該環(huán)節(jié)任務(wù)分派規(guī)則(繼承環(huán)節(jié)的任務(wù)分派規(guī)則,用于判斷該環(huán)節(jié)任務(wù)完成方式),當(dāng)前該工作項(xiàng)所處狀態(tài)(根據(jù)不同的工作流類型有不同的狀態(tài),根據(jù)這些狀態(tài)可以在參與者接口上顯示不同的工作項(xiàng)列表),執(zhí)行動(dòng)作(記錄執(zhí)行者會(huì)對(duì)該工作項(xiàng)執(zhí)行怎么樣的動(dòng)作,如果是申請(qǐng)事務(wù)則是審批通過或?qū)徟煌ㄟ^),執(zhí)行時(shí)間(記錄該執(zhí)行動(dòng)作的時(shí)間),用戶ID(標(biāo)志該工作項(xiàng)是屬于誰的。 用戶描述(UserTable)該表描述所有用戶的資料,包
45、括用戶ID(可以定義為以”User-_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的序號(hào)),用戶名稱,用戶密碼,用戶所屬部門,職位等等信息,級(jí)別是該用戶的系統(tǒng)權(quán)限,包括普通職員,高級(jí)職員和系統(tǒng)管理員。 日志信息描述(LogTable)描述用戶的工作日志,便于對(duì)各種操作進(jìn)行追蹤。包括日志ID(可以定義為以”Log-_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的序號(hào))等等,其中有一項(xiàng)是相關(guān)工作項(xiàng)ID,這是當(dāng)參與者對(duì)原始工作項(xiàng)進(jìn)行執(zhí)行操作動(dòng)作時(shí)的工作項(xiàng)。 角色信息(RoleTable)描述角色的信息,包括角色I(xiàn)D(可以定義
46、為以”Role_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的序號(hào)),角色名稱,部門名稱,職位名稱,角色描述。角色由部門和職位組成。 部門信息(DepartmentTable)描述部門的信息,包括部門ID(可以定義為以” Depatment_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的序號(hào)),部門名稱,部門其它信息。 職位信息(PositionTable)描述職位的信息,包括職位ID(可以定義為以” Position_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”形式,x是自動(dòng)生成的序號(hào)),職位名稱
47、,職位其它信息。除了以上這些主要表以外,還有一些我們是在定義工作流模型的時(shí)候才加入數(shù)據(jù)庫的,如對(duì)應(yīng)工作流附件類型為表的表格。為了減少網(wǎng)絡(luò)流量和提高系統(tǒng)的運(yùn)行速度,我們把一些有關(guān)聯(lián)的數(shù)據(jù)庫操作寫成存儲(chǔ)過程: 刪除工作流模型存儲(chǔ)過程:刪除一個(gè)工作流模型,必須刪除它的工作流定義主信息,同時(shí)刪除對(duì)應(yīng)的附件信息,附件為表的表格,環(huán)節(jié)信息; 創(chuàng)建附件類型為表的表格:定義附件信息時(shí)已經(jīng)把該表格的字段信息保存在該附件信息的其它信息字段中,并且有一定的格式,那么我們從該字段中按照一定的格式還原表格的字段信息,并根據(jù)這些信息在數(shù)據(jù)庫中創(chuàng)建該表格。3.5 類的設(shè)計(jì)用面向?qū)ο蟮姆椒ê蚒ML建模工具,再根據(jù)系統(tǒng)結(jié)構(gòu)圖,
48、模塊的劃分和數(shù)據(jù)庫的設(shè)計(jì),我們把對(duì)象轉(zhuǎn)化成類,進(jìn)行類的設(shè)計(jì)。我們把整個(gè)系統(tǒng)的類分成三部分,一是實(shí)體類,二是業(yè)務(wù)類,三是接口類。3.5.1 實(shí)體類的設(shè)計(jì)工作流模型的對(duì)象就是一個(gè)一個(gè)的實(shí)體,實(shí)體類又分為數(shù)據(jù)庫訪問類和值對(duì)象類。數(shù)據(jù)庫訪問類是對(duì)存儲(chǔ)在數(shù)據(jù)庫的實(shí)體信息進(jìn)行訪問(插入,刪除,更新,查詢)的類,值對(duì)象類是在客戶端和服務(wù)器端之間交換資料的實(shí)體信息類。3.5.1.1 數(shù)據(jù)庫訪問類 數(shù)據(jù)庫連接類:該類是其它數(shù)據(jù)庫訪問類的父類,管理數(shù)據(jù)庫的連接,負(fù)責(zé)從數(shù)據(jù)庫連接池找可用的數(shù)據(jù)庫連接給其它數(shù)據(jù)庫訪問類使用,使用完畢后負(fù)責(zé)放回連接池,類圖如下圖: 說明:屬性只有一個(gè)connection,它代表數(shù)據(jù)庫的
49、一條連接,類型為Connection,方法有一個(gè)構(gòu)造函數(shù)workflowDAO()和一個(gè)關(guān)閉連接的函數(shù)closeConnection()。WorkflowDAO()實(shí)現(xiàn)從數(shù)據(jù)庫連接池找一個(gè)可用連接并賦值給屬性connection,closeConnection()負(fù)責(zé)把連接放回?cái)?shù)據(jù)庫連接池。 工作流定義主信息訪問類:對(duì)應(yīng)數(shù)據(jù)庫的工作流定義主信息表,該類封裝了對(duì)該表格記錄的各種操作,就是插入或刪除一條工作流定義主信息,查詢特定工作流定義信息或者所有工作流定義信息,類圖如下圖:說明:構(gòu)造函數(shù)WFDefineMainInfoDAO()調(diào)用父類構(gòu)造函數(shù),從數(shù)據(jù)庫連接池中找一個(gè)可用的數(shù)據(jù)庫連接(其它數(shù)據(jù)
50、庫訪問類也一樣)。 工作流流程信息訪問類:對(duì)應(yīng)工作流流程描述表,該類封裝了對(duì)該表格記錄的各種操作,流程是由若干環(huán)節(jié)組成,就是插入或刪除一條環(huán)節(jié)信息,查詢同屬于一個(gè)流程的環(huán)節(jié)信息等等,類圖如下圖:說明:findWorkflowFirlstActivityInfo()函數(shù)負(fù)責(zé)找該工作流模型的第一個(gè)環(huán)節(jié)的信息,findWorkflowNextActivityID()負(fù)責(zé)根據(jù)當(dāng)前環(huán)節(jié)ID找下一環(huán)節(jié)的信息。 工作流附件信息訪問類:對(duì)應(yīng)工作流附件信息表,該類封裝了對(duì)該表格記錄的各種操作,就是插入或刪除一條工作流附件信息,查詢同屬于一個(gè)工作流模型的附件信息。類圖如下: 工作流附件類型為表的信息訪問類:對(duì)應(yīng)工作流附件類型為表格的信息表,該類封裝了該表記錄的各種操作,就是插入或查詢一條工作流附件類型為表格的具體信息,類圖如下: 工作流實(shí)例啟動(dòng)信息訪問類:對(duì)應(yīng)工作流實(shí)例啟動(dòng)信息表,該類封裝了該表記錄的各種操作,就是插入或查詢一條工作流啟動(dòng)信息,查詢同屬于一個(gè)用戶的工作流實(shí)例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45141-2025反滲透進(jìn)水修正污染指數(shù)測定方法
- 別墅清包工合同范本
- 醫(yī)院合資合同范本
- 農(nóng)藥合同范本
- 勞保買賣合同范本
- 二手房出售門面房合同范本
- 水槽代工合同范本
- 醫(yī)院信息咨詢合同范本
- 主體沉降觀測合同范本
- 單個(gè)產(chǎn)品銷售合同范本
- 第二章政府審計(jì)組織與審計(jì)法律規(guī)范
- 楚才辦公室裝修設(shè)計(jì)方案20140315
- 人教版八年級(jí)(上冊)物理習(xí)題全集(附答案)
- 電影院影務(wù)崗位工作流程
- 畢業(yè)論文牛仔布染色工藝和質(zhì)量控制
- 計(jì)數(shù)的基本原理說課
- 機(jī)器視覺論文(英文)
- 高中學(xué)生秧田式課堂座位管理探究
- 初中花城版八年級(jí)下冊音樂6.軍港之夜(15張)ppt課件
- 《供應(yīng)鏈管理》讀書筆記
- FTTH組網(wǎng)邏輯圖
評(píng)論
0/150
提交評(píng)論