業務工作流引擎調度算法簡析(一)

cloudhou 12年前發布 | 216 次閱讀 liffect Dropbox

在工作流系統中,系統調度是核心,調度算法的生效程度和成熟性直接決定了工作流系統的可用性。本文章描述工作流如何推進和回退,并且描述在分之、合并、跳轉等特殊情況下的流轉規則處理。
 
基本概念
 
1.1 流程實例
 ?流程實例是根據流程定義所產生的,一個流程啟動后自動產生一個流程實例;
 ?系統完成創建流程實例后,需要初始化流程實例(如:給流程全局變量賦值);
 ?流程實例創建并初始化完成后,流程遷移到流程啟動節點上;
 
1.2 啟動節點(Start-State)
 ?啟動節點標識著一個流程的開始,一個流程實例包括一個或多個啟動節點,本系統中只支持一個啟動節點;
 ?啟動節點沒有前序節點,但擁有一個或多個后序節點;
 ?作為一個流程的開始,啟動節點沒有特定的凼義,只需要完成流程啟動初始化操作(如:回調執行用戶指定的流程創建過程的代碼、回調執行用戶指定的流程啟動時的代碼等等);
 ?當流程到達到啟動節點以后,系統根據定義的規則(條件)尋找下一個活動節點(ESB節點),找到以后,自動遷移到活動節點上;
 
1.3 終止節點(End-State)
 ?終止節點標識著一個流程的結束,一個流程實例包括一個或多個終止節點,本系統可以支持多個終止節點;
 ?終止節點沒有后序節點,但擁有一個或多個前序節;
 ?作為一個流程的結束,終止節點沒有特定的凼義,只需要完成流程結束后的操作(如:回調執行用戶指定的流程完成的代碼、回調執行用戶指定的流程歸檔的代碼等等);
 ?流程終止后,系統自動歸檔流程實例并將其銷毀(即流程處于非活動狀態);
 
1.4 活動節點(Activety Node)
 
活動節點是流程中最主要的節點,也是最復雜的節點。系統執行到該節點時將根據規則定義產生任務項(Task Item),任務項是用戶與工作流進行交換唯一途徑。
 
在活動節點需要各種各樣的規則,包括以下幾個方面:
 
u 節點業務屬性
 
? 業務功能定義,定義該節點所關聯的業務
 
? 變量定義,包括本身節點變量定義和取公有變量節點定義
 
? 啟動條件定義,定義該節點在什么條件下啟動。
 
u 流程執行規則

? 執行者范圍定義,定義該節點哪些部門或角色或個人可以執行。
 
? 是否可以終止,定義該節點是否可以終止流程。
 
? 生效條件定義,定義該節點執行生效表達式。
 
? 限時處理定義,定義該節點處理時限。
 
? 協作規則定義,定義該節點協作方式,包括任務分配方式、任務執行方式和任務搶占方式。
 
u 流程回退規則
 
? 能否回退標記,指示該節點是否可以執行回退操作
 
? 回退忽略標記,指示系統回退時,該節點是否忽略。
 
? 生效條件定義,定義該節點回退生效條件表達式。
 
? 回退模式定義,定義從該節點如何執行回退
 
? 回退環節定義,如果回退模式定義定義為指定環節,則需要定義回退環節。
 
? 回退確認標記,指示該節點回退時,是否需要進行提示。
 
u 流程合并規則
 
? 合并流程標記,指示該節點執行合并操作時,是否對流程進行合并。
 
? 生效條件定義,定義該節點合并生效條件表達式
 
u 流程跳轉規則
 
? 生效條件定義,定義該節點跳轉生效表達式
 
? 任務等待方式,定義跳轉時,如何處理未完成任務的情況。
 
? 跳轉條件定義,定義該節點在什么情況下進行跳轉。
 
u 流程轉發規則
 
? 能否轉發定義,指示該節點是否可以執行轉發操作。
 
? 轉發范圍定義,定義該節點可以轉發給哪些人。
 
? 生效條件定義,定義該節點轉發生效條件表達式。
 
? 轉發確認標記,指示該節點轉發時,是否需要進行提示
 
u 流程通知提醒規則
 
? 生效條件定義,定義該節點通知生效表達式
 
? 通知接收范圍定義,定義該節點哪些人可以接收通知。
 
? 通知模式定義,定義何時進行通知。
 
? 通知內容定義,定義通知時發送的內容
 
1.5 條件節點(Condition Node)
 
條件節點用來用來定義流程流轉條件,用來控制流程流轉方向
 
條件節點需要定義以下內容:
 
u 條件表達式,用來計算條件值
 
1.6 事件節點(Event Node)
 
事件節點用來定義流程在流轉過程進行外部交互的操作,如發送郵件、發送短信等等操作。
 
事件節點不需要用戶介入操作,由系統自動完成,因此,也不需要生成工作任務項(Task Item)。
 
工作流系統提供抽象供用戶實現事件節點邏輯,工作流在實例運行過程中,自動回調該接口完成操作。
 
事件節點需要定義以下內容:
 
u 生效條件定義,定義該節點有效條件,如果條件無效,則忽略該節點,自動流轉到下一個節點。
 
