It should be pretty obvious that the rule should not fire after the
insertion of a single fact.
declare MyEvent
@role(event)
end
rule FaultsCoincide
when
f1 : MyEvent( key == "type1" ) over window:length( 1 )
f2 : MyEvent( key == "type2" ) over window:length( 1 )
then
System.out.println( ">>> f1=" + f1 + " f2=" + f2 );
if( f2.getKey().equals( "type1" ) ) System.out.println( "*** BUG
***" );
end
insert MyEvent<type1,ALARM>
>> f1=MyEvent<type1,ALARM> f2=MyEvent<type1,ALARM>
*** BUG ***
insert MyEvent<type2,ALARM>
>> f1=MyEvent<type2,ALARM> f2=MyEvent<type2,ALARM>
>> f1=MyEvent<type2,ALARM> f2=MyEvent<type1,ALARM>
*** BUG ***