業務工作流引擎調度算法簡析(一)
在工作流系統中,系統調度是核心,調度算法的生效程度和成熟性直接決定了工作流系統的可用性。本文章描述工作流如何推進和回退,并且描述在分之、合并、跳轉等特殊情況下的流轉規則處理。
基本概念
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):定義邏輯異或的關系