運行(xíng)模式

​ 規則集在默認模式下會(huì)把當前文件中所有(yǒu)所有(yǒu)規則編譯成一棵規則樹(shù),根據輸入對象先進行(xíng)條件匹配計(jì)算(suàn),計(jì)算(suàn)好後再根據規則設定的優先級來(lái)執行(xíng)所有(yǒu)匹配規則的動作(zuò)部分。

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

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

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

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

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

注意:對于循環規則裏的若幹個(gè)循環單元在運行(xíng)時(shí),還(hái)是會(huì)采用默認模式運行(xíng)機制(zhì)運行(xíng),而不會(huì)去理(lǐ)會(huì)規則文件層面運行(xíng)模式是什麽。

results matching ""

    No results matching ""