国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于關(guān)系數(shù)據(jù)庫(kù)的工作流管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2012-04-29 13:46:52吳潔明王吉棟
計(jì)算機(jī)時(shí)代 2012年4期
關(guān)鍵詞:關(guān)系數(shù)據(jù)庫(kù)

吳潔明 王吉棟

摘要: 論述了一種基于關(guān)系數(shù)據(jù)庫(kù)的工作流管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。該工作流管理系統(tǒng)不僅擁有工作流管理系統(tǒng)應(yīng)有的前向調(diào)度、回退調(diào)度、用戶任務(wù)列表的展示等功能,還有效地利用了關(guān)系數(shù)據(jù)庫(kù)的成熟技術(shù),節(jié)省了工作流管理系統(tǒng)的開(kāi)發(fā)成本。

關(guān)鍵詞: 關(guān)系數(shù)據(jù)庫(kù); 工作流引擎; 流程定義; 流程實(shí)例

中圖分類號(hào):TP311.5文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8228(2012)04-32-03

Design and implementation of workflow management system based on relational database

Wu Jieming, Wang Jidong

(College of Information Engineering, North China University of Technology, Beijing 100144, China)

Abstract: The authors describe in this paper a workflow management system which is based on relational database. The wokflow management system not only has forward and backward scheduling and task list which is necessary to a complete workflow management system, but also uses the mature technology of relational database which can save its development cost.

Key words: relational database; workflow engine; process definition; process instance

0 引言

目前,市面上有很多開(kāi)源工作流軟件,最常用的有Shark、Osworkflow和Jbpm。其中Shark的流程定義語(yǔ)言采用XPDL,Osworkflow依賴于有限狀態(tài)機(jī),Jbpm綜合運(yùn)用了狀態(tài)圖、活動(dòng)圖和PetriNet。

各大廠商開(kāi)發(fā)的工作流產(chǎn)品側(cè)重于流程管理的通用性,導(dǎo)致系統(tǒng)非常復(fù)雜,再加上軟件設(shè)計(jì)文檔的缺乏,對(duì)于中小型項(xiàng)目來(lái)說(shuō),使用門檻比較高,因此很多公司選擇開(kāi)發(fā)適合本公司的工作流組件。但開(kāi)發(fā)一個(gè)運(yùn)行穩(wěn)定、有數(shù)據(jù)備份和恢復(fù)功能、支持并發(fā)、支持事務(wù)的工作流引擎,成本非常高?,F(xiàn)在的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)在數(shù)據(jù)備份、恢復(fù)、并發(fā)、事務(wù)處理等方面已經(jīng)做的非常成熟,如果把工作流和關(guān)系數(shù)據(jù)庫(kù)結(jié)合起來(lái),工作流開(kāi)發(fā)人員就可以直接利用這些數(shù)據(jù)庫(kù)的成熟技術(shù),把精力放在工作流引擎的架構(gòu)和調(diào)度策略的研究上,以降低開(kāi)發(fā)成本。

1 工作流管理系統(tǒng)模型

根據(jù)“工作流管理聯(lián)盟”(Workflow Management Coliation, WfMC)的定義,工作流所要解決的主要問(wèn)題是:使在多個(gè)參與者之間按照某種預(yù)定義的規(guī)則傳遞文檔、信息或任務(wù)的過(guò)程自動(dòng)進(jìn)行,從而實(shí)現(xiàn)某個(gè)預(yù)期的業(yè)務(wù)目標(biāo),或者是促使此目標(biāo)的實(shí)現(xiàn)[1]。

工作流管理系統(tǒng)是一個(gè)軟件系統(tǒng),它完成工作流的定義和管理,并按照在計(jì)算機(jī)中預(yù)先定義好的工作流邏輯推進(jìn)工作流實(shí)例的執(zhí)行[1]。一個(gè)完整的工作流管理系統(tǒng)要包含業(yè)務(wù)流程定義模塊、工作流引擎模塊、用戶任務(wù)列表模塊和工作流監(jiān)管模塊。本文所述的基于關(guān)系數(shù)據(jù)庫(kù)的工作流管理系統(tǒng),是要充分利用關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn),把業(yè)務(wù)流程的定義,流程的運(yùn)行時(shí)數(shù)據(jù),系統(tǒng)的業(yè)務(wù)數(shù)據(jù),系統(tǒng)所需的業(yè)務(wù)人員的信息,權(quán)限管理等都存儲(chǔ)在數(shù)據(jù)庫(kù)中,完成業(yè)務(wù)數(shù)據(jù)的流轉(zhuǎn)。工作流管理系統(tǒng)的架構(gòu)如圖1所示。

