《Drools7.0.0.Final规则引擎教程》第5章 session使用说明

简介: 《Drools7.0.0.Final规则引擎教程》第5章 session使用说明

KieSession是用来与规则引擎进行交互的会话。在Drools 7当中分有状态的session和无状态的session:KieSession和StatelessKieSession。


有状态session

通过KieContainer可以获取KieSession,在kmodule.xml配置文件中如果不指定ksession的type默认也是有状态的session。有状态session的特性是,我们可以通过建立一次session完成多次与规则引擎之间的交互,在没有调用dispose方法时,会维持会话状态。使用KieSession的一般步骤为,获取session,insert Fact对象,然后调用fireAllRules进行规则匹配,随后调用dispose方法关闭session。


无状态session

StatelessKieSession提供了一个更加便利的API,是对KisSession的封装,不再调用dispose方法进行session的关闭。它隔离了每次与规则引擎的交互,不会再去维护会话的状态。同时也不再提供fireAllRules方法。

使用场景:

(1)数据校验

(2)运算

(3)数据过滤

(4)消息路由

(5)任何能被描述成函数或公式的规则


具体示例:

规则代码:


package com.stateless
import com.secbro.drools.model.Person
rule "test-stateless"
when
    $p : Person()
then
    System.out.println($p.getAge());
 end

测试代码:

public void testStateLessSession(){
        StatelessKieSession kieSession = this.getStatelessKieSession();
        List<Person> list = new ArrayList<>();
        Person p = new Person();
        p.setAge(35);
        list.add(p);
        Person p1 = new Person();
        p1.setAge(20);
        list.add(p1);
//        kieSession.execute(p);
        kieSession.execute(list);
}
protected StatelessKieSession getStatelessKieSession(){
        KieServices kieServices = KieServices.get();
        KieContainer kieContainer = kieServices.getKieClasspathContainer();
        StatelessKieSession kieSession = kieContainer.newStatelessKieSession("stateless-rules");
        return kieSession;
    }
    protected StatelessKieSession getStatelessKieSession(String agendaGroupName){
        StatelessKieSession kieSession  = getStatelessKieSession();
        return kieSession;
    }
目录
相关文章
|
算法 IDE Java
《Drools7.0.0.Final规则引擎教程》第1章 Drools简介
《Drools7.0.0.Final规则引擎教程》第1章 Drools简介
1122 0
|
缓存 Java 测试技术
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
374 0
《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE API解析
《Drools7.0.0.Final规则引擎教程》第4章 Query查询之基础
《Drools7.0.0.Final规则引擎教程》第4章 Query查询之基础
185 0
|
Java
《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
183 0
《Drools7.0.0.Final规则引擎教程》第4章 4.2 agenda-group
《Drools7.0.0.Final规则引擎教程》第4章 4.2 agenda-group
148 0
《Drools7.0.0.Final规则引擎教程》番外实例篇——FactHandler使用案例
《Drools7.0.0.Final规则引擎教程》番外实例篇——FactHandler使用案例
134 0
|
Python
《Drools7.0.0.Final规则引擎教程》番外实例篇——Map使用案例
《Drools7.0.0.Final规则引擎教程》番外实例篇——Map使用案例
305 0
《Drools7.0.0.Final规则引擎教程》番外实例篇——相同对象and List使用
《Drools7.0.0.Final规则引擎教程》番外实例篇——相同对象and List使用
276 0
|
Java 测试技术 API
《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
194 0
《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
|
Java
《Drools7.0.0.Final规则引擎教程》第4章 4.6 结果条件
《Drools7.0.0.Final规则引擎教程》第4章 4.6 结果条件
158 0