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的使用方法可在此示例上进行扩展延伸。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值