《Drools7.0.0.Final规则引擎教程》第4章 4.2 activation-group& dialect& date-effective
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:表示该规则不可用。
后语
你的支持是我努力的最大动力!社区的建立离不开你的支持。此系列课程正在持续更新中,相关讨论QQ(593177274)已经建立,欢迎大家加入讨论。如有疑问可以留言也可以发送本人邮箱secbro2@gmail.com。击此处关注Drools博客专栏的持续更新《Drools博客专栏》  
《Drools7.0.0.Final规则引擎教程》第4章 4.2 activation-group& dialect& date-effective的更多相关文章
- 《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规则引擎教程》第2章 追溯Drools5的使用
		
2.1 Drools5简述 上面已经提到Drools是通过规则编译.规则收集和规则的执行来实现具体功能的.Drools5提供了以下主要实现API: KnowledgeBuilder Knowledge ...
 - 【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 API解析
		
转载至:https://blog.csdn.net/wo541075754/article/details/75004575 3.2.4 KieServices 该接口提供了很多方法,可以通过这些方法 ...
 - 【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 ...
 - 《Drools7.0.0.Final规则引擎教程》第4章 4.2 agenda-group
		
agenda-group 规则的调用与执行是通过StatelessKieSession或KieSession来实现的,一般的顺序是创建一个StatelessKieSession或KieSession, ...
 - 《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
		
3.2.4 KieServices 该接口提供了很多方法,可以通过这些方法访问KIE关于构建和运行的相关对象,比如说可以获取KieContainer,利用KieContainer来访问KBase和KS ...
 - 《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
		
3.2.1 什么是KIE KIE(Knowledge Is Everything),知识就是一切的简称.JBoss一系列项目的总称,在<Drools使用概述>章节已经介绍了KIE包含的大部 ...
 - 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
		
转载至:https://blog.csdn.net/wo541075754/article/details/75150267 一个标准的规则文件的格式为已“.drl”结尾的文本文件,因此可以通过记事本 ...
 
随机推荐
- 解决 hybird 应用中重复获取 WebView,导致页面元素无法识别的问题
			
转载地址:http://blog.csdn.net/testman930/article/details/50799532 问题描述 在测APP的业务流,WebView和Native模式耦合在一起.例 ...
 - beego——模型定义
			
复杂的模型定义不是必须的,此功能用作数据库数据转换和自动建表 默认的表名规则,使用驼峰转蛇形: AuthUser -> auth_user Auth_User -> auth__user ...
 - Django框架之模板基础,静态文件配置
			
一.模板继承 目的是:减少代码的冗余 语法: {% block classinfo %} {% endblock %} 具体步骤: 1.创建一个base.html文件,2.把要显示的页面的内容写在这里 ...
 - SVN项目迁移到GIT
			
源项目为SVN项目, 复制一份出来后. 在VS里无法修改 源码管理器的插件为GIT. 解决方法: 删除SVN插件信息 在解决方案文件中. 删除以下SVN信息就可以了 删除后:
 - ceph存储安装配置
			
1.修改yum源: 1.安装yum源:sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://dl.fedor ...
 - 新建Maven项目时出错:org.apache.maven.archiver.MavenArchiver.getManifest
			
新建Maven项目时出错:org.apache.maven.archiver.MavenArchiver.getManifest eclipse新建maven项目时,pom.xml文件第一行报错: o ...
 - sqlserver索引的原理及索引建立的注意事项小结
			
聚集索引,数据实际上是按顺序存储的,数据页就在索引页上.就好像参考手册将所有主题按顺序编排一样.一旦找到了所要搜索的数据,就完成了这次搜索,对于非聚集索引,索引是安全独立于数据本身结构的,在索引中找到 ...
 - Python学习笔记之Python的enumerate函数
			
Python 的 enumerate() 函数就像是一个神秘的黑箱,你无法简单地用一句话来概括这个函数的作用与用法. enumerate() 函数属于非常有用的高级用法,而对于这一点,很多初学者甚至中 ...
 - os包方法
			
os包中实现了平台无关的接口,设计向Unix风格,但是错误处理是go风格,当os包使用时,如果失败之后返回错误类型而不是错误数量. os包中函数设计方式和Unix类似,下面来看一下. func Chd ...
 - 【bzoj5452】[Hnoi2016]大数(莫队)
			
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=4542 首先若p=2,5则这题就是道傻逼题,前缀和搞一下没了.如果p为其他质数,那么可以 ...