drools7 (四、FactHandle 介绍)
先看代码
Base.java
package cn.xiaojf.drools7.base; import org.apache.commons.lang3.StringUtils;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession; public class Base {
public KieSession getSession() {
KieServices kieServices = KieServices.Factory.get();
KieContainer kieContainer = kieServices.getKieClasspathContainer();
//kmodule.xml 中定义的 ksession name
KieSession kieSession = kieContainer.newKieSession("all-rules");
return kieSession;
} public KieSession getSession(String agendaGroupName) {
KieSession session = this.getSession();
if (StringUtils.isNoneBlank(agendaGroupName)) {
session.getAgenda().getAgendaGroup(agendaGroupName).setFocus();
} return session;
}
}
FaceHandleTest.java
package day20180123; import cn.xiaojf.drools7.base.Base;
import cn.xiaojf.drools7.model.Person;
import org.junit.Test;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.rule.FactHandle; import java.util.logging.Handler; /**
* 测试 Facehandler
* @author xiaojf 2018/1/23 21:35
*/
public class FaceHandleTest extends Base {
@Test
public void test() {
KieSession kieSession = super.getSession("faceHandleTest"); Person p = new Person();
p.setAge(); FactHandle faceHandle = kieSession.insert(p);
//触发rules
int count = kieSession.fireAllRules(); System.out.println(p.getName()); //在 work memory 中的对象描述信息
System.out.println(faceHandle.toExternalForm());
p.setAge(); //更新work memory 中的对象信息
kieSession.getAgenda().getAgendaGroup("faceHandleTest").setFocus();
kieSession.update(faceHandle,p);
kieSession.fireAllRules(); Person p2 = (Person) kieSession.getObject(faceHandle);
System.out.println(p2.getName());
//删除
//kieSession.delete(faceHandle);
} }
faceHandle.drl
package cn.xiaojf.rules import cn.xiaojf.drools7.model.Person
rule "faceHandleTest-less-20"
agenda-group "faceHandleTest"
when
$p : Person(age < )
then
$p.setName("less 20");
end rule "faceHandleTest-more-20"
agenda-group "faceHandleTest"
when
$p : Person(age > )
then
$p.setName("more 20");
end
结果
D:\soft\java\jdk1..0_91\bin\java -ea -Didea.test.cyclic.buffer.size= "-javaagent:D:\soft\JetBrains\IntelliJ IDEA 2017.2.1\lib\idea_rt.jar=9137:D:\soft\JetBrains\IntelliJ IDEA 2017.2.1\bin" -Dfile.encoding=UTF- -classpath "D:\soft\JetBrains\IntelliJ IDEA 2017.2.1\lib\idea_rt.jar;D:\soft\JetBrains\IntelliJ IDEA 2017.2.1\plugins\junit\lib\junit-rt.jar;D:\soft\JetBrains\IntelliJ IDEA 2017.2.1\plugins\junit\lib\junit5-rt.jar;D:\soft\java\jdk1.8.0_91\jre\lib\charsets.jar;D:\soft\java\jdk1.8.0_91\jre\lib\deploy.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\access-bridge-64.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\cldrdata.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\dnsns.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\jaccess.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\jfxrt.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\localedata.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\nashorn.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\sunec.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\sunjce_provider.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\sunmscapi.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\sunpkcs11.jar;D:\soft\java\jdk1.8.0_91\jre\lib\ext\zipfs.jar;D:\soft\java\jdk1.8.0_91\jre\lib\javaws.jar;D:\soft\java\jdk1.8.0_91\jre\lib\jce.jar;D:\soft\java\jdk1.8.0_91\jre\lib\jfr.jar;D:\soft\java\jdk1.8.0_91\jre\lib\jfxswt.jar;D:\soft\java\jdk1.8.0_91\jre\lib\jsse.jar;D:\soft\java\jdk1.8.0_91\jre\lib\management-agent.jar;D:\soft\java\jdk1.8.0_91\jre\lib\plugin.jar;D:\soft\java\jdk1.8.0_91\jre\lib\resources.jar;D:\soft\java\jdk1.8.0_91\jre\lib\rt.jar;E:\workspace\drools7-demo\target\test-classes;E:\workspace\drools7-demo\target\classes;E:\m2\repository\junit\junit\4.12\junit-4.12.jar;E:\m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;E:\m2\repository\org\kie\kie-api\7.5.0.Final\kie-api-7.5.0.Final.jar;E:\m2\repository\org\kie\soup\kie-soup-maven-support\7.5.0.Final\kie-soup-maven-support-7.5.0.Final.jar;E:\m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;E:\m2\repository\org\drools\drools-compiler\7.5.0.Final\drools-compiler-7.5.0.Final.jar;E:\m2\repository\org\kie\kie-internal\7.5.0.Final\kie-internal-7.5.0.Final.jar;E:\m2\repository\org\kie\soup\kie-soup-commons\7.5.0.Final\kie-soup-commons-7.5.0.Final.jar;E:\m2\repository\org\kie\soup\kie-soup-project-datamodel-commons\7.5.0.Final\kie-soup-project-datamodel-commons-7.5.0.Final.jar;E:\m2\repository\org\kie\soup\kie-soup-project-datamodel-api\7.5.0.Final\kie-soup-project-datamodel-api-7.5.0.Final.jar;E:\m2\repository\org\antlr\antlr-runtime\3.5.2\antlr-runtime-3.5.2.jar;E:\m2\repository\org\eclipse\jdt\core\compiler\ecj\4.4.2\ecj-4.4.2.jar;E:\m2\repository\org\mvel\mvel2\2.4.0.Final\mvel2-2.4.0.Final.jar;E:\m2\repository\com\thoughtworks\xstream\xstream\1.4.10\xstream-1.4.10.jar;E:\m2\repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar;E:\m2\repository\xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar;E:\m2\repository\com\google\protobuf\protobuf-java\2.6.0\protobuf-java-2.6.0.jar;E:\m2\repository\org\drools\drools-core\7.5.0.Final\drools-core-7.5.0.Final.jar;E:\m2\repository\commons-codec\commons-codec\1.10\commons-codec-1.10.jar;E:\m2\repository\org\apache\commons\commons-lang3\3.7\commons-lang3-3.7.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 day20180123.FaceHandleTest,test
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
more
:::::DEFAULT:NON_TRAIT:cn.xiaojf.drools7.model.Person
less Process finished with exit code
facehandler 相当于是work memory 中对象的句柄,通过facehandler 可以直接定位、修改、删除操作。
drools7 (四、FactHandle 介绍)的更多相关文章
- {python之协程}一 引子 二 协程介绍 三 Greenlet 四 Gevent介绍 五 Gevent之同步与异步 六 Gevent之应用举例一 七 Gevent之应用举例二
python之协程 阅读目录 一 引子 二 协程介绍 三 Greenlet 四 Gevent介绍 五 Gevent之同步与异步 六 Gevent之应用举例一 七 Gevent之应用举例二 一 引子 本 ...
- 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(四)-介绍库函数,获取一些SD卡的信息
其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...
- WPF入门教程系列四——Dispatcher介绍
一.Dispatcher介绍 微软在WPF引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还是WPF应用程序,实际上都是一个进程,一个进程可以 ...
- 《Python 学习手册4th》 第四章 介绍Python对象类型
''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容(每天看42页内容,可以保证月底看完此书) ''' ...
- cesium编程入门(四)界面介绍及小控件隐藏
感性认识 界面介绍,viewer Geocoder : 查找位置工具,查找到之后会将镜头对准找到的地址,默认使用bing地图 Home Button :视角返回初始位置. Scene Mode Pic ...
- 王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍
在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌 ...
- Day4 《机器学习》第四章学习笔记
决策树 前几天学习了<机器学习>的前三章,前三章介绍机器学习的基础知识,接下来,第四章到第十章介绍一些经典而常用的机器学习方法,这部分算是具体的应用篇,第四章介绍了一类机器学习方法——决策 ...
- python基础知识1---python相关介绍
阅读目录 一 编程与编程语言 二 编程语言分类 三 主流编程语言介绍 四 python介绍 五 安装python解释器 六 第一个python程序 七 变量 八 用户与程序交互 九 基本数据类型 十 ...
- web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}
前端之前端初识 前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...
随机推荐
- P4782 【模板】2-SAT 问题 && 2-SAT问题
2-SAT到图论 \(k-SAT\) 是 k-适应性问题(Satisfiability)的简称. \(k-SAT\) 问题(除 \(k = 2\))已被证明为是 \(NP\) 完全问题, 而对于 \( ...
- HDU 5985 概率
n种硬币各有cnt[i]枚,每轮下其有p[i]概率保留,问各种硬币只有它存活到最后一轮的概率. 设k轮后i硬币存活概率$a[i][k]=(1-p^k_i)^{cnt[i]}$ 则最后只有第i种硬币存活 ...
- iScroll使用方法
最基本的iScroll使用结构 <div id="wrapper"> <ul> <li></li> ..... </ul> ...
- 【Linux】SecureCRT连接Linux乱码
SecureCRT连接linux出现乱码问题.解决方法. 打开SecureCRT-->option-->Session option
- 20155226 2016-2017-2 《Java程序设计》第5周学习总结
20155226 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 语法与继承构架 我们之前接触到的C通常都是将程序流程和错误处理混在一起,在编写程序的时候必须 ...
- CVE-2017-12149JBoss 反序列化漏洞利用
CVE-2017-12149 漏洞描述 互联网爆出JBOSSApplication Server反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机 ...
- opencv的基本数据结构(二)(转)
转自:原文链接,以下代码.图片.内容有点改动,只为转载不降低博客内容的可阅性,版权归原作者所有. OpenCV中强大的Mat类型大家已经比较熟悉了.这里梳理一些在工程中其他经常用到的几种基本数据类型. ...
- CF264B Good Sequences
传送门 Description: 松鼠丽丝特别喜欢n个她称之为“好整数”的整数:a1,a2,……,an.(会输入) 现在,她对“好序列”很感兴趣.如果一个序列x1,x2,...,xk能够满足一下三个条 ...
- 如何开启一个Django项目
一:新建的Django工程 新建了一个Django工程后,工程会自动创建有两个templates文件夹和unitled文件夹,再加上一个manage.py文件. 二:Django开发的一般流程 在工程 ...
- 15、BigDecimal类简介
BigDecimal类概述 由于在运算的时候,float类型和double很容易丢失精度,在金融.银行等对数值精度要求非常高的领域里面,就不能使用float或double了,为了能精确的表示.计算浮点 ...