李蘊+王憲杰+武秀川
摘 要: 從實際需求出發(fā)研究并設(shè)計了一個基于工作流技術(shù)的業(yè)務組織與協(xié)調(diào)工具。首先利用業(yè)務流程建模對活動網(wǎng)絡圖進行擴展,將節(jié)點劃分為活動節(jié)點和邏輯節(jié)點,使模板能夠更好地描述業(yè)務流程,并加入模板驗證算法檢查模板設(shè)計過程中的邏輯錯誤。然后擴展工作流引擎并將工作流引擎獨立出來,方便系統(tǒng)的部署、配置和維護,并在工作流引擎中引入異常處理機制,使系統(tǒng)有更好的容錯性;其次通過代理機制構(gòu)建出分布式業(yè)務組織工具,能夠滿足局域網(wǎng)中分布式業(yè)務組織的任務需求;最后,通過協(xié)同控制機制實現(xiàn)多業(yè)務流程之間的協(xié)同工作。
關(guān)鍵詞: 業(yè)務流程建模; 工作流引擎; 異常處理; 分布式業(yè)務; 協(xié)同
中圖分類號: TN99?34; TM417 文獻標識碼: A 文章編號: 1004?373X(2017)01?0145?04
Abstract: A business organization and coordination tool based on workflow technology is studied and designed proceeding from the actual demand. The activity network diagram was extended with the business process modeling to divide the nodes into the activity node and logic node, which makes the template can better describe the business process. The template verification algorithm is introduced to check the logical error in the template design process. The workflow engine is expanded and separated, which is convenient for the system deployment, configuration and maintenance. The exception handling mechanism is introduced into the workflow engine to make the system have better fault tolerance. The distributed business organization tool was constructed by means of the agent mechanism, which can accomplish the mission requirements of the distributed business organization in local area network. The collaborative work among multiple business processes was realized with the coordination control mechanism.
Keywords: business process modeling; workflow engine; exception handing; distribution business; collaboration
0 引 言
隨著互聯(lián)網(wǎng)的快速發(fā)展和企業(yè)業(yè)務需求的不斷增長,企業(yè)中出現(xiàn)大量的遺留軟件系統(tǒng),短時間內(nèi)很難完全通過全新的軟件系統(tǒng)來取代。如果能將這些遺留的軟件系統(tǒng)通過某種技術(shù)組合起來滿足企業(yè)新的業(yè)務需求,必將為企業(yè)節(jié)省巨大的經(jīng)濟開支。本文基于上述需求,在大量理論研究的基礎(chǔ)上,結(jié)合現(xiàn)有的工作流系統(tǒng)設(shè)計并實現(xiàn)了一個基于工作流的業(yè)務組織管理系統(tǒng),將具有特定功能的軟件當作流程中的任務節(jié)點,通過定義流程模板將軟件與任務節(jié)點聯(lián)系起來,實現(xiàn)不同軟件的協(xié)調(diào)運行,共同完成特定業(yè)務流程。
1 基于工作流技術(shù)的業(yè)務組織工具研究
1.1 業(yè)務組織工具的總體架構(gòu)
業(yè)務組織工具采用MVC架構(gòu)設(shè)計,將該工具的系統(tǒng)分成三層:描述層、邏輯層、數(shù)據(jù)庫層。業(yè)務組織工具的系統(tǒng)架構(gòu)如圖1所示。
1.2 業(yè)務流程模型設(shè)計
業(yè)務模板在設(shè)計完成后進行模板驗證用以判斷用戶設(shè)計的邏輯是否合理。驗證一個業(yè)務流程模板,首先要對其進行模板解析以便進行驗證。模板解析最主要的工作是解析出流程模板中定義的各個節(jié)點的屬性信息和它們之間的邏輯關(guān)系以及各條邊中定義的轉(zhuǎn)移條件。其中各個節(jié)點之間的邏輯關(guān)系用前驅(qū)節(jié)點和后繼節(jié)點的集合來表述,獲取拓撲關(guān)系的算法思想是讀取流程模板中的每條邊,將該邊的終止節(jié)點加入到起始節(jié)點的后繼節(jié)點集中,將該邊的起始節(jié)點加入到終止節(jié)點的前驅(qū)節(jié)點集中,這樣當處理完所有邊后,整個模板的邏輯拓撲關(guān)系就都通過每個節(jié)點的前驅(qū)和后繼節(jié)點集保存起來。
為了判斷流程模板的正確性,首先應該對流程模板進行一些規(guī)則性的約束,這樣能夠以這些規(guī)則來判斷流程模板的正確性,下面描述對應的約束條件:業(yè)務模板開始節(jié)點和結(jié)束節(jié)點惟一,并且它們不能直接相連;子流程中子開始節(jié)點和子結(jié)束節(jié)點惟一,并且不能直接相連;除活動節(jié)點外,其他邏輯節(jié)點必須成對出現(xiàn),流程中必須有開始節(jié)點和結(jié)束節(jié)點,出現(xiàn)與分支、或分支、循環(huán)開始必須有與其對應的與匯聚、或匯聚、循環(huán)結(jié)束節(jié)點出現(xiàn);各節(jié)點的邊約束必須有規(guī)定,例如:開始節(jié)點只有輸出邊,結(jié)束節(jié)點只有輸入邊等;在模板中邏輯控制節(jié)點不能交叉出現(xiàn),但可以相互包含;邊必須有前驅(qū)節(jié)點和后繼節(jié)點;從開始節(jié)點出發(fā),到模板中的每一個節(jié)點都有一個可達路徑。
1.3 工作流引擎設(shè)計
(1) 工作流引擎總體設(shè)計
工作流引擎中最基本的也是最重要的模塊是流程調(diào)度模塊,該模塊主要包含:控制中心、任務管理、依賴檢查、轉(zhuǎn)移控制。工作流引擎的內(nèi)部組成如圖2所示。
(2) 工作流引擎調(diào)度算法設(shè)計
流程調(diào)度算法是整個工作流引擎的核心內(nèi)容,引擎調(diào)度算法涉及的數(shù)據(jù)結(jié)構(gòu)主要包括四個隊列:RS:未完成隊列;ES:執(zhí)行中隊列;SS:已完成隊列;MSG:消息隊列。
以上隊列可以由數(shù)組模擬實現(xiàn),其中RS,ES,SS三個隊列用于存儲節(jié)點的ID,MSG隊列存儲的是引擎的執(zhí)行狀態(tài)消息,引擎的狀態(tài)消息可由一個二元組表示W(wǎng)FMessage=
1.4 工作流異常處理設(shè)計
(1) 基于改進ECA規(guī)則和案例推理的工作流異常處理模型
SECA_CBR異常處理方法模型的主要思想是:在處理異常時,首先系統(tǒng)通過SECA規(guī)則庫進行查詢,判斷規(guī)則庫中的規(guī)則是否存在對應的處理方法,如果有對應的規(guī)則,則按照已定的規(guī)則處理相應的異常;如果不存在對應的規(guī)則,通過案例推理方法進行匹配和推理新異常處理方法,推理出來的方法并不立即執(zhí)行而是將該方法推送給用戶,讓用戶決定是通過推理出的方法還是使用自己判斷的處理方法。當用戶對新異常確定處理方法后,系統(tǒng)會將其新的處理方法存入異常案例庫以擴展新的案例,通過規(guī)則轉(zhuǎn)化為SECA規(guī)則存入SECA規(guī)則庫,這樣既豐富了案例庫使案例推理更加準確,又能在該異常再次發(fā)生時通過SECA規(guī)則迅速處理。
(2) 基于SECA規(guī)則的異常處理
本工具通過改進的ECA規(guī)則設(shè)計出SECA(Super ECA),將流程的模板設(shè)計和工作流異常處理設(shè)計徹底分開,這將降低業(yè)務模板的復雜程度,而且方便對異常規(guī)則的維護。
SECA規(guī)則通過添加模板ID和異?;顒拥腎D信息用于標識不同模板,實現(xiàn)了將SECA規(guī)則庫和流程模板分開,讓流程文件更加簡潔便于維護,如果需要添加新的規(guī)則不必在模板文件中添加,只需在SECA規(guī)則庫中添加,方便用戶的操作,同時提高了系統(tǒng)的可維護性。
(3) 基于案例推理的異常處理
本業(yè)務組織工具需將案例通過一些規(guī)則轉(zhuǎn)換成SECA規(guī)則,并將已處理過的異常案例通過對應的規(guī)則轉(zhuǎn)換成SECA規(guī)則并存到SECA規(guī)則庫,在下次遇到該異常時可以直接查詢SECA規(guī)則庫中的規(guī)則對異常進行處理,這樣可以繞開復雜的案例推理過程,提高異常處理的速度和效率。
2 業(yè)務組織工具協(xié)同機制研究
2.1 業(yè)務流程分布式運行機制研究
(1) 基于代理的分布式架構(gòu)
為了實現(xiàn)業(yè)務組織工具工作的分布式和充分利用計算機資源,本文設(shè)計并實現(xiàn)獨立的代理部件。代理有自己的端口,可以接收本地任務和外部代理發(fā)來的任務請求。代理收到請求后,首先通過預處理對數(shù)據(jù)進行處理、數(shù)據(jù)映射以及加密和解密工作;然后代理根據(jù)相應的請求調(diào)用已定義的業(yè)務軟件,并將相應的參數(shù)傳入啟動的軟件或服務中,等處理完成后將執(zhí)行的結(jié)果和狀態(tài)返回給對應的工作流引擎。
代理工作流程大概如下:工作流A執(zhí)行過程中遇到活動節(jié)點將該節(jié)點交給代理去處理,代理判斷該節(jié)點的屬性是否是本地執(zhí)行,是則啟動相應程序并將執(zhí)行完的結(jié)果返回給業(yè)務組織工具;否則將活動節(jié)點的詳細信息通過通信協(xié)議發(fā)送給其他代理(如B,C,D等)。假如B代理收到信息判斷是本代理執(zhí)行,則啟動相應的應用程序,并將執(zhí)行完成后的結(jié)果返回。其他代理收到信息后判斷與自己無關(guān)自動忽略。
(2) 分布式代理框架的實現(xiàn)
代理是由登錄、系統(tǒng)配置、業(yè)務處理、代理服務和監(jiān)控管理模塊組成。監(jiān)控管理模塊的接口與業(yè)務組織工具的異常處理保持一致,可以通過業(yè)務組織工具管理代理服務的異常情況;系統(tǒng)配置涉及到的東西和業(yè)務組織工具的分布式協(xié)同關(guān)系不大。
2.2 業(yè)務流程協(xié)同機制研究
(1) 協(xié)同機制架構(gòu)
為實現(xiàn)多流程之間的協(xié)同工作任務要求,本文在工作流引擎之間引入了協(xié)同控制機制,如圖3所示。通過該機制能夠協(xié)調(diào)需要多流程協(xié)同工作的業(yè)務流程。
(2) 協(xié)同工作流
一般情況下協(xié)同工作流的實現(xiàn)都會有對應的協(xié)同模板,將協(xié)同模板作為優(yōu)先級高的流程進行執(zhí)行,當有需要執(zhí)行的協(xié)同模板活動時就會執(zhí)行對應的協(xié)同交互工作。本工具將協(xié)同模板設(shè)計省略,通過采用可視化的方法對模板之間的活動添加對應的時序約束關(guān)系。在工作流引擎執(zhí)行協(xié)同流程時通過查詢時序約束關(guān)系自動完成流程之間的時序約束關(guān)系。
(3) 協(xié)同機制的實現(xiàn)
本工具不將協(xié)同規(guī)則寫入對應的模板文件中,而是把協(xié)同規(guī)則存入獨立的協(xié)同規(guī)則庫。在設(shè)計協(xié)同規(guī)則時通過業(yè)務組織工具的模板驗證模塊獲取流程的拓撲結(jié)構(gòu),獲取每個流程模板中的活動節(jié)點,然后設(shè)定各模板中活動節(jié)點的時間約束性。
3 基于工作流的業(yè)務組織工具的實現(xiàn)
3.1 業(yè)務流建模工具的實現(xiàn)
(1) 模板繪制
業(yè)務組織工具、建模工具的繪制功能主要通過Qt圖形視圖框架進行開發(fā),Qt開發(fā)圖形視圖框架由項(Item)、場景(Scene)和視圖(View)三層構(gòu)成。其中項提供各種圖形供繪制功能使用;場景是項的存儲容器,可以用來管理圖形項;視圖是控制可視化窗口部件,主要使場景中的內(nèi)容可見。
(2) 界面展示
本工具將業(yè)務建模工具集成在業(yè)務組織工具中,主要有新建模板、打開模板、保存模板、另存為模板等功能。從實際需求出發(fā)繪制的業(yè)務流程模板,如圖4所示。
3.2 工作流引擎的實現(xiàn)
(1) 本地引擎的實現(xiàn)
引擎實現(xiàn)類主要由WorkFlowInstance構(gòu)成。其主要的函數(shù)有:模板寫入數(shù)據(jù)庫函數(shù),控制流程引擎的主函數(shù),模板的邏輯結(jié)構(gòu)拓撲結(jié)構(gòu)生成函數(shù),獲取該節(jié)點信息函數(shù),初始化節(jié)點函數(shù),MSG消息隊列的處理函數(shù),向隊列中加入節(jié)點函數(shù),處理開始節(jié)點函數(shù),處理結(jié)束節(jié)點函數(shù),處理活動節(jié)點函數(shù),處理與分支節(jié)點函數(shù),處理與匯聚節(jié)點函數(shù),處理或分支節(jié)點函數(shù),處理或匯聚節(jié)點函數(shù),處理循環(huán)開始節(jié)點函數(shù),處理循環(huán)結(jié)束節(jié)點函數(shù),處理子流程節(jié)點函數(shù),處理邊上條件設(shè)置的判斷并返回結(jié)果函數(shù),線程啟動時內(nèi)存初始化設(shè)置函數(shù),根據(jù)異常處理模塊返回的處理建議處理函數(shù),重新執(zhí)行某個節(jié)點函數(shù)。
(2) 業(yè)務監(jiān)控工具的實現(xiàn)
業(yè)務流程監(jiān)控模塊的主要功能是當用戶啟動一個業(yè)務流程后,對流程實例進行實時管理和控制,其主要組成部分包括:正在執(zhí)行的流程管理,執(zhí)行完畢的流程管理,流程運行狀態(tài)監(jiān)控,已執(zhí)行完的流程回放等。
3.3 異常處理模塊的實現(xiàn)
3.3.1 異常處理功能類的實現(xiàn)
異常處理模塊的主要應用環(huán)境是業(yè)務流實例執(zhí)行活動節(jié)點發(fā)生異常情況,對異常情況進行適當?shù)奶幚硎沽鞒棠軌蚶^續(xù)執(zhí)行下去。該功能模塊主要由WFException,WFExceptionMonitor和WFEManualDlg三個類實現(xiàn),其中三個類之間相互關(guān)聯(lián)。
3.3.2 功能展示
業(yè)務流程由項目目標、需求分析、設(shè)計方案、提交方法四個活動組成。在設(shè)計項目方案時必須先獲取項目要實現(xiàn)的目標,這樣才能根據(jù)目標進行分析并設(shè)計執(zhí)行方案,假如在調(diào)用項目目標軟件獲取項目要實現(xiàn)的目標時,獲取不到查詢結(jié)果,此時系統(tǒng)拋出異常,該異常被異常探測模塊捕獲并將獲取到的異常信息發(fā)送給異常分析模塊,該模塊收到信息后首先查詢SECA規(guī)則庫。
SECA規(guī)則庫中沒有關(guān)于該異常的規(guī)則,因此異常分析模塊將異常信息發(fā)給案例推理模塊,案例推理模塊接收到異常信息后首先用改進后的案例匹配算法對案例庫進行檢索,獲取與該異常相似的案例組,然后通過案例修正算法對匹配到的案例中的解方法進行修正使其適合處理新異常,最后將修正后的處理方法作為異常處理建議發(fā)給用戶。
3.4 分布式和協(xié)同模塊實現(xiàn)
3.4.1 分布式的實現(xiàn)
在流程模板設(shè)計時,活動節(jié)點需要指定由哪個角色和用戶執(zhí)行,該角色和用戶是計算機登錄采用的賬號,分布式工作的設(shè)計在設(shè)計活動節(jié)點屬性時已經(jīng)指定。代理界面記錄所有代理的登錄情況,包括用戶名稱、IP地址、訂閱信息等。通過該代理可以接收和發(fā)送請求,其發(fā)送請求過程類似三次握手,邀請?同意?確定其左側(cè)為對應的邀請信息,右側(cè)為本代理收到的返回信息。通過右側(cè)代理收到的實時狀態(tài)反饋,對本任務進行對應的操作。
3.4.2 協(xié)同控制機制實現(xiàn)
業(yè)務組織工具通過引入?yún)f(xié)同控制機制來協(xié)調(diào)多流程之間的協(xié)同工作問題,業(yè)務協(xié)調(diào)機制最主要的是協(xié)同規(guī)則的表述問題。通過具體的協(xié)同工作實例來展示該機制的工作方式。其中參加協(xié)同工作的業(yè)務流程模板如圖5,圖6所示。
在設(shè)計上述流程模板后,需要將該模板設(shè)置成協(xié)同模板組。本文將對應的協(xié)同工作組添加到對應的數(shù)據(jù)空中為其建立惟一標識。
其中流程模板信息展示協(xié)同模板組中各模板的信息,包括:模板ID、模板名稱、活動節(jié)點號、活動節(jié)點名稱等。該功能是通過模板驗證模塊的拓撲關(guān)系圖來實現(xiàn)的。
4 結(jié) 論
本文在大量理論研究的基礎(chǔ)上,結(jié)合現(xiàn)有的工作流系統(tǒng)設(shè)計并實現(xiàn)了一個基于工作流的業(yè)務組織工具,將具有特定功能的軟件當作流程中的任務節(jié)點,通過定義流程模板將軟件與任務節(jié)點聯(lián)系起來,實現(xiàn)不同軟件的協(xié)調(diào)運行,共同完成特定業(yè)務流程。
參考文獻
[1] 楊博,劉大有,楊鯤.移動Agent系統(tǒng)通信效率的分析與優(yōu)化[J].計算機研究與發(fā)展,2004,41(4):531?538.
[2] 袁清珂,趙汝嘉.并行工程環(huán)境下設(shè)計任務調(diào)度原理與實現(xiàn)方法的研究[J].計算機學報,2000,23(4):440?443.
[3] 柴學智,曹健.面向云計算的工作流技術(shù)[J].小型微型計算機系統(tǒng),2012,33(1):90?95.
[4] JIANG P, SHAO X Y, QIU H B, et al. Interoperability of cross?organizational workflows based on process?view for colla?borative product development [J]. Concurrent engineering, 2008, 16(1): 73?87.
[5] 杜彥華,范玉順.基于事件?狀態(tài)?過程規(guī)則的跨組織工作流協(xié)同方法[J].計算機集成制造系統(tǒng),2008,14(7):1342?1348.
[6] 范玉順,吳澄.基于協(xié)調(diào)理論的工作流建模方法[J].計算機集成制造系統(tǒng),2001,7(4):1?6.
[7] 石俊萍,李必云.基于工作流的管理系統(tǒng)開發(fā)模型[J].吉首大學學報(自然科學版),2010,31(6):49?52.
[8] 何清法,李國杰,焦麗梅,等.基于關(guān)系結(jié)構(gòu)的輕量級工作流引擎[J].計算機研究與發(fā)展,2001,38(2):129?137.
[9] 劉向前,王曉琳.基于協(xié)調(diào)機制的多工作流過程合并方法[J].計算機工程,2003,29(2):118?119.