<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Yes to both.&nbsp; However to the first part (rules firing "automatically") you need to use fireUntilHalt() instead of fireAllRules().&nbsp; fireUntilHalt blocks (until halt is called) so you need to invoke it in a separate Thread.&nbsp; Then from another thread you can insert events into the entry points.&nbsp; For the second item (long lived event) you must use an @expires tag in your object declaration and be running in STREAM mode.<br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> Chris Richmond &lt;crichmond@referentia.com&gt;<br><b><span style="font-weight:
 bold;">To:</span></b> Rules Users List &lt;rules-users@lists.jboss.org&gt;<br><b><span style="font-weight: bold;">Sent:</span></b> Friday, September 25, 2009 3:17:52 PM<br><b><span style="font-weight: bold;">Subject:</span></b> [rules-users] Event streams<br></font><br>



 
 
<style>
<!--
 
 _filtered {font-family:Courier;panose-1:2 7 4 9 2 2 5 2 4 4;}
 
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;margin-bottom:.0001pt;font-size:12.0pt;font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;text-decoration:underline;}
pre
        {margin:0in;margin-bottom:.0001pt;background:whitesmoke;border:none;padding:0in;font-size:11.0pt;font-family:Courier;color:#333333;}
span.EmailStyle17
        {font-family:Arial;color:windowtext;}
 _filtered {margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {}
-->
</style>



<div class="Section1">

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">It is my understanding that an event will be detected as
soon as it is inserted into a stream…meaning that I don’t have to
explicitly call fireRules in order to evaluate events, but them will be
evaluated as soon as I insert them into a stream, so a rule like the one below
would fire as soon as I perform&nbsp; datastream.insert(myDataStreamObject) without
having to explicitly fire rules? Is that behavior correct/intended?</span></font></p> 

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

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

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

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @role(event)</span></font></p> 

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

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

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

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">//rule “detect a stream data object”</span></font></p> 

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

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

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyDataStreamObject()
from entry point “DATA”</span></font></p> 

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

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(“data
object inserted”);</span></font></p> 

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

<p class="MsoNormal"><strong><b><font color="#333333" face="Courier" size="1"><span style="font-size: 7.5pt; font-family: Courier; color: rgb(51, 51, 51);"> &nbsp;</span></font></b></strong></p> 

<p class="MsoNormal"><strong><b><font color="#333333" face="Courier" size="1"><span style="font-size: 7.5pt; font-family: Courier; color: rgb(51, 51, 51);"> &nbsp;</span></font></b></strong></p> 

<p class="MsoNormal"><strong><b><font color="#333333" face="Courier" size="1"><span style="font-size: 7.5pt; font-family: Courier; color: rgb(51, 51, 51);"> &nbsp;</span></font></b></strong></p> 

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

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">Also, could I generate another event(long lived…say it
lives 1 minute) so that if the above event detector fired and some condition
was &nbsp;met, I could have it fire some event within the rule engine? Something
like the following:</span></font></p> 

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

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

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">//rule “detect a stream data object”</span></font></p> 

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

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

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyDataStreamObject($val:
fieldValue &lt; 20) from entry point “DATA”</span></font></p> 

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

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //I
want to raise an event purely from this rule that will live for one minute or
so, that I can use to further refine this rule, to make sure this rule makes</span></font></p> 

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //sure
that the MyDataStreamObject event “NOT INCLUDED” within the
generated longer lived event lifetime. Efffectively preventing me from firing
this if one of my</span></font></p> 

<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //generated
events is still living</span></font></p> 

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

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

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

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

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

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

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

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

</div>

</div></div></div><br>

      </body></html>