[客戶端][業(yè)務(wù)邏輯層][工作流引擎][流程定義模塊][數(shù)據(jù)訪問(wèn)層][業(yè)務(wù)數(shù)據(jù)][組織機(jī)構(gòu)][流程實(shí)例][工作流定義]

圖1工作流管理系統(tǒng)的架構(gòu)圖

1.1 流程定義和活動(dòng)

業(yè)務(wù)流程,為完成某一預(yù)定目標(biāo)而定義是的一系列的工作步驟。業(yè)務(wù)流程中的每一個(gè)步驟是一個(gè)活動(dòng)[2]?;顒?dòng)是業(yè)務(wù)流程的最小工作單元。活動(dòng)可以包含很多屬性,如活動(dòng)類型,執(zhí)行者等。工作流管理系統(tǒng)要處理用戶的業(yè)務(wù)流程,應(yīng)該先把業(yè)務(wù)流程抽象成計(jì)算機(jī)可以識(shí)別的流程定義,而流程定義是由一系列的活動(dòng)組成的。

1.2 流程實(shí)例和任務(wù)

流程實(shí)例是業(yè)務(wù)流程的一次具體執(zhí)行。工作流引擎執(zhí)行的是流程實(shí)例,流程實(shí)例是由一系列任務(wù)組成的,任務(wù)是業(yè)務(wù)流程中活動(dòng)的實(shí)例化[1]。工作流引擎調(diào)度的是流程實(shí)例的任務(wù),當(dāng)用戶調(diào)用工作流引擎提供的接口創(chuàng)建一個(gè)流程實(shí)例后,引擎就根據(jù)流程定義依次生成活動(dòng)對(duì)應(yīng)的任務(wù)。并提供給不同的用戶對(duì)任務(wù)進(jìn)行操作。

本文所述的工作流管理系統(tǒng)就是要借助流程定義、活動(dòng)、流程實(shí)例、任務(wù)等,來(lái)完成業(yè)務(wù)表單在用戶之間的流轉(zhuǎn)。系統(tǒng)的數(shù)據(jù)庫(kù)表之間的關(guān)系如圖2所示。

圖2數(shù)據(jù)庫(kù)各表之間的關(guān)系

業(yè)務(wù)流程表和活動(dòng)表用來(lái)存儲(chǔ)業(yè)務(wù)流程定義,流程實(shí)例表和任務(wù)表存儲(chǔ)運(yùn)行時(shí)數(shù)據(jù),歷史流程實(shí)例表和歷史任務(wù)表存放已經(jīng)執(zhí)行完的流程實(shí)例,用戶表和角色表保存用戶的基本信息。每一個(gè)業(yè)務(wù)流程都是由一系列活動(dòng)組成的,活動(dòng)之間的前驅(qū)和后繼關(guān)系由前驅(qū)活動(dòng)Ids和后繼活動(dòng)Ids決定。每個(gè)活動(dòng)的類型由分支類型字段和匯聚類型字段決定,分支類型的取值有:“順序類型”、“與分支類型”和“或分支類型”;匯聚類型的取值有:“順序類型”、“與匯聚類型”和“或匯聚類型”。

2 流程設(shè)計(jì)器

流程設(shè)計(jì)器的作用是提供一種描述工作流程的軟件,它把實(shí)際的過(guò)程步驟用圖視化的方法或簡(jiǎn)單的文本描述出來(lái)并產(chǎn)生或轉(zhuǎn)化成規(guī)范的工作流定義語(yǔ)言格式[3]。

本文所述的工作流管理系統(tǒng)把業(yè)務(wù)流程拆分成活動(dòng)存儲(chǔ)在活動(dòng)表中,供工作流引擎使用。流程設(shè)計(jì)器提供有一張畫板和多種類型的活動(dòng)。當(dāng)需要?jiǎng)?chuàng)建一個(gè)新的業(yè)務(wù)流程時(shí),用戶需要先指定要?jiǎng)?chuàng)建的業(yè)務(wù)流程的名稱、該流程關(guān)聯(lián)的業(yè)務(wù)表單的名稱和業(yè)務(wù)表單的主鍵,然后把組成該業(yè)務(wù)流程的所有活動(dòng)拖動(dòng)到畫板上,設(shè)定活動(dòng)之間的先后關(guān)系,最后給每個(gè)活動(dòng)指定分支類型和匯聚類型并且指定哪個(gè)角色有權(quán)限執(zhí)行此活動(dòng)。流程設(shè)計(jì)器會(huì)按規(guī)則檢查用戶繪制的流程圖的正確性;點(diǎn)擊保存按鈕后,流程設(shè)計(jì)器會(huì)先把這個(gè)業(yè)務(wù)流程圖保存到業(yè)務(wù)流程表和活動(dòng)表中。

