规则引擎Drools (4)

本文介绍了Drools规则引擎的常用属性,包括enable、dialect、salience、no-loop、activation-group、agenda-group、auto-focus、timer、date-effective和date-expires,详细解析了这些属性的作用和用法,帮助理解如何控制规则的执行行为。

规则属性(attributes)

参考b站黑马博学谷Drools视频,侵权请联系删除

规则属性位于规则体的rulename和when之间。常用的有:
在这里插入图片描述

(1)enable属性

enabled属性对应的取值为true和false,默认值为true。用于指定当前规则是否启用,如果设置的值为false则当前规则无论是否匹配成功都不会触发。 如:
在这里插入图片描述

(2)dialect属性

dialec1t属性用于指定当前规则使用的语言类型,取值为java和mvel,默认值为java。
注: mvel是一种基于java语法的表达式语言。mvel像正则表达式一样,有直接支持集合、数组和字符串匹配的操作符。mvel还提供了用来配置和构造字符串的模板语言。mvel表达式内容包括属性表达式,布尔表达式,方法调用,变量赋值,函数定义等。

(3)salience属性

salience属性用于指定规则的执行优先级,取值类型为Integer,数值越大越优先执行。每个规则都有一个默认的执行顺序,如果不设置salience属性,规则体的执行顺序为由上到下。

(4)no-loop属性

no-loop属性取值类型为Boolean,默认值为false。用于防止死循环,当规则通过update之类的函数修改了Fact对象时,可能使当前规则再次被激活从而导致死循环。例如下面的情况就会导致死循环:
在这里插入图片描述
可通过no-loop true防止死循环。
在这里插入图片描述

(5) activation-group属性

activation-group属性是指激活分组,具有相同分组名称的规则只能有一个规则被触发,取值为String类型。例如:
在这里插入图片描述
上面的两个规则因为属于同一个分组,所以只有一个触发了。同一个分组中的多个规则如果都能够匹配成功,具体哪一个最终能够被触发可以通过salience属性确定。

(6) agenda-group属性

agenda-group属性为议程分组,属于另一种可控的规则执行方式。用户可以通过设置agenda-group来控制规则的执行,只有获取焦点的组中的规则才会被触发。可以通过java代码让指定组获得焦点:
在这里插入图片描述

(7) auto-focus属性

auto-focus属性为自动获取焦点,取值类型为Boolean,默认值为false,一般结合agenda-group属性使用,当一个议程分组未获取焦点时,可以设置auto-focus属性为true来控制。

(8) timer属性

timer属性可以通过定时器的方式指定规则执行的时间,使用方式有两种:

  • 方式一: timer (int: <initial delay> <repeat interval>?)此种方式遵循java.util.Timer对象的使用方式,第一个参数表示几秒后执行,第二个参数表示每隔几秒执行一次,第二个参数为可选。
    在这里插入图片描述
  • 方式二: timer(cron: <cron expression>)此种方式使用标准的unix cron表达式的使用方式来定义规则执行的时间。
    在这里插入图片描述

(9) date-effective属性

date-effective属性用于指定规则的生效时间,即只有当前系统时间大于等于设置的时间或者日期规则才有可能触发。默认日期格式为: dd-MMM-yyy。用户也可以自定义日期格式。
在这里插入图片描述
在代码中设置drools的日期格式:
在这里插入图片描述

(10) date-expires属性

date-expires属性用于指定规则的失效时间,即只有当前系统时间小于设置的时间或者日期规则才有可能触发。与date-effective属性类似,默认日期格式为: dd-MMM-yyyy。用户也可以自定义日期格式。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值