[rules-users] Detecting two instances of the same event withFusion Rules

Georg Maier Georg.Maier at cjt.de
Wed May 26 07:26:58 EDT 2010


Hi, 

 

thanks for the reply. You are right, it's just not working the otherway
round, if there would be no "not"

 

$that : Thing(..)

$other : Thing ( this != $that , ...)

 

would match always twice. For example, if there were two "Thing"'s A and B it
would match for the combination AB as well as BA... I know this was actually
not my question, but I guess it was the reason I got confused J

 

Thanks again!

 

 

Von: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] Im Auftrag von Wolfgang Laun
Gesendet: Mittwoch, 26. Mai 2010 10:01
An: Rules Users List
Betreff: Re: [rules-users] Detecting two instances of the same event
withFusion Rules

 

But 

    $that : Thing(...)
    Thing( this != $that,...)

is the standard way of ensuring that a pattern matches two distinct objects
of the same class, and there is no reason why you shouldn't be able to use it
with not as well:

   $that : Thing(...)
   not ( Thing( this != $that,... ) ) 

"Given one Thing (with constraints...) and *not* having any *other* Thing
(with constraints...), then..."

-W



2010/5/26 Georg Maier <Georg.Maier at cjt.de>

Hi,

 

I'm new to Drools and currently trying to implement some examples using CEP /
Fusion. I got stuck on a problem to which I can't find any solution in the
online documentation, so I'm hoping for your help.

I'm trying to write a rule, which is activated whenever a certain event
occurs and no event of the same type occurred in the e.g. last 5 minutes (or
just at the same time). I know how to do it if these are events of different
types, but I can't find any way for events of the same type. What I tried is
something like that:

 

$error : RouterErrorEvent ( $name : routerName ) from entry-point "abc"

not ($otherError : RouterErrorEvent ( (this coincides $error) && (routerName
== $name) ) from entry-point "abc")

 

First of all there's the problem, that $error and $otherError will be the
same instance if a "RouterEventError" has been inserted from the "abc" entry
point. Adding a (this != $error) to the second, ($otherError) obviously is no
solution to that as well. 

If it were two different events something like in example 2.19 would work:

 

$error1 : ErrorOneEvent( $id : id ) 

not ($error2 : ErrorTwoEvent( id == $id, this coincides $error1 ))

 

I'm kinda sure I'm missing something pretty "easy" here... or is this
approach completely wrong?

As I'm aware of the fact that I couldn't be more of a newbie J I would
appreciate any suggestions for nice tutorials or further reading as well!

 

Thanks in advance!

 

Georg


_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100526/3d0469a5/attachment.html 


More information about the rules-users mailing list