2013-06-23 156 views
0

我有一個包含100多條規則的.drl文件。規則「1」約40條規則,規則「2」約35條,其餘規則爲「3」。Drools中的嵌套規則

rule "1" 
    when 
     m: MyBeanClass(something1 == "train" && something2 == somevalue2) 
    then 
     m.setSomeThing(someOtherValue); 
     update(m); 
    end 

rule "2" 
    when 
     m: MyBeanClass(something1 == "bus" && something2 == somevalue2) 
    then 
     m.setSomeThing(someOtherValue); 
     update(m); 
    end 

rule "3" 
    when 
     m: MyBeanClass(something1 == "car" && something2 == somevalue2) 
    then 
     m.setSomeThing(someOtherValue); 
     update(m); 
    end 

在發射所有的規則,所有的規則將得到執行,我不想做。如果「something1」不等於「train」,那麼我希望執行流程直接進入第41條規則,這就像這裏的規則「2」。

請建議。

感謝, Shardul

回答

0

我不得不爲「汽車」,「公共汽車」,和「訓練」來設置一個價值的三大範圍規則,然後41統治了該範圍的值,並在其上運行。

您仍然必須編寫44條規則,但您不必爲每個範圍確定案例重複41條規則。

+0

謝謝@duffymo! 所以,你建議我應該在前40條規則中設置另一個變量,這樣如果「something1」不等於「train」,它將不會執行前40個。此外,我不確定什麼「範圍規則」的意思。 -Shardul – Shardul