<br>   Chris, <br><br>   The decision between A and B must be taken on the basis of: do you need to join objects from the different streams together? If so, you need A. If not, better go with B.<br><br>   Regarding threads, the engine works with a single thread, unless you activate the KnowledgeBase partitioning option (check the Drools Fusion documentation), in which case the engine spawns a pool of worker threads. The threads are not assigned to specific streams. They are used as a pool for processing of all required rules in the knowledge base.<br>
<br>   In any case, as long as you don&#39;t have multiple threads concurrently inserting facts/events into a single entry-point, everything else is thread safe.<br><br>   []s<br>   Edson<br><br><br><div class="gmail_quote">
2009/6/24 Chris Richmond <span dir="ltr">&lt;<a href="mailto:crichmond@referentia.com">crichmond@referentia.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">









<div link="blue" vlink="purple" lang="EN-US">

<div>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">Hello,</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">For performance reasons, assuming I am using STREAM mode, is
it better to :</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p style="margin-left: 36.6pt; text-indent: -18.6pt;"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"><span>A.<font size="1" face="Times New Roman"><span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">     </span></font></span></span></font><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">create
several streams in my rule file and inject objects into various streams
depending on my needs</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p style="margin-left: 0.25in;"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">or</span></font></p>

<p style="margin-left: 0.25in;"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p style="margin-left: 36.6pt; text-indent: -18.6pt;"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"><span>B.<font size="1" face="Times New Roman"><span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">     </span></font></span></span></font><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">create a
different session for each stream that I might have had in A. above? </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">And if I do use option A, is my understanding correct that
each stream will be processed on it’s own thread?   </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">And if so, I notice that I am able to update a common
statistical object that I created within my rule file and update it from
consequences on different streams.  If each stream is processed on it’s
own thread, is updating of this in rule defined statistics object
synchronized/thread safe?</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">For example in my rule file I have the following “stats”
object:</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"># stats object</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">declare ObjectStats</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    id : String @key</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    name: String</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    lastReadingA : int</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    lastReadingB : int</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">  </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">end</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">….then I have the following two rules……</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">rule &quot;update stats from objects A”</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    lock-on-active</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">when</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    $stats : ObjectStats( $id : id) </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    $a : ObjectTypeA(parentId == $id, $aValue
: value) from entry-point “stream for objects of type a”</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">then</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    modify($stats) { lastReadingA = $aValue };</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">end</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">rule &quot;update stats from objects B”</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    lock-on-active</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">when</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    $stats : ObjectStats( $id : id) </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    $b : ObjectTypeB(parentId == $id, $bValue
: value) from entry-point “stream for objects of type b”</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">then</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">    modify($stats) { lastReadingB= $bValue };</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">end</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">This is working fine and the lock-on-active seems to be
preventing me from getting the “cross product” problem, but is each
of these streams processed independantly on their own thread?</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">Thanks,</span></font></p>

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p><font color="#888888">

<p><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;">Chris</span></font></p>

</font></div>

</div>


<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>  Edson Tirelli<br>  JBoss Drools Core Development<br>  JBoss by Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>