運行模式

​ 規則集在默認模式下會把當前文(wén)件中(zhōng)所有(yǒu)所有(yǒu)規則編譯成一棵規則樹,根據輸入對象先進行條件匹配計算,計算好後再根據規則設定的優先級來執行所有(yǒu)匹配規則的動作(zuò)部分(fēn)。

​ 如果存在兩個規則A、B,A規則的優先級高于B,A規則根據輸入默認對象屬性值條件可(kě)以滿足,而B規則根據輸入對象條件不滿足,這時執行A規則動作(zuò)部分(fēn),在動作(zuò)中(zhōng)将輸入對象某屬性改為(wèi)另外一個值,經過這個修改,B規則此時條件滿足了,但在默認模式下,所有(yǒu)規則的條件匹配動作(zuò)已經完成了,所以在A規則的動作(zuò)部分(fēn)将輸入對象某屬性改為(wèi)B規則滿足的值後,B規則也不會嘗試重新(xīn)匹配條件以執行B規則條件滿足後的動作(zuò)部分(fēn)。

​ 要實現這一功能(néng),我們可(kě)以在A規則條件滿足後的修改輸入對象某屬性值的動作(zuò)後使用(yòng)“執行組”屬性也能(néng)達到這一的目的,也就是給B規則添加一個“執行組”屬性,在A規則條件滿足後的修改輸入對象某屬性值的動作(zuò)後加上激活B規則對應的執行組。

​ 可(kě)以看到,在默認模式下,對于存在大量相互依賴的向導式規則來說,上述兩種方式用(yòng)起來還是很(hěn)麻煩的。要想用(yòng)一種簡單且容易理(lǐ)解的方式實現上述功能(néng),可(kě)以規則運行模式由默認模式改為(wèi)順序模式。 ​ 通過向導式規則集的工(gōng)具(jù)欄配置菜單按鈕下的運行模式菜單項,即可(kě)實現将默認模式修改為(wèi)順序模式,如下图所示:

​ 在順序模式下,當前規則集裏的所有(yǒu)規則将不會被編譯成一整棵規則樹,而是每個規則都會獨立的編譯成一個規則樹,運行的時候,會根據規則定義的優先級屬性依次運行這些規則,這樣,對于存在上述邏輯情況的業務(wù)來說,我們隻需要修改運行模式為(wèi)“順序模式”,同時為(wèi)各個規則定義好優先級,那麽它們就會逐個執行,優先級較高的規則先執行,執行後的動作(zuò)部分(fēn)如果存在對業務(wù)數據的修改,就會直接影響到後面規則條件的匹配,不再需要使用(yòng)“執行組”屬性對規則執行順序進行編排,這樣可(kě)以大大簡化業務(wù)規則定義的複雜度。

需要指出的是“順序模式”下,因為(wèi)規則是一條條匹配,所以性能(néng)上相比“默認模式”要差一些,如沒有(yǒu)特殊需要不建議采用(yòng)“順序模式”。

注意:對于循環規則裏的若幹個循環單元在運行時,還是會采用(yòng)默認模式運行機制運行,而不會去理(lǐ)會規則文(wén)件層面運行模式是什麽。

results matching ""

    No results matching ""