[rules-users] Event streams

Chris Richmond crichmond at referentia.com
Fri Sep 25 17:56:21 EDT 2009


How would I raise the event strictly from the consequence of that rule?  Is
it basically creating a new object something like the following?

 

//rule "detect a stream data object"

 

When

            MyDataStreamObject($val: fieldValue < 20) from entry point
"DATA"

Then

            //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

            //sure that the MyDataStreamObject event "NOT INCLUDED" within
the generated longer lived event lifetime. Efffectively preventing me from
firing this if one of my

            //generated events is still living

 

            new LongerLivedEvent()

end

 

 

  _____  

From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Greg Barton
Sent: Friday, September 25, 2009 10:30 AM
To: Rules Users List
Subject: Re: [rules-users] Event streams

 

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.

 

  _____  

From: Chris Richmond <crichmond at referentia.com>
To: Rules Users List <rules-users at lists.jboss.org>
Sent: Friday, September 25, 2009 3:17:52 PM
Subject: [rules-users] Event streams

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?

 

 

Declare MyDataStreamObject

            @role(event)

End

 

 

//rule "detect a stream data object"

 

When

            MyDataStreamObject() from entry point "DATA"

Then

            System.err.println("data object inserted");

end

 

 

 

 

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:

 

 

//rule "detect a stream data object"

 

When

            MyDataStreamObject($val: fieldValue < 20) from entry point
"DATA"

Then

            //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

            //sure that the MyDataStreamObject event "NOT INCLUDED" within
the generated longer lived event lifetime. Efffectively preventing me from
firing this if one of my

            //generated events is still living

end

 

 

Thanks,


Chris

 

 

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090925/272e0200/attachment.html 


More information about the rules-users mailing list