《Drools7.0.0.Final规则引擎教程》番外实例篇——FactHandler使用案例

背景

在使用具体的业务使用中,我们经常会通代码对Fact对象进行操作,Drools为我们提供了FactHandler来获取对象的句柄,通过此返回值可以对WorkingMemory中Fact对象进行操作。

实例代码

规则文件内容:

package com.rules
import com.secbro.drools.model.Person

rule "fact-handler-test"
    agenda-group "fact-handler-group"
    when
        $p : Person(age > 80)
    then
        System.out.println($p.getAge());
     end

调用测试方法:

@Test
    public void testFactHandler(){
        KieSession kieSession = this.getKieSession("fact-handler-group");

        Person p = new Person();
        p.setAge(81);

        FactHandle handle = kieSession.insert(p);

        System.out.println(handle.toExternalForm());

        int count = kieSession.fireAllRules();
        System.out.println("Fires " + count + " rules!");

        p.setAge(90);
        kieSession.getAgenda().getAgendaGroup("fact-handler-group").setFocus();
        kieSession.update(handle,p);

        count =  kieSession.fireAllRules();

        System.out.println("Fires " + count + " rules!");
        kieSession.dispose();
    }

上面的实例中,首先通过FactHandler获取WM中Person对象的具体信息。后面又通过FactHandler对WM中Fact对象进行修改,并重新调用规则。

由于代码中使用的是agenda group,因此重新设置获取焦点。如果未使用此中形式则可不用写此行代码。其他相关FactHandler的使用方法可在此示例上进行扩展延伸。

相关代码以上传至github:https://github.com/secbr/drools

后语

此系列课程持续更新中,QQ群:593177274,欢迎大家加入讨论 。目前国内第一套关于Drools(7)的入门教程《Drools 7 规则引擎入门教程》正在火热录制中,其他更多关于Drools的系列教程也在筹划中,希望大家多多支持。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GuZhenYin

[干货来袭]C#6.0新特性

微软昨天发布了新的VS 2015 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下也是昨...

20680
来自专栏跟着阿笨一起玩NET

DateTime.TryParseExact 万能时间格式转化

本文转载:http://blog.csdn.net/gaofang2009/article/details/6073231

27010
来自专栏Kiba518

C#线程安全使用(四)

这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来。

9730
来自专栏飞扬的花生

C#中返回值封装

      在平时开发过程中常常需要取一个方法的返回值,BOSS写了一个返回值类,做个练习以备不时之需: 返回值支持泛型和非泛型 先贴上代码: 非泛型返回值类:...

287100
来自专栏hbbliyong

C#基础知识回顾-- 反射(4)

从程序集获得类型   先说点题外话,现在技术真的发展太快了。我这边还很多东西半生不熟 呢,那边又出现了好多有趣的新东西让你眼红不已。学还是不学这还真是 个问题。...

29660
来自专栏技术博客

C#函数方法集

1、DateTime 数字型 System.DateTime currentTime=new System.DateTime();

15020
来自专栏GreenLeaves

C# 委托进阶

本文参考自:https://wenku.baidu.com/view/41ab91d3c1c708a1284a44d7.html?qq-pf-to=pcqq.c...

22460
来自专栏跟着阿笨一起玩NET

C#快速剔除字符串中不合法的文件名或者文件路径字符

21340
来自专栏菩提树下的杨过

c#:使用using关键字自动释放资源未必一定就会有明显好处

记录这篇文章的灵感来源来自今天下班前与同事的小小争论,我现在开发的一个项目中,有这样一段代码: public string ToXML() { ...

23180
来自专栏技术之路

wpf listBox 多列大图片效果

修改ListBox的模版 多列大图片效果,加上删除button 看图 ? 上代码! <Window x:Class="Thunder.SetCenter.Roo...

53870

扫码关注云+社区

领取腾讯云代金券