Hello,
I am trying to use Drools Fusion (5.6.0 or 6.0.1) to correlate events, but can't get the internal mechanism for expiring events to work in my rule.
I made up a simple example that detects duplicate messages over a short time window. The rule below seems to work fine, but facts accumulate indefinitely in the working memory. Changing window:length(1) to window:time(10s) does not solve the issue.
declare DataEvent
@role(event)
end
rule "Detect duplicates"
when
DataEvent ( $text: text ) over window:length(1)
ArrayList( size >= 2 ) from collect( DataEvent( text == $text ) over window:time( 10s ) )
then
System.err.println("Duplicate detected");
end
Now, if I change my condition to the following, I see that facts automatically expire and are retracted after 10 seconds.
...when
ArrayList( size >= 10 ) from collect( DataEvent( ) over window:time( 10s ) )
then...
Many thanks in advance.