先看代码

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 介绍)的更多相关文章

  1. {python之协程}一 引子 二 协程介绍 三 Greenlet 四 Gevent介绍 五 Gevent之同步与异步 六 Gevent之应用举例一 七 Gevent之应用举例二

    python之协程 阅读目录 一 引子 二 协程介绍 三 Greenlet 四 Gevent介绍 五 Gevent之同步与异步 六 Gevent之应用举例一 七 Gevent之应用举例二 一 引子 本 ...

  2. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(四)-介绍库函数,获取一些SD卡的信息

    其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...

  3. WPF入门教程系列四——Dispatcher介绍

    一.Dispatcher介绍 微软在WPF引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还是WPF应用程序,实际上都是一个进程,一个进程可以 ...

  4. 《Python 学习手册4th》 第四章 介绍Python对象类型

    ''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容(每天看42页内容,可以保证月底看完此书) ''' ...

  5. cesium编程入门(四)界面介绍及小控件隐藏

    感性认识 界面介绍,viewer Geocoder : 查找位置工具,查找到之后会将镜头对准找到的地址,默认使用bing地图 Home Button :视角返回初始位置. Scene Mode Pic ...

  6. 王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍

    在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌 ...

  7. Day4 《机器学习》第四章学习笔记

    决策树 前几天学习了<机器学习>的前三章,前三章介绍机器学习的基础知识,接下来,第四章到第十章介绍一些经典而常用的机器学习方法,这部分算是具体的应用篇,第四章介绍了一类机器学习方法——决策 ...

  8. python基础知识1---python相关介绍

    阅读目录 一 编程与编程语言 二 编程语言分类 三 主流编程语言介绍 四 python介绍 五 安装python解释器 六 第一个python程序 七 变量 八 用户与程序交互 九 基本数据类型 十 ...

  9. web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}

    前端之前端初识   前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...

随机推荐

  1. 彻底搞懂 SQLAlchemy中的 backref

    教程源码截取: class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True) name = Colum ...

  2. day9 类、对象、包

    结构化编程中,程序围绕要解决的问题来设计. 面向对象编程,围绕要解决问题的对象来设计. 万物皆对象,对象因关注而产生!!! 类——抽取具有相同属性和行为的对象. 属性就是对象身上的值数据,行为就是对象 ...

  3. Mac下Clang编译libcurl

    使用终端进入curl的根目录下,执行 ./configre CC=clang make make install 之后前往/usr/local/lib下生成了libcurl.a和相应的动态库,头文件在 ...

  4. C#委托Code

    class Program { delegate double ProcessDelegate(double param1, double param2); static double Multipl ...

  5. IntelliJ IDEA编码格式设置

    之前一直使用eclipse能够熟悉的设置工程和文件的编码格式,现在换成IntelliJ IDEA设置编码格式的地方有点变化,按照如图所示进行设置: 这里要将Transparent native-to- ...

  6. Rolling in the Deep (Learning)

    Rolling in the Deep (Learning) Deep Learning has been getting a lot of press lately, and is one of t ...

  7. Redis学习四:解析配置文件 redis.conf

    一.它在哪 地址: 思考:为什么要将它拷贝出来单独执行? 二.Units单位 1 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit 2 对大小写不敏感 三.INCLUDES包 ...

  8. 20155301 2016-2017-2 《Java程序设计》第5周学习总结

    20155301 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 1.1try.catch关键词,在用户不小心输入错误的时候,程序会出现错误信息,将代表错误的 ...

  9. HDU 2102 A计划 (深搜)

    题目链接 Problem Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主 ...

  10. 关于Java的“找不到或无法加载主类”

    Java编程思想4th第六章的关于访问权限和包的笔记总结时遇到了一个关于package命名及导入的问题. 环境:Ubuntu 16.04.3 LTS x86_64 首先,我要安装部署Java的开发环境 ...