3.2系統(tǒng)的實現
系統(tǒng)中流程定義、工作流引擎、流程監(jiān)控和任務管理等是其重要的功能模塊,現分別闡述他們的實現機制。
3.2.1流程定義
流程定義是整個系統(tǒng)的基礎,提供了一個創(chuàng)建和修改工作流模板的圖形化建模工具。其主要實現:定義業(yè)務流程;創(chuàng)建業(yè)務流程的任務及其執(zhí)行順序;指定執(zhí)行任務的人員和表單等。將定義好的流程數據存儲在數據庫里,為工作流引擎使用。流程定義也為系統(tǒng)的使用者提供了再次開發(fā)使用的基礎,使用者可以根據實際的需要利用此工具定制或修改各種業(yè)務流程,簡化了定義步驟,節(jié)省了開發(fā)時間。
通過圖形化的方式來實現業(yè)務流程的定義,使得整個定義過程變得直觀、便捷。在定義過程中,使用者可以利用流程模板庫提供的多種圖形對象,通過簡單的鼠標拖拽來創(chuàng)建業(yè)務流程。業(yè)務流程的每個環(huán)節(jié)對應一個圖形對象,通過簡單的鼠標操作就能設置對象的屬性如名稱、執(zhí)行者、優(yōu)先權、狀態(tài)、通知方式等,同時將其控制數據和業(yè)務數據保存到數據庫中,建立起流程環(huán)節(jié)與數據表之間的對應關系,方便系統(tǒng)調用。
3.2.2工作流引擎
工作流引擎是整個系統(tǒng)的核心部分,對系統(tǒng)的其它部分起到協調和控制作用。它解釋流程的定義,完成流程的實例化,確定任務及任務的傳遞順序,推動流程實例的執(zhí)行,維護流程的控制數據和業(yè)務數據,維護用戶的任務列表,調用相應的應用程序接口來實現特定的功能。
工作流引擎是系統(tǒng)的重要組成部分,它的好壞直接關系到系統(tǒng)的擴展性、靈活性和穩(wěn)定性。引擎采用Web Service技術來實現,為系統(tǒng)提供了便捷的引用接口,也為系統(tǒng)提供了較好的擴展性和靈活性。在引擎的數據處理中,采用關系數據模型來提高系統(tǒng)的健壯性和應用性,利用關系數據庫提供的觸發(fā)器、存儲過程等機制來實現處理過程中的各種業(yè)務邏輯,還利用關系數據庫的并行原理來實現其中的業(yè)務并行控制[6]。在引擎的編程中采用了面向對象技術,利用它的封裝、繼承等機制,把流程模板、流程實例化、工單模板、數據訪問等功能模塊包裝為C#類,實現模塊化的處理,其定義如下:
1) public class WFTempAdmin{}//流程模板類
2) public class WFInstAdmin{}//流程實例類
3) public class SheetAdmin{}//工單模板類
4) public class DAAdmin{}//數據訪問類
3.2.3流程監(jiān)控
流程監(jiān)控模塊負責對流程實例及其包含的任務在整個系統(tǒng)中的流動狀況進行跟蹤、監(jiān)控,提供對業(yè)務流程的掛起、 恢復、終止、刪除、改派、查詢等功能。用戶可以利用此模塊提供的功能來查詢流程實例的運行情況;可以及時發(fā)現流程實例的異常情況或停滯環(huán)節(jié),并采取相應的措施來處理流程實例,使其盡快恢復正常運行;可以根據需要改變流程的執(zhí)行路徑或者終止流程的執(zhí)行。借助此功能模塊用戶可以深入到流程實例的內部來查看每個任務的詳細執(zhí)行情況,如流程實例名、任務的起始時間、結束時間、執(zhí)行者及任務的狀態(tài)等。
3.2.4任務管理
任務管理模塊實現對用戶的任務進行處理。工作流引擎根據各種任務調度策略分配任務到用戶的任務管理列表。在一些特殊情況下,有部分任務不必添加到任務管理列表,也不需要有執(zhí)行者,而是由工作流引擎自動來完成。用戶通過任務管理模塊提供的功能,可以接收任務,檢出任務并調用相應工單模板來執(zhí)行任務;可以撤銷或刪除有異常的任務,使其回到上一任務的執(zhí)行者;還可以查詢工單信息和已處理過的任務
信息。當任務執(zhí)行完畢,任務的狀態(tài)隨之改變(任務狀態(tài)分初始化、運行中、完成三種),任務管理模塊向工作流引擎報告任務的執(zhí)行情況,將執(zhí)行的結果保存到后臺數據庫,并啟動相應的任務。圖2是任務管理界面,在“新任務”頁面接收任務,在“待辦任務”中進行任務的執(zhí)行,在“已辦任務”中可以進行查詢處理。