An additional rule will be necessary to discard obsolete PatternConsumer facts.
And I think that this may cause hefty Cartesian products to accumulate until progress in Rete is stopped ny the "not" CE; so the "not" may have to be written three times, once after each $aN: EventA() pattern. -W 2010/10/25 Michael Anstis <[email protected]> > 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 <[email protected]> > >> 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 赵侃侃 <[email protected]> >> >>> 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 <[email protected]> >>> >>>> 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 赵侃侃 <[email protected]> >>>> >>>>> 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 >>>>> [email protected] >>>>> https://lists.jboss.org/mailman/listinfo/rules-users >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> rules-users mailing list >>>> [email protected] >>>> https://lists.jboss.org/mailman/listinfo/rules-users >>>> >>>> >>> >>> _______________________________________________ >>> rules-users mailing list >>> [email protected] >>> https://lists.jboss.org/mailman/listinfo/rules-users >>> >>> >> >> _______________________________________________ >> rules-users mailing list >> [email protected] >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > >
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
