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