譚巍巍 李先國
摘 要: 為了使工作流系統(tǒng)能夠在運行過程中支持過程定義的動態(tài)可變,探討工作流在過程方面發(fā)生動態(tài)修改的分類,分析重啟、繼續(xù)執(zhí)行、遷移等多種動態(tài)修改策略的優(yōu)缺點,重點研究了遷移策略的實現(xiàn),提出了一種基于遷移策略的動態(tài)工作流的設計方法。該方法首先加載數(shù)據(jù)表中的過程定義信息,并根據(jù)反射機制動態(tài)創(chuàng)建相應的工作流對象及其方法。然后設計了一種遷移策略執(zhí)行算法,根據(jù)遷移規(guī)則XML配置文件,動態(tài)完成運行時的舊工作流到新工作流的轉換,從而提高了工作流系統(tǒng)的動態(tài)性。
關鍵字: 工作流; 動態(tài)工作流; 修改策略; 狀態(tài)遷移策略
中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2014)06?0062?03
工作流的概念最早出現(xiàn)在生產組織和辦公自動化等領域,這是由于這些領域日常的工作流程都是具有固定的流程,為了提高工作效率提出了工作流的概念,它是將工作分解成分工明確的任務或角色,不同角色之間按照一定的規(guī)則和順序來執(zhí)行這些任務[1],這樣就能夠達到提高工作效率、提高企業(yè)管理水平和企業(yè)競爭力的目的。早期的工作流管理系統(tǒng)是在軟件設計階段完成過程定義的設計,系統(tǒng)執(zhí)行期間用戶只需按照步驟完成操作,然而,一旦工作流系統(tǒng)啟動后,工作流的執(zhí)行過程就不會發(fā)生改變,只能根據(jù)事先定義的流程進行,需要改變工作流程時就必須重新進行軟件設計,造成資源浪費。隨著科學技術和市場經濟的不斷發(fā)展,多數(shù)企業(yè)處于一個快速連續(xù)變化的環(huán)境中,他們的業(yè)務過程也在持續(xù)不斷的變化,企業(yè)希望他們的信息系統(tǒng)能夠快速地應對這種動態(tài)性變化,但是傳統(tǒng)工作流系統(tǒng)一旦啟用后不能再發(fā)生任何改變,僅僅依靠前期的一次靜態(tài)定義已經不能滿足現(xiàn)代企業(yè)的需求。動態(tài)工作流的概念就是為了解決這一問題而提出的。
1 動態(tài)工作流概述
一個發(fā)布并開始執(zhí)行的工作流系統(tǒng)包含特定的工作流程,流程對應現(xiàn)實的工作過程。然而,這個現(xiàn)實過程會因為實際情況發(fā)生改變,這時就需要對計算機中的工作流程進行改變。這種能夠根據(jù)實際情況改變工作流程的計算機系統(tǒng)就稱之為動態(tài)工作流系統(tǒng)[2?4]。動態(tài)工作流主要體現(xiàn)的是動態(tài)修改,同時,修改發(fā)生時需要有一定的修改策略,下面是對修改的不同類型以及修改策略的分析。
1.1 動態(tài)修改分類
工作流在運行期間可能發(fā)生多種方面的動態(tài)修改,本文主要從過程的動態(tài)修改方面研究,常見的動態(tài)修改有以下3種形式[5?6]:
(1) 任務的增加或刪除(如A、B兩個連續(xù)的任務之間增加新的任務C);
(2) 任務被其他一些任務替換(如原有的任務A換為任務B);
(3) 任務的執(zhí)行順序改變(如兩個任務的執(zhí)行順序顛倒、串行的任務變?yōu)椴⑿校?/p>
1.2 修改策略分析
當過程定義變更發(fā)生時,它有可能影響運行中的案例,工作流引擎需要對這一變化進行快速響應,工作流要完成從舊的過程定義到新的過程定義的修改策略,常見的修改策略有[7?9]:
(1) 重啟:丟棄運行中的工作流實例,按照新過程定義重新啟動一個工作流實例;但是這種策略由于要丟掉正在運行的實例,會造成大量資源浪費,這需要付出很大代價。
(2) 繼續(xù)執(zhí)行:正在運行的實例不做任何處理,繼續(xù)執(zhí)行原有的流程,新啟動的實例執(zhí)行新版本的實例;這種策略對于實際發(fā)生的變化不能快速響應,缺少靈活性,也就缺少了動態(tài)修改的意義。
(3) 遷移:將正在運行的工作流實例按照某種規(guī)則轉換到新的過程定義中繼續(xù)執(zhí)行;這種策略能夠快速應對實際發(fā)生的變化,使用這種策略最能體現(xiàn)動態(tài)性,也是本文研究動態(tài)工作流修改策略的重點。
2 系統(tǒng)設計
工作流系統(tǒng)是通過人與計算機協(xié)同工作的管理系統(tǒng),它輔助人來完成具有特定流程的工作,因此,本設計的工作流系統(tǒng)首要職責是它能夠幫助用戶定義的工作流程;還包含工作流過程定義的制定;指定過程定義的實施,用戶能夠使用制定后的工作流程;以及廢棄的工作流過程定義的刪除與備份。其次,它具有動態(tài)性,現(xiàn)實的工作過程發(fā)生改變,管理員用戶可以通過管理員界面修改系統(tǒng)正在運行的工作流模型,提交修改后的工作流,工作流系統(tǒng)將這個新工作流模型動態(tài)實施新的工作流實例以及正在運行中的實例中。
2.1 系統(tǒng)結構
為了實現(xiàn)工作流系統(tǒng)的動態(tài)性,參考了工作流管理聯(lián)盟提供的參考模型,以.NET框架為基礎,采用3層體系結構設計而成,系統(tǒng)結構如圖1所示。
2.2 表示層
表示層是用戶界面,分為2種:普通用戶界面和管理用戶界面。普通用戶界面是工作流程的顯示界面,主要面向的是普通用戶,普通用戶使用這個界面完成正常的工作流程;管理用戶界面是工作流系統(tǒng)的實例和過程定義的管理界面,是面向管理員用戶的,管理員通過這個界面來定制、實施、修改、刪除工作流過程定義,還能管理正在實施的工作流實例及查詢已經完成的工作流實例。
2.3 業(yè)務邏輯層
該層主要包括工作流執(zhí)行服務以及基礎業(yè)務2個部分。工作流執(zhí)行服務部分完成工作流管理的功能;基礎業(yè)務部分完成輔助功能,下面是這兩層的具體設計。
(1) 工作流執(zhí)行服務。工作流執(zhí)行服務是用戶與工作流引擎之間的橋梁,它實現(xiàn)了用戶界面與工作流引擎的分離,它負責管理工作流實例和響應用戶服務請求,是整個工作流管理系統(tǒng)的心臟,其主要功能如下:
① 與外部資源交互完成各項活動,為用戶提供應用接口,接收用戶的服務請求并做出響應;
② 實例化工作流引擎,根據(jù)用戶的工作流服務申請查找工作流表,得到工作流關聯(lián)的類名,使用C#反射機制創(chuàng)建對象;
③ 管理運行中的工作流實例,包括異常結束的工作流實例處理,結束后的工作流實例的資源釋放等。
(2) 基礎服務。基礎服務部分不是工作流管理系統(tǒng)的一部分,它是與實際工作的執(zhí)行相關聯(lián)的,包含實際工作中的應用、配置文件與數(shù)據(jù)庫等,他們由工作流引擎調用完成工作流過程定義的所有任務。
2.4 數(shù)據(jù)訪問層
數(shù)據(jù)訪問層主要為系統(tǒng)提供與數(shù)據(jù)庫之間的鏈接和操作功能。
3 關鍵技術
3.1 數(shù)據(jù)庫設計
工作流系統(tǒng)的過程定義數(shù)據(jù)是在數(shù)據(jù)庫中存儲,數(shù)據(jù)庫主要包括工作流表、狀態(tài)表、狀態(tài)轉換表、用戶組表、用戶表、工作流歷史表、狀態(tài)歷史表等幾個表,表間關系如圖2所示。
3.2 工作流引擎設計
工作流引擎是工作流系統(tǒng)的核心,工作流程的執(zhí)行部分,它在正確的時間把正確的信息傳遞給正確的資源來執(zhí)行,提供完成案例所需的后勤支持功能。有以下幾個子模塊組成:
① 解析工作流:從數(shù)據(jù)庫中讀出引擎需要的狀態(tài),狀態(tài)轉換,操作權用戶等信息。
② 流程控制:控制工作流在正確的時間執(zhí)行正確的操作,實現(xiàn)工作流整個流程與過程定義一致性執(zhí)行,其主要包括工作流節(jié)點控制、轉移控制以及狀態(tài)控制。工作流實例在整個生命周期中會根據(jù)不同的資源情況,數(shù)據(jù)情況等工作在不同的狀態(tài)中,這些狀態(tài)控制工作流的執(zhí)行,這些狀態(tài)有:初始狀態(tài)、運行狀態(tài)、掛起狀態(tài)、終止狀態(tài)、完成狀態(tài)[10]。
③ 信息記錄:記錄工作流運行歷史,并將其寫入工作流歷史表和狀態(tài)歷史表。
④ 任務調度:基于反射機制實現(xiàn),動態(tài)調用基礎業(yè)務中的方法完成流程任務。
用戶申請工作流的執(zhí)行過程如圖3所示。
3.3 工作流修改服務設計
工作流修改服務是工作流系統(tǒng)完成動態(tài)修改的核心部分,響應管理用戶在工作流動態(tài)修改界面發(fā)來的工作流修改請求,將新的工作流過程定義數(shù)據(jù)加入到數(shù)據(jù)庫中,同時在管理用戶的協(xié)同工作下完成遷移規(guī)則的設定,得到遷移規(guī)則,其中舊工作流的每一個狀態(tài)都有一個與之對應的新工作流中的狀態(tài),可以一個對多個,但是不能多對一或多對多,規(guī)則以XML格式描述,描述如下:
調用工作流引擎中的流程控制掛起工作流實例,查看當前工作流運行所處的狀態(tài),根據(jù)遷移規(guī)則得到遷移狀態(tài)ID(新過程定義對應的狀態(tài)),調用解析模塊從數(shù)據(jù)庫中加載遷移狀態(tài)信息,流程控制將工作流設置為運行,之后沿用新的過程定義完成工作流實例。動態(tài)修改發(fā)生時系統(tǒng)執(zhí)行過程如圖4所示。
4 結 語
本文研究的動態(tài)工作流是以狀態(tài)以及狀態(tài)轉換為基礎,通過管理員用戶與計算機協(xié)同完成遷移規(guī)則制定,使舊過程定義的狀態(tài)與新過程定義中的狀態(tài)一一對應,能夠快速準確地完成工作流實例從舊工作流到新工作流的轉換,極大地提高了工作流系統(tǒng)的動態(tài)性。
參考文獻
[1] WFMC. Workflow management coalition terminology and glossary (WfMC?TC?1011) [EB/OL]. [1999?01?01]. http://www.amazon.com/Workflow?Management?Coalition?Terminol.
[2] ELLIS C, KEDDARA K, ROZENBERG G. Dynamic change within workflow systems [C]// Proceedings of the Conference on Organizational Computing System. New York, NY, USA: ACM Press, 1995: 10?21.
[3] KRADOLFERM G A. Dynamic workflow schema evolution based on workflow type versioning and workflow migration [C]// Proceedings of the 4th IFCIS International Conference on Cooperative Information Systems. Edinburgh, Scotland: IEEE Computer Society, 1999: 104?111.
[4] 周明天,王敏毅,姚紹文.一種基于擴展任務模型結構的工作流實例遷移方法[J].軟件學報,2003,14(4):757?763.
[5] 萬欣,劉強.工作流平臺中動態(tài)流程模型的研究[J].計算機應用研究,2006,23(9):69?71.
[6] 王建民,聞立杰.工作流管理:模型、方法和系統(tǒng)[M].北京:清華大學出版社,2004.
[7] 管昌生,蔡瑾.基于角色的動態(tài)工作流技術的研究[J].計算機與數(shù)字工程,2009,37(1):77?80.
[8] 黃賢明,胡志剛.動態(tài)工作流研究[J].計算機與現(xiàn)代化,2009(8):174?177.
[9] 路春光,孟麗麗.基于Web的柔性工作流引擎的設計[J].微計算機信息,2006,22(15):21?23.
[10] 于可欣,齊璇.MINI工作流管理系統(tǒng)引擎的設計與實現(xiàn)[J].計算機工程與科學,2005,27(5):88?90.
2.4 數(shù)據(jù)訪問層
數(shù)據(jù)訪問層主要為系統(tǒng)提供與數(shù)據(jù)庫之間的鏈接和操作功能。
3 關鍵技術
3.1 數(shù)據(jù)庫設計
工作流系統(tǒng)的過程定義數(shù)據(jù)是在數(shù)據(jù)庫中存儲,數(shù)據(jù)庫主要包括工作流表、狀態(tài)表、狀態(tài)轉換表、用戶組表、用戶表、工作流歷史表、狀態(tài)歷史表等幾個表,表間關系如圖2所示。
3.2 工作流引擎設計
工作流引擎是工作流系統(tǒng)的核心,工作流程的執(zhí)行部分,它在正確的時間把正確的信息傳遞給正確的資源來執(zhí)行,提供完成案例所需的后勤支持功能。有以下幾個子模塊組成:
① 解析工作流:從數(shù)據(jù)庫中讀出引擎需要的狀態(tài),狀態(tài)轉換,操作權用戶等信息。
② 流程控制:控制工作流在正確的時間執(zhí)行正確的操作,實現(xiàn)工作流整個流程與過程定義一致性執(zhí)行,其主要包括工作流節(jié)點控制、轉移控制以及狀態(tài)控制。工作流實例在整個生命周期中會根據(jù)不同的資源情況,數(shù)據(jù)情況等工作在不同的狀態(tài)中,這些狀態(tài)控制工作流的執(zhí)行,這些狀態(tài)有:初始狀態(tài)、運行狀態(tài)、掛起狀態(tài)、終止狀態(tài)、完成狀態(tài)[10]。
③ 信息記錄:記錄工作流運行歷史,并將其寫入工作流歷史表和狀態(tài)歷史表。
④ 任務調度:基于反射機制實現(xiàn),動態(tài)調用基礎業(yè)務中的方法完成流程任務。
用戶申請工作流的執(zhí)行過程如圖3所示。
3.3 工作流修改服務設計
工作流修改服務是工作流系統(tǒng)完成動態(tài)修改的核心部分,響應管理用戶在工作流動態(tài)修改界面發(fā)來的工作流修改請求,將新的工作流過程定義數(shù)據(jù)加入到數(shù)據(jù)庫中,同時在管理用戶的協(xié)同工作下完成遷移規(guī)則的設定,得到遷移規(guī)則,其中舊工作流的每一個狀態(tài)都有一個與之對應的新工作流中的狀態(tài),可以一個對多個,但是不能多對一或多對多,規(guī)則以XML格式描述,描述如下:
調用工作流引擎中的流程控制掛起工作流實例,查看當前工作流運行所處的狀態(tài),根據(jù)遷移規(guī)則得到遷移狀態(tài)ID(新過程定義對應的狀態(tài)),調用解析模塊從數(shù)據(jù)庫中加載遷移狀態(tài)信息,流程控制將工作流設置為運行,之后沿用新的過程定義完成工作流實例。動態(tài)修改發(fā)生時系統(tǒng)執(zhí)行過程如圖4所示。
4 結 語
本文研究的動態(tài)工作流是以狀態(tài)以及狀態(tài)轉換為基礎,通過管理員用戶與計算機協(xié)同完成遷移規(guī)則制定,使舊過程定義的狀態(tài)與新過程定義中的狀態(tài)一一對應,能夠快速準確地完成工作流實例從舊工作流到新工作流的轉換,極大地提高了工作流系統(tǒng)的動態(tài)性。
參考文獻
[1] WFMC. Workflow management coalition terminology and glossary (WfMC?TC?1011) [EB/OL]. [1999?01?01]. http://www.amazon.com/Workflow?Management?Coalition?Terminol.
[2] ELLIS C, KEDDARA K, ROZENBERG G. Dynamic change within workflow systems [C]// Proceedings of the Conference on Organizational Computing System. New York, NY, USA: ACM Press, 1995: 10?21.
[3] KRADOLFERM G A. Dynamic workflow schema evolution based on workflow type versioning and workflow migration [C]// Proceedings of the 4th IFCIS International Conference on Cooperative Information Systems. Edinburgh, Scotland: IEEE Computer Society, 1999: 104?111.
[4] 周明天,王敏毅,姚紹文.一種基于擴展任務模型結構的工作流實例遷移方法[J].軟件學報,2003,14(4):757?763.
[5] 萬欣,劉強.工作流平臺中動態(tài)流程模型的研究[J].計算機應用研究,2006,23(9):69?71.
[6] 王建民,聞立杰.工作流管理:模型、方法和系統(tǒng)[M].北京:清華大學出版社,2004.
[7] 管昌生,蔡瑾.基于角色的動態(tài)工作流技術的研究[J].計算機與數(shù)字工程,2009,37(1):77?80.
[8] 黃賢明,胡志剛.動態(tài)工作流研究[J].計算機與現(xiàn)代化,2009(8):174?177.
[9] 路春光,孟麗麗.基于Web的柔性工作流引擎的設計[J].微計算機信息,2006,22(15):21?23.
[10] 于可欣,齊璇.MINI工作流管理系統(tǒng)引擎的設計與實現(xiàn)[J].計算機工程與科學,2005,27(5):88?90.
2.4 數(shù)據(jù)訪問層
數(shù)據(jù)訪問層主要為系統(tǒng)提供與數(shù)據(jù)庫之間的鏈接和操作功能。
3 關鍵技術
3.1 數(shù)據(jù)庫設計
工作流系統(tǒng)的過程定義數(shù)據(jù)是在數(shù)據(jù)庫中存儲,數(shù)據(jù)庫主要包括工作流表、狀態(tài)表、狀態(tài)轉換表、用戶組表、用戶表、工作流歷史表、狀態(tài)歷史表等幾個表,表間關系如圖2所示。
3.2 工作流引擎設計
工作流引擎是工作流系統(tǒng)的核心,工作流程的執(zhí)行部分,它在正確的時間把正確的信息傳遞給正確的資源來執(zhí)行,提供完成案例所需的后勤支持功能。有以下幾個子模塊組成:
① 解析工作流:從數(shù)據(jù)庫中讀出引擎需要的狀態(tài),狀態(tài)轉換,操作權用戶等信息。
② 流程控制:控制工作流在正確的時間執(zhí)行正確的操作,實現(xiàn)工作流整個流程與過程定義一致性執(zhí)行,其主要包括工作流節(jié)點控制、轉移控制以及狀態(tài)控制。工作流實例在整個生命周期中會根據(jù)不同的資源情況,數(shù)據(jù)情況等工作在不同的狀態(tài)中,這些狀態(tài)控制工作流的執(zhí)行,這些狀態(tài)有:初始狀態(tài)、運行狀態(tài)、掛起狀態(tài)、終止狀態(tài)、完成狀態(tài)[10]。
③ 信息記錄:記錄工作流運行歷史,并將其寫入工作流歷史表和狀態(tài)歷史表。
④ 任務調度:基于反射機制實現(xiàn),動態(tài)調用基礎業(yè)務中的方法完成流程任務。
用戶申請工作流的執(zhí)行過程如圖3所示。
3.3 工作流修改服務設計
工作流修改服務是工作流系統(tǒng)完成動態(tài)修改的核心部分,響應管理用戶在工作流動態(tài)修改界面發(fā)來的工作流修改請求,將新的工作流過程定義數(shù)據(jù)加入到數(shù)據(jù)庫中,同時在管理用戶的協(xié)同工作下完成遷移規(guī)則的設定,得到遷移規(guī)則,其中舊工作流的每一個狀態(tài)都有一個與之對應的新工作流中的狀態(tài),可以一個對多個,但是不能多對一或多對多,規(guī)則以XML格式描述,描述如下:
調用工作流引擎中的流程控制掛起工作流實例,查看當前工作流運行所處的狀態(tài),根據(jù)遷移規(guī)則得到遷移狀態(tài)ID(新過程定義對應的狀態(tài)),調用解析模塊從數(shù)據(jù)庫中加載遷移狀態(tài)信息,流程控制將工作流設置為運行,之后沿用新的過程定義完成工作流實例。動態(tài)修改發(fā)生時系統(tǒng)執(zhí)行過程如圖4所示。
4 結 語
本文研究的動態(tài)工作流是以狀態(tài)以及狀態(tài)轉換為基礎,通過管理員用戶與計算機協(xié)同完成遷移規(guī)則制定,使舊過程定義的狀態(tài)與新過程定義中的狀態(tài)一一對應,能夠快速準確地完成工作流實例從舊工作流到新工作流的轉換,極大地提高了工作流系統(tǒng)的動態(tài)性。
參考文獻
[1] WFMC. Workflow management coalition terminology and glossary (WfMC?TC?1011) [EB/OL]. [1999?01?01]. http://www.amazon.com/Workflow?Management?Coalition?Terminol.
[2] ELLIS C, KEDDARA K, ROZENBERG G. Dynamic change within workflow systems [C]// Proceedings of the Conference on Organizational Computing System. New York, NY, USA: ACM Press, 1995: 10?21.
[3] KRADOLFERM G A. Dynamic workflow schema evolution based on workflow type versioning and workflow migration [C]// Proceedings of the 4th IFCIS International Conference on Cooperative Information Systems. Edinburgh, Scotland: IEEE Computer Society, 1999: 104?111.
[4] 周明天,王敏毅,姚紹文.一種基于擴展任務模型結構的工作流實例遷移方法[J].軟件學報,2003,14(4):757?763.
[5] 萬欣,劉強.工作流平臺中動態(tài)流程模型的研究[J].計算機應用研究,2006,23(9):69?71.
[6] 王建民,聞立杰.工作流管理:模型、方法和系統(tǒng)[M].北京:清華大學出版社,2004.
[7] 管昌生,蔡瑾.基于角色的動態(tài)工作流技術的研究[J].計算機與數(shù)字工程,2009,37(1):77?80.
[8] 黃賢明,胡志剛.動態(tài)工作流研究[J].計算機與現(xiàn)代化,2009(8):174?177.
[9] 路春光,孟麗麗.基于Web的柔性工作流引擎的設計[J].微計算機信息,2006,22(15):21?23.
[10] 于可欣,齊璇.MINI工作流管理系統(tǒng)引擎的設計與實現(xiàn)[J].計算機工程與科學,2005,27(5):88?90.