[rules-users] Problem with Negative Patterns and Temporal Constraints

Wolfgang Laun wolfgang.laun at gmail.com
Mon Jan 16 09:57:37 EST 2012


I don't see that the "not" CE excludes the AnalysisCue bound to $cue from
being
matched by the pattern inside the "not". I recommend using

*   not*(AnalysisCue(*this != $cue*, this after[0ms,2500ms] $cue) from

since "[0ms,..." does not inhibit the same event being matched by both
patterns,
which precludes the rule from firing.

-W


2012/1/16 Weiss, Wolfgang <Wolfgang.Weiss at joanneum.at>

> Hi all!****
>
> ** **
>
> We have the problem that the following rule never fires:****
>
> ** **
>
> *rule* "test-rule"****
>
>        *agenda-group* "evaluation"****
>
>        *salience* 100****
>
>        ****
>
>        *when*****
>
>              $cue : AnalysisCue() *from* entry-point "LowLevelCueStream"**
> **
>
>              *not*(AnalysisCue(*this* after[0ms,2500ms] $cue) *from*entry-point
> "LowLevelCueStream")****
>
>        *then*****
>
>              logger.debug("... some message ..");****
>
> *end*****
>
> ** **
>
> We found out that the problem is the combination of the negation with the
> conditional element “not” and the temporal constraint “[0ms,2500ms]”. Using
> the temporal operator “this after $cue” without a temporal constraint works
> correct in its semantics.****
>
> Interestingly, when adding a constraint (cueType == 1) to the type in the
> negative pattern the rule begins to work. The rule would look like as
> follows:****
>
> ** **
>
> *rule* "test-rule"****
>
>        *agenda-group* "evaluation"****
>
>        *salience* 100****
>
>        ****
>
>        *when*****
>
>              $cue : AnalysisCue() *from* entry-point "LowLevelCueStream"**
> **
>
>              *not*(AnalysisCue(cueType == 1, *this* after[0ms,2500ms]
> $cue) *from* entry-point "LowLevelCueStream")****
>
>        *then*****
>
>              logger.debug("... some message ..");****
>
> *end*****
>
> ** **
>
> unfortunately the rule then fires with a delay of 4 to 5 seconds. The
> second parameter of the temporal constraint influences the delay.****
>
> When changing the first parameter of the temporal constraint to a value
> greater than 0 the rule works as expected! The constraint would then look
> like as follows: “[1ms, 2500ms]”. Whereas in our case, we want to evaluate
> the time window from 0 – 2500ms.****
>
> ** **
>
> Our system works in the stream mode and we could reproduce this behaviour
> with the versions 5.3.1 and 5.4.0 Beta 1. ****
>
> Can anybody confirm if this is a bug in Drools, or did I overlook here
> something?****
>
> ** **
>
> ** **
>
> Best regards,****
>
> Wolfgang Weiss****
>
> ** **
>
> _______________________________________________
> 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/20120116/66fc20cf/attachment.html 


More information about the rules-users mailing list