2017-07-17 89 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重載形式,並解釋了兩種形式發生了什麼。