<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. However to the first part (rules firing "automatically") you need to use fireUntilHalt() instead of fireAllRules(). fireUntilHalt blocks (until halt is called) so you need to invoke it in a separate Thread. Then from another thread you can insert events into the entry points. 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 <crichmond@referentia.com><br><b><span style="font-weight:
bold;">To:</span></b> Rules Users List <rules-users@lists.jboss.org><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 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;"> </span></font></p>
<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </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;"> @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;"> </span></font></p>
<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </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;"> </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;"> 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;"> 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);"> </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);"> </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);"> </span></font></b></strong></p>
<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </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 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;"> </span></font></p>
<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </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;"> </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;"> MyDataStreamObject($val:
fieldValue < 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;"> //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;"> //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;"> //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;"> </span></font></p>
<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </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;"> </span></font></p>
<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>
<p class="MsoNormal"><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>
</div>
</div></div></div><br>
</body></html>