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(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users