3 工作流引擎

工作流引擎的作用是對(duì)流程定義進(jìn)行解釋,創(chuàng)建可以運(yùn)行的流程實(shí)例、控制流程實(shí)例的執(zhí)行。工作流管理系統(tǒng)對(duì)流程實(shí)例的操作是通過(guò)用戶調(diào)用工作流引擎提供的接口來(lái)進(jìn)行的。當(dāng)用戶調(diào)用啟動(dòng)業(yè)務(wù)流程的接口時(shí),引擎會(huì)創(chuàng)建新的流程實(shí)例和流程實(shí)例的首任務(wù);當(dāng)用戶調(diào)用完成任務(wù)接口時(shí),引擎會(huì)生成下一步的任務(wù);當(dāng)用戶調(diào)用回退接口時(shí),引擎會(huì)把流程實(shí)例回退到之前的任務(wù)實(shí)例重新執(zhí)行。

3.1 流程的前向調(diào)度

任務(wù)執(zhí)行時(shí)重點(diǎn)是要區(qū)分任務(wù)節(jié)點(diǎn)的分支類型是“順序類型”、“與分支類型”還是“或分支類型”。任務(wù)節(jié)點(diǎn)的分支類型和其對(duì)應(yīng)的活動(dòng)的分支類型相同,活動(dòng)的分支類型由活動(dòng)表的分支類型字段決定。

如果當(dāng)前任務(wù)的分支類型是“與分支類型”,當(dāng)用戶結(jié)束此任務(wù)時(shí),工作流引擎會(huì)創(chuàng)建當(dāng)前任務(wù)的所有后繼任務(wù)實(shí)例;如果當(dāng)前任務(wù)的分支類型是“或分支類型”,當(dāng)用戶結(jié)束此任務(wù)時(shí),工作流引擎要查詢其所有的后繼活動(dòng),顯示給用戶,供用戶選擇,用戶選擇完成后,工作流引擎會(huì)根據(jù)用戶選擇的活動(dòng),創(chuàng)建一個(gè)相應(yīng)的任務(wù)實(shí)例;如果當(dāng)前任務(wù)的分支類型是“順序類型”,當(dāng)用戶結(jié)束此任務(wù)時(shí),工作流引擎會(huì)查詢其后繼活動(dòng),如果其后繼活動(dòng)的匯聚類型為“與匯聚類型”,則還要判斷這個(gè)活動(dòng)的前驅(qū)任務(wù)是否已全部完成,如果已經(jīng)全部完成,則創(chuàng)建此活動(dòng)對(duì)應(yīng)的任務(wù),否則不創(chuàng)建活動(dòng)對(duì)應(yīng)的任務(wù)。前向調(diào)度程序流程圖如圖3所示。

圖3 前向調(diào)度的程序流程圖

3.2 流程的回退調(diào)度

一個(gè)功能完整的工作流管理系統(tǒng)還應(yīng)該支持流程回退。工作流的回退功能是把流程回退到已經(jīng)執(zhí)行過(guò)的前驅(qū)節(jié)點(diǎn),以滿足用戶輸入錯(cuò)誤需要修改的需求。

當(dāng)用戶進(jìn)行流程回退操作時(shí),工作流引擎會(huì)查詢出所有可以回退到的任務(wù)供用戶選擇;用戶選擇完成后,引擎把當(dāng)前任務(wù)置為“completed”狀態(tài),把選擇的目標(biāo)任務(wù)置為“running”狀態(tài)?;赝四繕?biāo)任務(wù)執(zhí)行完后,引擎要根據(jù)目標(biāo)任務(wù)的分支類型做進(jìn)一步的處理:如果任務(wù)的分支類型是“或分支類型”,引擎要判斷用戶選擇的后繼任務(wù)是否為原來(lái)的執(zhí)行路徑,如果不是,則刪除此任務(wù)的所有后繼任務(wù)實(shí)例,按照用戶的選擇創(chuàng)建相應(yīng)的任務(wù)實(shí)例;如果任務(wù)的分支類型不是“或分支類型”,則任務(wù)執(zhí)行完成后,修改其狀態(tài)為“completed”,修改其直接后繼任務(wù)的狀態(tài)為“running”。

