<font size=2 face="sans-serif">I would suggest making your service stateless
and run the service in multiple JVMs to alleviate performance concerns.
You will be able to scale and also not have to worry about cramming everything
into a StatefulKnowledgeSession and worry abt thead-safety.</font>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">Stephen Lomax &lt;stephen.lomax@mattelli.com&gt;</font>
<br><font size=1 color=#5f5f5f face="sans-serif">To: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">Rules Users List &lt;rules-users@lists.jboss.org&gt;,
</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">05/02/2012 04:28 AM</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject: &nbsp; &nbsp;
&nbsp; &nbsp;</font><font size=1 face="sans-serif">Re: [rules-users]
Query for a fact, and concurrent rule execution</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Sent by: &nbsp; &nbsp;
&nbsp; &nbsp;</font><font size=1 face="sans-serif">rules-users-bounces@lists.jboss.org</font>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>Hi Mike,</font>
<br>
<br><font size=3>Many thanks for that..we had previously thought of serialising
to file but thought the purpose of the StatefulKnowledgeSession was to
keep it live in memory continuously, rather than instantiating a new session
with each web service call.</font>
<br>
<br>
<br><font size=3>My concern is that if we instantiate a new session with
each web service call the memory required will increase massively (if we
have many concurrent requests). &nbsp;Is there a way of serving multiple
concurrent requests against the same session to remove that concern.</font>
<br>
<br><font size=3>Many thanks for your help with this..it is very much appreciated.</font>
<br>
<br><font size=3>Ste</font>
<br>
<br>
<br><font size=3>.</font>
<br><font size=3>On 2 May 2012, at 12:08, Michael Anstis wrote:</font>
<br>
<br><font size=3>That's a possibility, but it'd depend on your rules.<br>
<br>
As a thought, you could serialise the initialised StatelessKnowledgeSession
into a byte[] (cached at application scope) and deserialise with each web-service
call.<br>
<br>
I would wait to see if Mark Proctor, Edson Tirelli or community members
have other thoughts on use of a single StatefulKnowledgeSession.<br>
<br>
IIRC it is meant to be thread-safe but think people have reported problems
in the past. Recently: </font><a href="http://lists.jboss.org/pipermail/rules-dev/2012-February/003857.html"><font size=3 color=blue><u>http://lists.jboss.org/pipermail/rules-dev/2012-February/003857.html</u></font></a><font size=3><br>
<br>
With kind regards,<br>
<br>
Mike<br>
</font>
<br><font size=3>On 2 May 2012 11:58, Stephen Lomax &lt;</font><a href=mailto:stephen.lomax@mattelli.com target=_blank><font size=3 color=blue><u>stephen.lomax@mattelli.com</u></font></a><font size=3>&gt;
wrote:</font>
<br><font size=3>Hi Mike,</font>
<br>
<br><font size=3>Each quote does not enrich the session, we were actively
looking to remove the quote at the end of the session to prevent it growing
as we were just comparing the quote to the core product attribute facts.</font>
<br>
<br><font size=3>What is the performance hit in launching a Stateful knowledge
session with say 10,000 facts, would it make the web service call slow?</font>
<br>
<br><font size=3>Thanks very much for the help on the query also…we will
look into that.</font>
<br>
<br><font size=3>Kind Regards</font>
<br>
<br><font size=3>Ste</font>
<br>
<br><font size=3>On 2 May 2012, at 11:31, Michael Anstis wrote:</font>
<br>
<br><font size=3>Does each quote validation exercise enrich the StatefulKnowledgeSession
with other facts that could influence validation of other quotes?<br>
<br>
If not probably using a StatefulKnowledgeSession per HTTP request might
be more simple (with the KnowledgeBase as an application scoped variable).<br>
<br>
Regarding retrieval of results, there are a couple of options that spring
to mind:-</font>
<ul>
<li><font size=3>Look at using a Global to collate results.</font>
<li><font size=3>Look at using a Query (</font><a href="http://stackoverflow.com/questions/5872215/how-do-i-add-facts-to-working-memory-at-runtime-in-the-drools-drl-and-retrieve-t" target=_blank><font size=3 color=blue><u>http://stackoverflow.com/questions/5872215/how-do-i-add-facts-to-working-memory-at-runtime-in-the-drools-drl-and-retrieve-t</u></font></a><font size=3>)</font></ul><font size=3>With
kind regards,<br>
<br>
Mike<br>
</font>
<br><font size=3>On 2 May 2012 10:39, stelomax &lt;</font><a href=mailto:stephen.lomax@mattelli.com target=_blank><font size=3 color=blue><u>stephen.lomax@mattelli.com</u></font></a><font size=3>&gt;
wrote:</font>
<br><font size=3>Hi,<br>
<br>
Please bear with me, I am relatively new to the world of Drools and have
a<br>
question. &nbsp;I am hoping it will be a simple issue.<br>
<br>
First let me frame my planned implementation at a high level. &nbsp;I am
hoping<br>
to use Drools as a real time service enabled quote validation tool.<br>
<br>
Facts representing products and attributes will be loaded into a stateful<br>
knowledge session upon boot (using a piece of Java that loads these as
facts<br>
from our product DB).<br>
<br>
The front-end application will allow users to build up quotes consisting
of<br>
quote lines that make references to these products. &nbsp;Once the quote
is built<br>
they will press a &quot;Validate&quot; button. &nbsp;This will call a webservice
that will:<br>
<br>
1) Insert the quote details as facts into the knowledge session<br>
2) Run a &quot;rule flow&quot; to validate the quote against the product
facts<br>
3) The rules will insert validation results as facts tagged against the<br>
quote<br>
4) QUERY for the validation results<br>
5) Retract the facts for the quote (inc validation results)<br>
6) Send the validation results back as a response to the webservice call<br>
<br>
My first question is how to implement step 4 --&gt; how to physically query
for<br>
the validation results pertaining to that specific quote. &nbsp;Any help
here<br>
would be greatly appreciated.<br>
<br>
My second question relates to concurrency. &nbsp;As this is a quote validation<br>
tool there will be multiple users validating quotes so we will get<br>
concurrent validation requests.<br>
<br>
What is the recommended manner of dealing with concurrent rule requests<br>
within a stateful knowledge session. &nbsp;If 2 people attempt to validate
a<br>
different quote at the same time we will have two quotes within the<br>
knowledge session together with all of the product facts. &nbsp;Is drools
capable<br>
of running two concurrent rule flows against the knowledge session, each<br>
referencing a different quote or would we need to instantiate 2 knowledge<br>
sessions, or even deal with the matter in a serial manner placing the 2nd<br>
quote validation flow on hold until the first completes?<br>
<br>
Any help/pointers would be great. &nbsp;I am hoping someone out there has<br>
attempted to use Drools in a similar manner :)<br>
<br>
Many Thanks<br>
<br>
Ste<br>
<br>
--<br>
View this message in context: </font><a href="http://drools.46999.n3.nabble.com/Query-for-a-fact-and-concurrent-rule-execution-tp3954737.html" target=_blank><font size=3 color=blue><u>http://drools.46999.n3.nabble.com/Query-for-a-fact-and-concurrent-rule-execution-tp3954737.html</u></font></a><font size=3><br>
Sent from the Drools: User forum mailing list archive at </font><a href=http://nabble.com/ target=_blank><font size=3 color=blue><u>Nabble.com</u></font></a><font size=3>.<br>
_______________________________________________<br>
rules-users mailing list</font><font size=3 color=blue><u><br>
</u></font><a href="mailto:rules-users@lists.jboss.org" target=_blank><font size=3 color=blue><u>rules-users@lists.jboss.org</u></font></a><font size=3 color=blue><u><br>
</u></font><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target=_blank><font size=3 color=blue><u>https://lists.jboss.org/mailman/listinfo/rules-users</u></font></a>
<br><font size=3><br>
_______________________________________________<br>
rules-users mailing list</font><font size=3 color=blue><u><br>
</u></font><a href="mailto:rules-users@lists.jboss.org" target=_blank><font size=3 color=blue><u>rules-users@lists.jboss.org</u></font></a><font size=3 color=blue><u><br>
</u></font><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target=_blank><font size=3 color=blue><u>https://lists.jboss.org/mailman/listinfo/rules-users</u></font></a>
<br>
<br><font size=3><br>
_______________________________________________<br>
rules-users mailing list</font><font size=3 color=blue><u><br>
</u></font><a href="mailto:rules-users@lists.jboss.org"><font size=3 color=blue><u>rules-users@lists.jboss.org</u></font></a><font size=3 color=blue><u><br>
</u></font><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target=_blank><font size=3 color=blue><u>https://lists.jboss.org/mailman/listinfo/rules-users</u></font></a><font size=3><br>
</font>
<br><font size=3><br>
_______________________________________________<br>
rules-users mailing list</font><font size=3 color=blue><u><br>
</u></font><a href="mailto:rules-users@lists.jboss.org"><font size=3 color=blue><u>rules-users@lists.jboss.org</u></font></a><font size=3><br>
</font><a href="https://lists.jboss.org/mailman/listinfo/rules-users"><font size=3>https://lists.jboss.org/mailman/listinfo/rules-users</font></a>
<br><tt><font size=2>_______________________________________________<br>
rules-users mailing list<br>
rules-users@lists.jboss.org<br>
</font></tt><a href="https://lists.jboss.org/mailman/listinfo/rules-users"><tt><font size=2>https://lists.jboss.org/mailman/listinfo/rules-users</font></tt></a><tt><font size=2><br>
</font></tt>
<br>

-----------------------------------------
The information contained in this communication (including any
attachments hereto) is confidential and is intended solely for the
personal and confidential use of the individual or entity to whom
it is addressed. If the reader of this message is not the intended
recipient or an agent responsible for delivering it to the intended
recipient, you are hereby notified that you have received this
communication in error and that any review, dissemination, copying,
or unauthorized use of this information, or the taking of any
action in reliance on the contents of this information is strictly
prohibited. If you have received this communication in error,
please notify us immediately by e-mail, and delete the original
message. Thank you