【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 activation-group& dialect& date-effective
转载至:https://blog.csdn.net/wo541075754/article/details/75511887
activation-group
该属性将若干个规则划分成一个组,统一命名。在执行的时候,具有相同activation-group 属性的规则中只要有一个被执行,其它的规则都不再执行。可以用类似salience之类属性来实现规则的执行优先级。该属性以前也被称为异或(Xor)组,但技术上并不是这样实现的,当提到此概念,知道是该属性即可。
实例代码:
package com.rules rule "test-activation-group1"
activation-group "foo"
when
then
System.out.println("test-activation-group1 被触发");
end rule "test-activation-group2"
activation-group "foo"
salience 1
when
then
System.out.println("test-activation-group2 被触发");
end
执行规则之后,打印结果
test-activation-group2 被触发
以上实例证明,同一activation-group优先级高的被执行,其他规则不会再被执行。
dialect
该属性用来定义规则(LHS、RHS)当中要使用的语言类型,可选值为“java”或“mvel”。默认情况下使用java语言。当在包级别指定方言时,这个属性可以在具体的规则中覆盖掉包级别的指定。
dialect "mvel"
date-effective
该属性是用来控制规则只有在到达指定时间后才会触发。在规则运行时,引擎会拿当前操作系统的时间与date-effective设置的时间值进行比对,只有当系统时间大于等于date-effective设置的时间值时,规则才会触发执行,否则执行将不执行。在没有设置该属性的情况下,规则随时可以触发。
date-effective的值为一个日期型的字符串,默认情况下,date-effective可接受的日期格式为“dd-MMM-yyyy”。例如2017 年7 月20 日,在设置为date-effective值时,如果操作系统为英文的,那么应该写成“20-Jul-2017”;如果是中文操作系统则为“20-七月-2017”。
目前在win10操作系统下验证,中文和英文格式均支持。而且在上面日期格式后面添加空格,添加其他字符并不影响前面日期的效果。
示例代码:
package com.rules rule "test-date"
// date-effective "20-七月-2017 aa"
// date-effective "20-七月-2017"
// date-effective "20-Jul-2017aaa"
date-effective "20-Jul-2017"
when
then
System.out.println("规则被执行");
end
值得注意的是以上注释掉的格式均能成功命中规则与后面的字符无关,因为默认时间格式只取字符串的指定位数进行格式化。
晋级用法:上面已经提到了,其实针对日期之后的时间是无效的。那么如果需要精确到时分秒改如何使用呢?可以通过设置drools的日期格式化来完成任意格式的时间设定,而不是使用默认的格式。在调用代码之前设置日期格式化格式:
System.setProperty("drools.dateformat", "yyyy-MM-dd HH:mm");
在规则文件中就可以按照上面设定的格式来传入日期:
date-effective "2017-07-20 16:31"
4.2.10 date-expires
此属性与date-effective的作用相反,用来设置规则的过期时间。时间格式可完全参考date-effective的时间格式。引擎在执行规则时会检查属性是否设置,如果设置则比较当前系统时间与设置时间,如果设置时间大于系统时间,则执行规则,否则不执行。实例代码同样参考date-effective。
4.2.11 duration
已废弃。设置该属性,规则将指定的时间之后在另外一个线程里触发。属性值为一个长整型,单位是毫秒。如果属性值设置为0,则标示立即执行,与未设置相同。
4.2.12 enabled
设置规则是否可用。true:表示该规则可用;false:表示该规则不可用。
【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 activation-group& dialect& date-effective的更多相关文章
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
转载至:https://blog.csdn.net/wo541075754/article/details/75150267 一个标准的规则文件的格式为已“.drl”结尾的文本文件,因此可以通过记事本 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
转载至:https://blog.csdn.net/wo541075754/article/details/76651073 RHS语法 使用说明 RHS是满足LHS条件之后进行后续处理部分的统称,该 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 no-loop
转载至:https://blog.csdn.net/wo541075754/article/details/75201934 no-loop 定义当前的规则是否不允许多次循环执行,默认是 false, ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 agenda-group
转载:https://blog.csdn.net/wo541075754/article/details/75332720 agenda-group 规则的调用与执行是通过StatelessKieSe ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
转载:https://blog.csdn.net/wo541075754/article/details/74943236 3.2.1 什么是KIE KIE(Knowledge Is Everythi ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 auto-focus
转载至:https://blog.csdn.net/wo541075754/article/details/75349556 auto-focus 在agenda-group章节,我们知道想要让Age ...
- 《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
2.1 Drools5简述 上面已经提到Drools是通过规则编译.规则收集和规则的执行来实现具体功能的.Drools5提供了以下主要实现API: KnowledgeBuilder Knowledge ...
- 《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载
在<Drools7.0.0.Final规则引擎教程>之Springboot集成中介绍了怎样将Drools与Springboot进行集成,本篇博客介绍一下集成之后,如何实现从数据库读取规则并 ...
- 《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
3.1 Hello World 实例 在上一章中介绍了Drools5x版本中规则引擎使用的实例,很明显在Drools7中KnowledgeBase类已经标注为"@Deprecated&quo ...
- 《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
一个标准的规则文件的格式为已".drl"结尾的文本文件,因此可以通过记事本工具进行编辑.规则放置于规则文件当中,一个规则文件可以放置多条规则.在规则文件当中也可以存放用户自定义的函 ...
随机推荐
- TestNG 101
最近看了点TestNG,做个入门笔记 0.Maven + TestNG 0a. 创建Maven 项目,pom中添加依赖(可能还需要安装TestNG插件 <dependencies> < ...
- Android Webview 和Javascript交互,实现Android和JavaScript相互调用
在Android的开发过程中.遇到一个新需求.那就是让Java代码和Javascript代码进行交互.在IOS中实现起来很麻烦.而在Android中相对来说容易多了.Android对这种交互进行了很好 ...
- 3 python 基本数据类型
1.python的基本数据类型 1.字符串 不可变数据类型 2.int //整除 %取余 bit_length() print(a.bit_length()) #打印某个数字类型的二进制长度 3.bo ...
- python-day15函数递归
1.递归: 在函数内,调用自己. (技巧: 每次调用时,函数前面需加上return,这样返回值就可以一层一层 的返回去) #def age(n):# if n == 1:# re ...
- python中的注意事项
.python 中的 and 从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值: or 也是从左到有计算表达式,返回第一个为真的值: 其中数字 0 是假,其他都是真: 字 ...
- CoderForce 148D-Bag of mice (概率DP求概率)
题目大意:美女与野兽在玩画鸽子的游戏.鸽子在用黑布遮住的笼子里,白色的有w只,黑色的有b只,每次拿出一只作画,谁先画到白色的鸽子谁就赢.美女首先画,因为野兽太丑,它每次画的时候都会吓跑一只鸽子,所有出 ...
- FZU 2124 吃豆人 bfs
题目链接:吃豆人 比赛的时候写的bfs,纠结要不要有vis数组设置已被访问,没有的话死循环,有的话就不一定是最优解了.[此时先到的不一定就是时间最短的.]于是换dfs,WA. 赛后写了个炒鸡聪明的df ...
- Using Fetch to rewrite JSON
截图如下: html代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...
- Python Threading多线程简单例子
业务监控,多线程例子,实现每类个监控项的不同监控间隔. #coding=utf-8import sysimport pymysqlimport osfrom prometheus_client imp ...
- C++设计模式之解释器模式
2013年07月06日 19:43:00 阅读数:8853 概述: 未来机器智能化已然成为趋势,现在手机都能听懂英语和普通话,那我大中华几万种方言的被智能化也许也是趋势,我们的方言虽然和普通话相似,但 ...