2013-06-23 159 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