首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Drools7.0.0.Final规则引擎教程》番外实例篇——FactHandler使用案例

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

作者头像
程序新视界
发布2018-01-08 14:58:21
9330
发布2018-01-08 14:58:21
举报
文章被收录于专栏:丑胖侠丑胖侠

背景

在使用具体的业务使用中,我们经常会通代码对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的系列教程也在筹划中,希望大家多多支持。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 实例代码
  • 后语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档