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