先看代码

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. python 文件路径问题

    需要用到 os 模块和 sys 模块 import os print(__file__)# 输出相对路径 print(os.path.abspath(__file__)) #输出绝对路径 # D:\P ...

  2. VMware 安装Ubuntu16.04时显示不全的解决方法

    实际安装时发现进行到分区这个步骤时,看不到下面的按钮, 百度后得知有此遭遇的不在少数,是因为系统默认分辨率与电脑分辨率的差异导致的. 解决方法也很简单粗暴: 左手按住alt键右手鼠标往上拖动安装界面, ...

  3. 利用RAP搭建可视化接口管理平台

    环境:CentOS7 jdk:1.7.0_51 redis:3.2.8 mysql:5.6 tomcat:8.0 安装过程: 依赖组件安装: 安装jdk.redis.mysql.tomcat过程省略. ...

  4. python中的常用模块

    python中常用的模块 time: 1)time.localtime([secs]):将一个时间戳转换为当前时区的struct_time.secs参数未提供,则以当前时间为准. 2)time.gmt ...

  5. sql server查询数据库的大小和各数据表的大小

    查询出来的结果中各字段的详细说明参考MSDN资料:https://msdn.microsoft.com/zh-cn/library/ms188776.aspx 如果只是查询数据库的大小的话,直接使用以 ...

  6. grep与正则表达式详解和实例

    转载自:http://www.jb51.net/article/31207.htm grep 工具,以前介绍过. grep -[acinv] '搜索内容串' filename -a 以文本文件方式搜索 ...

  7. Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解

    源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用 ...

  8. Git Cannot rebase: You have unstaged changes.

    Cannot rebase: You have unstaged changes. 那说明你有修改过的文件git stashgit pull --rebase (每次push之前最好这样做一次)git ...

  9. sql 恢复数据库

    RESTORE DATABASE RoadFlowWebForm --数据库名称 FROM DISK = 'E:\WEBFORM2.5.1.bak' --bak文件路径 with replace, M ...

  10. 单调栈(G - Sliding Window POJ - 2823 )

    题目链接:https://cn.vjudge.net/contest/276251#problem/G 题目大意:给你n和m,然后问你对于(m,n)这中间的每一个数,(i-m+1,i)这个区间的最小值 ...