假设我有一个像这样的drools文件,
rule "Test Rule 1"
salience 10
when
$data : Map( this["amount"] >= 1000 && this["quantity"] >=3 )
then
System.out.println("You've met the Criteria");
end
===========================================================================================
rule "Test Rule 2"
salience 9
when
$data : Map( this["amount"] >= 1000 )
then
System.out.println("Quantity Criteria is not met");
end
===========================================================================================
rule "Test Rule 3"
salience 8
when
$data : Map( this["quantity"] >= 3 )
then
System.out.println("Amount criteria is not met");
end
所有这些都将出现在单个.drl
文件中。与规则一样,规则的顺序将基于最高Salience数。我需要类似的东西,
1)如果满足Test Rule 1
,我不希望执行进一步的规则。
2)如果Test Rule 1
不满意,那么我不必担心,它只会按照最高显着性顺序执行其他规则。
是否有hideRule("Test Rule 2", "Test Rule 3")
或hideRules() - which should unexpose rules waiting to be executed
我知道我可以改变我的条件以符合我的标准,但我想知道Drools中unexpose
规则是否有任何选择?
答案 0 :(得分:0)
在drools.halt();
Test Rule 1
答案 1 :(得分:0)
激活组将解决此问题:
激活组是由相同的“激活组”规则属性绑定在一起的一组规则。在该组中,只有一个规则可以触发,并且在该规则触发后,所有其他规则都将从议程中删除。可以随时调用clear()方法,该方法会在有机会触发之前取消所有激活。
在每个规则中添加activation-group "groupName"
会产生预期的行为。