4 用戶任務(wù)列表

工作流引擎提供用戶接口讓用戶查詢自己的任務(wù)列表。當(dāng)用戶登錄系統(tǒng)后,應(yīng)用程序調(diào)用工作流引擎提供的接口,查詢出用戶可以執(zhí)行的任務(wù)實(shí)例并將其顯示在用戶界面上。本文用基于角色的訪問(wèn)控制機(jī)制來(lái)設(shè)計(jì)此功能:首先根據(jù)崗位創(chuàng)建相應(yīng)的角色,然后根據(jù)用戶的職責(zé)授予相應(yīng)的角色,最后在定義流程的時(shí)候,為每個(gè)活動(dòng)選擇一個(gè)角色。當(dāng)用戶登錄以后,系統(tǒng)會(huì)根據(jù)其角色顯示其可以執(zhí)行的任務(wù)列表,如果用戶選擇了某個(gè)任務(wù),工作流引擎就會(huì)把該用戶的Id保存到這個(gè)任務(wù)的用戶Id字段,并修改這個(gè)任務(wù)實(shí)例的狀態(tài)為“running”,其他擁有相同角色的用戶不能再選擇這個(gè)任務(wù)。用戶任務(wù)列表可實(shí)現(xiàn)以下幾個(gè)功能:

⑴ 啟動(dòng)流程列表工作流引擎根據(jù)用戶角色查詢活動(dòng)表,把與角色匹配的起始活動(dòng)對(duì)應(yīng)的流程名稱顯示在用戶的“啟動(dòng)任務(wù)列表”中,用戶點(diǎn)擊啟動(dòng)流程按鈕,工作流引擎就會(huì)生成新的流程實(shí)例和初始任務(wù)。

⑵ 新生成的任務(wù)列表中新生成的任務(wù)實(shí)例的狀態(tài)為“ready”,用戶Id字段為空,工作流引擎根據(jù)這兩個(gè)條件和用戶的角色,查詢出當(dāng)前用戶可以處理的新生成的任務(wù)列表。

⑶ 回退的任務(wù)列表中回退的任務(wù)實(shí)例的狀態(tài)為“running”,用戶Id為當(dāng)前用戶的Id,后繼任務(wù)Ids不為空,工作流引擎根據(jù)任務(wù)這三個(gè)條件可以查詢出回退的任務(wù)實(shí)例列表。

5 工作流監(jiān)管

工作流監(jiān)管的作用是管理用戶和角色信息、掛起和恢復(fù)流程實(shí)例、停止和刪除工作流實(shí)例、查看工作流的運(yùn)行狀態(tài)、查詢歷史流程實(shí)例的流轉(zhuǎn)日志等[3]。

工作流管理系統(tǒng)提供正在執(zhí)行的工作流實(shí)例列表和歷史工作流實(shí)例列表。當(dāng)用戶需要掛起、恢復(fù)、停止、刪除工作流實(shí)例或者查看工作流實(shí)例的運(yùn)行狀態(tài)時(shí),可以進(jìn)入正在執(zhí)行的工作流實(shí)例列表,選擇相關(guān)的操作按鈕。每執(zhí)行完一個(gè)工作流實(shí)例,工作流引擎就會(huì)把當(dāng)前完成的流程實(shí)例及其所有的任務(wù)實(shí)例轉(zhuǎn)入到歷史流程實(shí)例和歷史任務(wù)表,當(dāng)用戶需要查詢歷史流程實(shí)例時(shí),可以進(jìn)入歷史流程實(shí)例列表選擇相關(guān)的操作按鈕。

6 結(jié)束語(yǔ)

本文所述的基于關(guān)系數(shù)據(jù)庫(kù)的工作流管理系統(tǒng)不僅可以滿足用戶的業(yè)務(wù)需求,而且利用了大型關(guān)系數(shù)據(jù)庫(kù)中的成熟技術(shù),例如:工作流引擎控制業(yè)務(wù)流程的調(diào)度時(shí)用到了數(shù)據(jù)庫(kù)的事務(wù)處理;用戶選擇處理任務(wù)時(shí)用到了數(shù)據(jù)庫(kù)的并發(fā)處理技術(shù);備份和恢復(fù)工作流實(shí)例的歷史數(shù)據(jù)用到了數(shù)據(jù)庫(kù)的備份和恢復(fù)功能。將工作流與關(guān)系數(shù)據(jù)庫(kù)結(jié)合,降低了工作流管理系統(tǒng)設(shè)計(jì)的復(fù)雜度,從而節(jié)省了開(kāi)發(fā)成本。

