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

简介: 《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


目录
相关文章
|
算法 IDE Java
《Drools7.0.0.Final规则引擎教程》第1章 Drools简介
《Drools7.0.0.Final规则引擎教程》第1章 Drools简介
1302 0
|
Java 测试技术 API
《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
245 0
《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
|
Java API Maven
《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
319 0
《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
|
Java 应用服务中间件 API
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
250 0
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象
|
存储 Java API
《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载
《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载
472 0
《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载
|
Python
《Drools7.0.0.Final规则引擎教程》番外实例篇——Map使用案例
《Drools7.0.0.Final规则引擎教程》番外实例篇——Map使用案例
377 0
《Drools7.0.0.Final规则引擎教程》番外实例篇——相同对象and List使用
《Drools7.0.0.Final规则引擎教程》番外实例篇——相同对象and List使用
320 0
《Drools7.0.0.Final规则引擎教程》番外实例篇——默认条件的陷阱
《Drools7.0.0.Final规则引擎教程》番外实例篇——默认条件的陷阱
157 0
《Drools7.0.0.Final规则引擎教程》番外篇之ruleflow-group合并
《Drools7.0.0.Final规则引擎教程》番外篇之ruleflow-group合并
257 0
|
API
《Drools7.0.0.Final规则引擎教程》第5章 session使用说明
《Drools7.0.0.Final规则引擎教程》第5章 session使用说明
449 0