1.7 子流程節點(Sub Process Node)
 
子流程節點用來用來定義在工作流程過程調用另外一個流程的功能,系統不在子流程產生定工作任務項(Task Item),但可以產生通知提示。
 
在子流程節點需要各種各樣的規則,包括以下幾個方面:
 
u 節點業務屬性
 ?? 子流程定義,定義該節點所關聯的子流程。
 ?? 變量定義,包括本身節點變量定義和取公有變量節點定義。
 ?? 業務數據定義,定義進入子流程的業務數據規則。
 ?? 生效條件定義,定義在什么情況下進入子流程。
 ?? 是否等待定義,定義執行子流程過程,主流程是否等待。
 ?? 限時處理定義,定義該子流程處理時限。
 
u 子流程回退規則
 ?? 能否回退標記,指示該子流程是否可以執行回退操作。
 ?? 回退忽略標記,指示系統回退時,該節點是否忽略。
 ?? 生效條件定義,定義該節點回退生效條件表達式。
 ?? 回退模式定義,定義從該節點如何執行回退。
 ?? 回退環節定義,如果回退模式定義定義為指定環節,則需要定義回退環節。
 ?? 回退確認標記,指示該節點回退時,是否需要進行提示。
 
1.8 外部系統調用節點
 
業務系統在運行過程中,需要與其它系統進行數據交換(即調用其它系統一些接口等),外部系統調用節點就是用來完成該項任務。
 
工作流系統提供一套抽象的業務接口,供工作流程開發人員實現,系統在運行該節點自動回調該接口,完成與其它系統交換的功能。
 
外部系統調用節點定義包括以下內容:
 ?u 回調接口定義,定義節點所關聯的回調接口。
 ?u 變量定義,包括本身節點變量定義和取公有變量節點定義。
 ?u 業務數據定義,定義進入該節點的業務數據規則。
 ?u 生效條件定義,定義在什么情況下進入ESB。
 ?u 是否等待定義,定義執行ESB節點過程中,流程是否等待。
 ?u 限時處理定義,定義該ESB節點處理時限。
 ?u 回退條件定義,定義該節點回退生效條件表達式。
 ?u 能否回退標記,指示該子流程是否可以執行回退操作
 ?u 回退模式定義,定義從該節點如何執行回退
 ?u 回退環節定義,如果回退模式定義定義為指定環節,則需要定義回退環節。
 ?u 回退確認標記,指示該節點回退時,是否需要進行提示。
 ?u 回退忽略標記,指示系統回退時,該節點是否忽略。
 
1.9 分支條件節點(Split Node)
 
分支條件節點是業務流程定義過程中非常重要節點,用來控制流程流向。
 
分支條件節點有以下三種:
 ?與分支條件節點(AND Split Node):流程在流轉過程中,只要符合條件的節點都需要流轉。
 ?或分支條件節點(OR Split Node):流程在流轉過程中,選擇符合條件節點中的一個或多個節點進行流轉。
 ?異或分支條件節點(XOR Split Node):流程在流轉過程中,選擇符合條件節點中一個進行流轉。
 
分支條件節點不會產生工作任務項(Task Item),系統流轉到該環節時自動處理,并流轉到下個節點。
 
分支條件節點定義包括以下內容:
 ?u 條件定義(多個條件定義)
 ?? 條件表達式定義,定義如何來計算該條件
 ?? 條件滿足時,下一個流程節點定義。
 
1.10 合并節點(Join Node)
 
合并節點是合并多個流入節點,控制任務流轉。
 
合并節點不會產生工作任務項(Task Item),系統流轉到該環節時自動處理,并流轉到下個節點。
 
合并節點包括兩種類型:
 1.與合并節點(AND Join Node):一直等到所有的流入節點完成任務,才流轉到下一個節點。
 2.或合并節點(OR Join Node):不等待所有流入節點完成任務,任何一個流入節點都直接通過。
 
合并節點定義包括以下:
 
u 流程合并規則定義
 ?? 合并流程標記,指示該節點執行合并操作時,是否對流程進行合并。
 ?? 生效條件定義,定義該節點合并生效條件表達式
 
u 回退規則定義
 ?? 回退策略定義,定義回退時,是否取消未完成流入節點的任務。
 ?? 回退提醒定義,定義未完成流入節點的任務被取消時,是否提示客戶。
 ?? 回退模式定義,定義從該節點如何執行回退
 ?? 回退環節定義,如果回退模式定義定義為指定環節,則需要定義回退環節。
 ?? 回退確認標記,指示該節點回退時,是否需要進行提示。
 ?? 回退忽略標記,指示系統回退時,該節點是否忽略。
 
1.11 邏輯節點(Logic Node)
 
邏輯節點是用來聯合多個條件節點,以控制流程流向。
 
邏輯節點沒有業務相關特性的定義,它包括多個流入條件(即:條件節點)和一個任務節點(包括:終止節點、活動節點、事件節點、子流程節點、外部系統調用節點)。
 
邏輯節點包括三種類型:
 ?與(AND):定義邏輯與的關系
 ?或(OR):定義邏輯或的關系
 ?異或(XOR):定義邏輯異或的關系

 本文由用戶 cloudhou 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!