《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;
    }

后语

此系列课程持续更新中,QQ群:593177274(可扫描左上侧栏目二维码),欢迎大家加入讨论。点击链接关注《Drools博客专栏》 。目前国内第一套关于Drools(7)的入门教程《Drools 7 规则引擎入门教程》正在火热录制中,其他更多关于Drools的系列教程也在筹划中,希望大家多多支持。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序新视界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值