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