在K2流程系統中,流程中的任何一個執行節點(一個節點可以包含多個事件)都可能包含用戶端事件,伺服器端事件,以及子流程(IPC,Inter Process Communication)事件,或者其他事件。通常情況下,我們需要在流程節點中包含大量的商務邏輯,比如:流程節點的執行者是誰?在執行者啟動流程節點任務之前哪些前提條件必須要滿足,等等。流程節點是流程中的關鍵元素,任務執行者在流程節點做出審批、輸入資料或者提取資料。
為了實現各種複雜的商務邏輯,K2提供了以下的商務規則:
1. Preceding Rule(前置規則)
Preceding Rule是一種邏輯運算式,當運算式為真時,一個流程節點才可以開始執行。換句話說:什麼條件為真的情況下,流程任務才可以產生。K2提供了And,Or和Xor等3種邏輯判斷符,能夠實現邏輯組合。
2. Start Rule(開始規則)
Start Rule是一個時間規則,代表一個流程任務什麼時候開始。比如,可以在流程發起後等待2小時再開始這個流程任務,或者當某個流程變數為真的情況下,再等待2小時開始流程任務。
3. Destination Rule(執行人規則)
用於指定誰來執行任務。預設情況下,K2的使用者資訊來自於Active Directory,因此,它可以非常方便地將任務提交給使用者的Manager。如果有多個可能的任務執行者,我們可以先把所有可能的執行者添加到Destination Rule中,然後對每個Rule設定條件,比如:當A為真,發送給Originator的Manager,當B為真,發送給GeneralManager;或者可以預先定義一個Destination Queue,把這個Destination Queue直接指定任務執行者。
4. Escalation Rule(到期規則)
如果希望某些任務必須在一定時間內完成,比如8小時,如果超過8小時任務依然沒有被執行,我們必須執行一定的操作(比如:強制本任務到期,或者強制本任務到期並且將流程流轉到某一個流程節點,等等),這樣的情形下,我們就可以定義任務的到期規則。到期規則用於指定什麼時候和如何執行這樣的操作。
5. Succeeding Rule(後置規則)
Succeeding Rule是一個邏輯運算式,當它為真時,某個流程節點才可以完成。換句話說就是:什麼情況下流程節點才可以結束。比如:有一個審批任務,需要同時發給5個部門經理作審批,我們希望:只要他們中的一個不同意,流程就執行下一步操作(否決後的操作);至少有3個部門經理同意,流程就流轉到下一步操作(同意後的操作)。這是K2一個非常好的規則,因為每個部門經理的審批意見都會儲存在各自的Slot中,流程中的變數值不會互相覆蓋,這樣就可以非常方便地查詢各個經理的審批意見,而不需要為每個經理都定義變數。K2提供了And,Or和Xor等3種邏輯判斷符,能夠實現邏輯組合。