Drools学习笔记4—Consequence/RHS
- Right Hand Side,当LHS所有条件满足才会执行
- 可以使用LHS部分定义的绑定变量、全局变量、或者直接编写JAVA代码。
- 提供宏函数操作working memory fact对象,如insert/update/retract,使用会触发规则重新匹配
- 宏对象drools操作working memory,kcontext操作KnowledgeRuntime
modify块
- Modify表达式块,修改完后自动更新到workmemory中
- 语法
modify(fact-expression){
<修改Fact 属性的表达式>[,<修改Fact 属性的表达式>*]
}
package com.sample import com.bean.Customer;
import com.bean.Account; rule "modify"
when
$customer : Customer(name=="七夜雪" )
then
System.out.println( "modify Rule success and Customer is : " + $customer.getName() );
modify($customer){ //modify块,修改之后会重新触发规则执行
setName("碧落"); //直接使用修改fact属性的表达式
}
end rule "modify 1"
when
$customer : Customer(name=="碧落" )
then
System.out.println( "modify Rule success and Customer is : " + $customer.getName() );
end
/**
* modify块
* @throws Exception
*/
@Test
public void testModify() throws Exception {
KnowledgeBase kbase = readKnowledgeBase("modify.drl");
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
Customer customer = new Customer();
customer.setName("七夜雪");
ksession.insert(customer);
ksession.fireAllRules();
logger.close();
}
执行结果:

属性
用来控制规则执行:
- activation-group:具有相同的activation-group的规则,只有一个会被执行,可配合salience确定哪个规则被执行
- agenda-group:在执行fireAllRules之前,所有的规则以及fact都存在agenda中,agenda-group对agenda进行分组
- auto-focus:
- date-effective:规则生效时间,系统时间>=date-effective时触发,默认格式“dd-MMM-yyyy”,可通过System.setProperty("drools.dateformat", "yyyy-MM-dd");设置时间格式
- date-expires:规则失效时间,与date-effective相反,格式一致
- dialect:两种方言,java和mvel,默认为java
- duration:规则将在指定时间之后的另一个线程触发,时间单位毫秒
- enabled:规则是否可用,默认为true
- lock-on-active:增强版的no-loop,主要在使用ruleflow-group或agenda-group时使用,默认为false
- no-loop:控制已经执行的规则在条件满足的情况下,是否会再次执行,默认false,为true则只能执行一次
- ruleflow-group
- salience:规则优先级,值越大优先级越高,默认为0
date-effective、date-expires
Drools学习笔记4—Consequence/RHS的更多相关文章
- 开源规则引擎 Drools 学习笔记 之 -- 1 cannot be cast to org.drools.compiler.kie.builder.impl.InternalKieModule
直接进入正题 我们在使用开源规则引擎 Drools 的时候, 启动的时候可能会抛出如下异常: Caused by: java.lang.ClassCastException: cn.com.cheng ...
- Drools学习笔记-01-在eclipse indgo集成Drools5.5
1.1.条件 Drools它是一个基于Java开源规则引擎.因此,使用Drools以及前需要安装在开发机器JDK周边环境,Drools5.5需要JDK版本号的1.5或者更多. 1.2.开发环境搭建 大 ...
- Drools学习笔记
Drools是一款基于Java的开源规则引擎 实现了将业务决策从应用程序中分离出来. 优点: 1.简化系统架构,优化应用 2.提高系统的可维护性和维护成本 3.方便系统的整合 4.减少编写“硬代码”业 ...
- Drools学习笔记2—Conditions / LHS 匹配模式&条件元素
Rule的LHS由条件元素(Conditional Elements—CE)和匹配模式(Patterns)组成 Patterns被用来指示出fact的字段约束 每个约束必须为true才能让RHS的ac ...
- Drools学习笔记3—Conditions / LHS—字段约束连接&字段约束操作符
字段约束连接 用于字段约束 对象内部多个约束连接,采用“&&”(and).“||”(or)和“,”(and) 执行顺序:“&&”(and).“||”(or)和“,” 字 ...
- Drools学习笔记1—规则文件
Facts(即普通的POJO) 指普通业务对象插入到Workingmemory后的对象规则可以对fact对象进行任意的对象操作是规则与应用系统交换的桥梁返回FactHandler对象,是插入到Work ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- C++学习笔记——大杂烩
C++学习笔记--大杂烩 by方阳 版权声明:本文为博主原创文章,转载请指明转载地址 h ...
- JavaSE中线程与并行API框架学习笔记1——线程是什么?
前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位 ...
随机推荐
- java基础10(IO流)-字节流
IO流 输入与输出[参照物是程序] 如果从键盘.文件.网络甚至是另一个进程(程序或系统)将数据读入到程序或系统中,称为输入 如果是将程序或系统中的数据写到屏幕.硬件上的文件.网络上的另一端或者是一个进 ...
- HDFS的设计
当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(partition)并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统成为分布式文件系统(distribute ...
- hdu 1695 GCD 莫比乌斯
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 【转】ORACLE的数据类型
原文;http://linjian004.bokee.com/3916067.html 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 ...
- 本地磁盘文件夹共享到虚拟机上的linux系统中
1. 将本地的一个文件夹设置为共享文件 2.点击 虚拟机菜单中的 虚拟机->设置->选项->共享文件夹->总是启用->添加(将上一步骤设置的共享文件夹添加到里面) 3. ...
- 【NOIP2014 普及组】螺旋矩阵
[NOIP2014 普及组]螺旋矩阵 一.题目 [NOIP2014 普及组]螺旋矩阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 18 解决: 0 [提交][状态][讨论版] 题目描 ...
- SSIS之数据流任务
数据流任务主要用于运行数据流以提取.转换.加载源数据.一个包中可以有多个数据流任务,也可以包含零个数据流任务.下面关系图显示含有一个数据流任务的包: 了解数据流任务后,我们就简要的学习一下如何创建数据 ...
- mysql备份shell脚步
#!/bin/bash #Shell Command For Backup MySQL Database Everyday Automatically By Crontab USER=roo ...
- 关于一家大型互联网公司的.NET面试
上周去了一家大型的互联网公司去面试!四个面试官提的问题整理下!以后会注明答案! 1.关于垃圾回收的过程!GC的过程 其中包含:什么是根,Finalize与Dispose的区别,什么时候用到!IDisp ...
- Java_数据交换_JAXB_用法入门
一.前言 最近有个需求,需要进行xml 与 bean 的相互转化. 使用 JAXB 可完成这个需求. 二.概述 JAXB(Java Architecture for XML Binding) 是一个业 ...