Alright... The test case was delivered with the following documentation
(extract of the "Drools JBoss Rules 5.0 Developer's Guide" book):
"org.drools.runtime.StatelessKnowledgeSession
This is a type of knowledge session that doesn't keep any state between
invocations (an invocation is a call of the execute method). From the
rules perspective, a stateless session is no different than a stateful
session---the rules look exactly the same. The benefit that
statelessness brings is that the rule engine can do more optimizations.
StatelessKnowledgeSession as well as stateful session support a command
interface (command design pattern). There is no need to dispose a
stateless session after it has been used."
Bruno.
Patrick van Kann a écrit :
I might be putting too simplistic an interpretation on this, but this
is what the Javadoc says for StatelessKnowledgeSession
"StatelessKnowledgeSession provides a convenience API, wrapping
StatefulKnowledgeSession. It avoids the need to call dispose().
Stateless sessions do not support iterative insertions and
fireAllRules from Java code, the act of calling execute(...) is a
single shot method that will internally instantiate a
StatefulKnowledgeSession, add all the user data and execute user
commands, call fireAllRules, and then call dispose()."
So I'm not sure why you just wouldn't just directly use a
StatefulKnowledgeSession instead of trying to re-use a stateless one.
You can then update the Facts via their handles and update or retract
and reinsert as needed.
Cheers,
Pat
On Tue, Oct 26, 2010 at 3:50 PM, Bruno Freudensprung
<bruno.freudensprung(a)temis.com <mailto:bruno.freudensprung@temis.com>>
wrote:
Hi,
According to what I've read so far, you can reuse Stateless sessions.
In particlar I've seen unit tests creating a Stateless session in a
@BeforeClass method, then this session was re-used across multiple
tests
methods "pushing" different data-sets into that unique session
instance
using commands (created with the org.drools.command.CommandFactory
class).
Regards,
Bruno.
espen a écrit :
> Hi,
>
> we have an application with a lot of rules in a cached rulebase.
When we
> profile our application we see that about 30% of the time is used in
> rulebase.newStatlessSession(). The time is basically used
loading classes.
>
> The question is, is it possible to create a pool of
StalessSessions and
> reuse them, or will this create problems.
>
> Regards
> Espen
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org <mailto:rules-users@lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/rules-users
------------------------------------------------------------------------
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users