[rules-users] How to write a rule like this

赵侃侃 kevin223 at gmail.com
Tue Oct 26 05:03:18 EDT 2010


It's getting closer now but still has one problem that it reports for a
pattern match where there's an EventB with same index value in between.
The Testing events feed pattern that I use can be described as below:

EventA:0   EventB:1   EventA:0   EventB:1   EventA:1   EventB:0   EventA:0
here it reports for a pattern match where it shouldn't  EventB:1

Best Regards,
Kevin Zhao

在 2010年10月26日 下午4:33,Wolfgang Laun <wolfgang.laun at gmail.com>写道:

> If there may be two EventA with the same timestamp, additional
> constraints may be necessary, and
> after may have to be used with a start time of 0ms:
>
>  $a1: EventA( $index : index )
>  $a2: EventA( this != $a1 && after[0ms] $a1, index == $index )
>  $a3: EventA( this != $a1 && != $a2 && after[0ms] $a2, index == $index )
>
> -W
>
>
> 2010/10/26 赵侃侃 <kevin223 at gmail.com>:
> > Hello,
> > Hello,
> > I just tried this rule, but it doesn't seem to work as expected.
> > What I have now is every time I have an EventA received then a pattern is
> > reported matched no matter whether any of the other constrains is met.
> > Any ideas?
> > Best Regards,
> > Kevin Zhao
> >
> > 2010/10/26 Michael Anstis <michael.anstis at gmail.com>
> >>
> >> You could try this too; if you don't want lots of new attributes for
> your
> >> model:-
> >>
> >> rule "three A"
> >> when
> >>   $a1: EventA( $index : index )
> >>   $a2: EventA( index == $index )
> >>   $a3: EventA( index == $index )
> >>   not PatternConsumer( name == 'AAA', events contain $a1 || contais $a2
> ||
> >> contains $a3)
> >>   not EventB( this after[0ms] $a1 && before[0ms] $a3, index == $index )
> >> then
> >>   // ... match
> >>   PatternConsumer pc = new PatternConsumer("AAA", $a1, $a2, $a3 );
> >>   insert(pc);
> >> end
> >>
> >>
> >> 2010/10/25 Wolfgang Laun <wolfgang.laun at gmail.com>
> >>>
> >>> Giving those other rules a higher salience is one way, but I think
> >>> it is better to add a boolean field "usedForAAA" to class EventA.
> >>>
> >>> rule "three A"
> >>> when
> >>>   $a1: EventA( $index : index, usedForAAA == false )
> >>>   $a2: EventA( index == $index, usedForAAA == false )
> >>>   $a3: EventA( index == $index, usedForAAA == false )
> >>>   not EventB( this after[0ms] $a1 && before[0ms] $a3, index == $index )
> >>> then
> >>>   // ... match
> >>>   modify( $a1 ){ setUsedForAAA( true ) }
> >>>   modify( $a2 ){ setUsedForAAA( true ) }
> >>>   modify( $a3 ){ setUsedForAAA( true ) }
> >>> end
> >>>
> >>> -W
> >>>
> >>>
> >>> 2010/10/25 赵侃侃 <kevin223 at gmail.com>
> >>>>
> >>>> Thanks Wolfgang,
> >>>> It now starts to make sense to me. However, is it possible that I
> don't
> >>>> retract those matched eventA? All those events might be used to
> evaluate
> >>>> against other rules.
> >>>> Thanks again,
> >>>> Kevin Zhao
> >>>> 2010/10/25 Wolfgang Laun <wolfgang.laun at gmail.com>
> >>>>>
> >>>>> I assume you are using Fusion, using a session clock so that temporal
> >>>>> operators are available.
> >>>>>
> >>>>> rule "three A"
> >>>>> when
> >>>>>   $a1: EventA( $index : index )
> >>>>>   $a2: EventA( index == $index )
> >>>>>   $a3: EventA( index == $index )
> >>>>>   not EventB( this after[0ms] $a1 && before[0ms] $a3, index == $index
> )
> >>>>> then
> >>>>>   // ... match
> >>>>>   retract( $a1 );
> >>>>>   retract( $a2 );
> >>>>>   retract( $a3 );
> >>>>> end
> >>>>>
> >>>>> -W
> >>>>>
> >>>>> 2010/10/25 赵侃侃 <kevin223 at gmail.com>
> >>>>>>
> >>>>>> Hello,
> >>>>>> I'm still quite new to the drools stuffs just getting the examples
> >>>>>> running. I'm sorry if my question is too basic.
> >>>>>> I have a system that will continuously to receive events sent from
> >>>>>> some other system. Basically I have two types of events, eventA and
> eventB.
> >>>>>> Both eventA and eventB have two properties, index and timestamp.
> >>>>>> What I want is to capture a pattern to meet the following conditions
> >>>>>> 1. every 3 consecutive eventsA without any eventB in between having
> a
> >>>>>> same index value ordering by their timestamp.
> >>>>>> 2. all events in a matched pattern will have the same value of
> >>>>>> property index.
> >>>>>> 3. if a pattern is matched, any of the events in this pattern should
> >>>>>> not be used again for a new matching.
> >>>>>> there are some examples below, the number after a colon stands for
> the
> >>>>>> value of its index number and assume those events are already
> ordered by
> >>>>>> their timestamp.
> >>>>>> eventB:2    eventA:1     eventA:1     eventA:1  eventB:3
> >>>>>>  --------- one successful match, we have three eventA with same
> index value
> >>>>>> 1 in a row
> >>>>>> eventB:2    eventA:1     eventA:1     eventB:1  eventA:1
> >>>>>>  --------- no match because there's an eventB in between
> >>>>>> eventB:2    eventA:1     eventA:1     eventB:2  eventA:1
> >>>>>>  --------- one successful match because the in-between eventB has a
> >>>>>> different index value
> >>>>>> eventA:1    eventA:1     eventA:1     eventA:1  eventA:1
> >>>>>>  --------- only one match, because once matched, the events can not
> be used
> >>>>>> for a second match again.
> >>>>>>
> >>>>>> I just don't know how to write a rule like this. Is there anyone who
> >>>>>> can shed some lights on?
> >>>>>> Best Regards,
> >>>>>> Kevin
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> rules-users mailing list
> >>>>>> rules-users at lists.jboss.org
> >>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>>>>
> >>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> rules-users mailing list
> >>>>> rules-users at lists.jboss.org
> >>>>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> rules-users mailing list
> >>>> rules-users at lists.jboss.org
> >>>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>>
> >>>
> >>>
> >>> _______________________________________________
> >>> rules-users mailing list
> >>> rules-users at lists.jboss.org
> >>> https://lists.jboss.org/mailman/listinfo/rules-users
> >>>
> >>
> >>
> >> _______________________________________________
> >> rules-users mailing list
> >> rules-users at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/rules-users
> >>
> >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
>
> _______________________________________________
> 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/20101026/7aed4099/attachment.html 


More information about the rules-users mailing list