參考文獻(xiàn):

[1]WfMC. The workflow reference model. 1994.

[2] 范玉順.工作流管理技術(shù)基礎(chǔ) [M].清華大學(xué)出版社,2001.

[3] 胡錦敏,張申生. 支持企業(yè)動(dòng)態(tài)聯(lián)盟的敏捷工作流系統(tǒng)[J].計(jì)算機(jī)研究與發(fā)展,1999.36(12):1517~1523

[4] 羅海濱,范玉順,吳澄.工作流綜述[J].軟件學(xué)報(bào),2000.11(7):899~907

[5] 何清法,李國(guó)杰,焦麗梅. 基于關(guān)系結(jié)構(gòu)的輕量級(jí)工作流引擎[J].計(jì)算機(jī)研究與發(fā)展,2001.38(2):129~137

[6] 陳傳波,劉黎志.一個(gè)基于Web的工作流引擎及其實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2004,26(11):8-11.

[7] 葉立新,陳閎中,鄭航等.基于工作流技術(shù)的OA系統(tǒng)模型[J].計(jì)算機(jī)工程與應(yīng)用,2000.36(6):90~92

[8] 柴孝宗. 辦公自動(dòng)化領(lǐng)域基于J2EE平臺(tái)的工作流引擎的設(shè)計(jì)與實(shí)現(xiàn)[D].西安電子科技大學(xué),2005.

[9] 吳少鴻. 基于Web的輕量級(jí)工作流管理系統(tǒng)的研究與實(shí)現(xiàn)[D].中國(guó)科學(xué)院研究生院(軟件研究所),2005.

[10] 徐建軍,譚慶平,楊艷萍.一種基于J2EE的工作流引擎體系結(jié)構(gòu)[J].計(jì)算機(jī)應(yīng)用,2005.25(2):469~471

[11] 倪曉穎. 基于XML技術(shù)的工作流管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].大連理工大學(xué),2006.

[12] 孫瑞志,史美林.工作流活動(dòng)多實(shí)例的調(diào)度控制[J].軟件學(xué)報(bào),2005.16(3):400~406

[13] 劉黎.基于數(shù)據(jù)庫(kù)表示的工作流模型[D].中國(guó)科學(xué)院計(jì)算計(jì)算研究所,1999.

[14] 張慧,李建華,許甸,許海軍.一種工作流運(yùn)行時(shí)回退方法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2008.30(5):88~91

[15] 杜傳業(yè),李茹.面向電子政務(wù)的輕量級(jí)工作流引擎[J].計(jì)算機(jī)應(yīng)用,2008.28(6):310~314

猜你喜歡
關(guān)系數(shù)據(jù)庫(kù)
關(guān)系數(shù)據(jù)庫(kù)在高爐數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
山東冶金(2022年2期)2022-08-08 01:51:30
關(guān)系數(shù)據(jù)庫(kù)技術(shù)在計(jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)中的應(yīng)用
XML與關(guān)系數(shù)據(jù)庫(kù)之間的轉(zhuǎn)換
實(shí)體的動(dòng)態(tài)屬性在數(shù)據(jù)庫(kù)設(shè)計(jì)中的解決方案
計(jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)中關(guān)系數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用
掌游西塘APP設(shè)計(jì)與實(shí)現(xiàn)
探討關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)中范式理論的教學(xué)方法
青春歲月(2016年21期)2016-12-20 19:02:01
大數(shù)據(jù)時(shí)代數(shù)據(jù)管理技術(shù)研究綜述
軟件(2015年10期)2015-12-25 08:06:38
基于索引結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫(kù)關(guān)鍵詞檢索
存儲(chǔ)于關(guān)系數(shù)據(jù)庫(kù)的知識(shí)庫(kù)的語(yǔ)義推理方法
驻马店市| 马关县| 潢川县| 即墨市| 双桥区| 陆川县| 明溪县| 克山县| 理塘县| 永和县| 西平县| 威宁| 惠安县| 蓬莱市| 金阳县| 灵武市| 通许县| 万载县| 平江县| 淮北市| 永丰县| 榆树市| 北京市| 久治县| 墨竹工卡县| 南昌县| 乐亭县| 新田县| 张家川| 田东县| 鸡东县| 黄冈市| 眉山市| 佛学| 宜春市| 宝兴县| 大同市| 通道| 商洛市| 恩施市| 重庆市|