Drools6.4版本关于session的不同方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013115157/article/details/64923075

Drools6.4版本关于session的不同方法

小编为什么会要将session独立出来一个章节呢,这是有原因的,我们在开发过程会遇到各种情况,这个session的状态是很重要的,也会在开发中经常使用。

KieSession用于与规则引擎进行交互的会话。

会话分为两类:

l  有状态的 KieSession

l  无状态的 StatelessKieSession

KieSession  有状态的

KieSession 会在多次与规则引擎进行交互中,维护会话的状态。

定义KieSession,在kmodule.xml文件中定义 type 为stateful的 session:

<ksessionname="stateful_session"type="stateful"></ksession> 

注意:stateful 是 type 属性的默认值。

获取 KieSession实例

KieSessionstatefulSession =kieContainer.newKieSession("stateful_session"); 

接下来,可以在 KieSession执行一些操作。最后,如果需要清理KieSession维护的状态,调用 dispose()方法。

StatelessKIESession

与 KieSession相反,StatelessKIESession 隔离了每次与规则引擎的交互,不会维护会话的状态。

如果将 session 比作编程语言中的函数,StatelessKIESession 就是无副作用的函数。

StatelessKIESession适用场景:

    数据校验

    运算

    数据过滤

    消息路由

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

定义StatelessKIESession,在kmodule.xml文件中定义type为stateless的 session:

<ksessionname="stateless_session"type="stateless"></ksession>

如果我们想要用无状态的kie-session的话就必须这样定义了。

获取StatelessKIESession 实例:

StatelessKieSession statelessKieSession = kieContainer.newStatelessKieSession("stateless_session");  
//通过 KieServices 获取 command 工厂类 KieCommands:
KieCommands commandFactory = kieServices.getCommands();  
//可以使用工程类 KieCommands 调用 newXXXCommand 开头的方法创建 command 实例。
//会话执行 command:
statelessKieSession.execute(command);
//----------------------- 分隔线-----------------------
[source code]  调用的是该接口 
public interface StatelessRuleSession {
    void execute(java.lang.Object o);
    void execute(java.lang.Iterable iterable);
}
StatelessKnowledgeSessionImpl 实现类
	public void execute(Object object) {
        StatefulKnowledgeSession ksession = newWorkingMemory();
        try {
            ksession.insert( object );
            ksession.fireAllRules();
        } finally {
            dispose(ksession);
        }
 }

从代码中我们可以看出来,也是通过finally中的dispose方法来删除的,只是与kieSession方式不同。

下面是小编的微信转帐二维码,小编再次谢谢读者的支持,小编会更努力的

----请看下方↓↓↓↓↓↓↓

百度搜索 Drools从入门到精通:可下载开源全套Drools教程

深度Drools教程不段更新中:


更多Drools实战陆续发布中………

扫描下方二维码关注公众号 ↓↓↓↓↓↓↓↓↓↓



猜你喜欢

转载自blog.csdn.net/u013115157/article/details/64923075
今日推荐