2017-07-17 92 views
1

我想在kieSession中插入一个列表作为事实。下面两种方法的区别是什么?插入一个列表作为事实在statelessKieSession中drools

方法一:

StatelessKieSession kieSession1 = kieBase.newStatelessKieSession(); 
      kieSession1.execute(List); 

方法2:

StatefulKnowledgeSession kieSession = (StatefulKnowledgeSession) kieBase.newKieSession(); 
kieSession.insert(List); 
      kieSession.fireAllRules(); 

我能够迭代形式发来的有状态会话的DRL内的参数列表中,但我不能够做到这一点在无国籍的会议。任何人都可以告诉两个会话如何处理作为事实传递的列表?

+0

你读过'execute(Iterable x)'和'insert(Object y)''的javadocs吗? – laune

+0

是的..执行插入所有的对象,然后调用fireAllRules ..但我想使用drl里面的列表,并迭代drl中的对象..我怎样才能做到无状态会话? –

回答

0
StatelessKieSession kieSession1 = kieBase.newStatelessKieSession(); 
kieSession1.execute((Object)aList); 

Drools的API的Javadoc文档两者execute重载形式,并解释了两种形式发生了什么。