Drools的一些属性
Drools中提供的属性如下表(部分属性):

接下来分别写一些demo介绍下这些属性的使用。
salience属性
salience属性用于指定规则的执行优先级,取值类型为Integer。数值越大越优先执行。每个规则都有一个默认的执行顺序,如果不设置salience属性,规则体的执行顺序为由上到下。
看下这个demo:
package testsalience
rule "rule_1"
salience 9
when
eval(true)
then
System.out.println("规则rule_1触发");
end
rule "rule_2"
salience 10
when
eval(true)
then
System.out.println("规则rule_2触发");
end
rule "rule_3"
salience 8
when
eval(true)
then
System.out.println("规则rule_3触发");
end
通过控制台可以看到,规则文件执行的顺序是按照我们设置的salience值由大到小顺序执行的。建议在编写规则时使用salience属性明确指定执行优先级。
dialect属性
dialect属性用于指定当前规则使用的语言类型,取值为java和mvel,默认值为java。
注:mvel是一种基于java语法的表达式语言。mvel像正则表达式一样,有直接支持集合、数组和字符串匹配的操作符。mvel还提供了用来配置和构造字符串的模板语言。mvel表达式内容包括属性表达式,布尔表达式,方法调用,变量赋值,函数定义等。
enabled属性
enabled属性对应的取值为true和false,默认值为true。
用于指定当前规则是否启用,如果设置的值为false则当前规则无论是否匹配成功都不会触发。
rule "rule_comparison_notMemberOf" //指定当前规则不可用,当前规则无论是否匹配成功都不会执行 enabled false when ComparisonOperatorEntity(names not memberOf list) then System.out.println("规则rule_comparison_notMemberOf触发"); end
no-loop属性
no-loop属性用于防止死循环,当规则通过update之类的函数修改了Fact对象时,可能使当前规则再次被激活从而导致死循环。取值类型为Boolean,默认值为false。
编写一个测试规则:
package testnoloop
import com.droo

本文介绍了Drools中的关键属性,如salience(优先级)、dialect(语言类型)、enabled(启用状态)、no-loop(防止死循环)、activation-group(激活分组)和agenda-group(议程分组),并通过示例展示了如何在实际项目中运用这些属性。
最低0.47元/天 解锁文章
1393

被折叠的 条评论
为什么被折叠?



