Hi.<br><br>im trying to demo drools-fusion for a system that processes backup events. <br>i have the following 2 CEP rules:<br><br>rule "Backup Not Succeeded For At Least 3 Days"<br>@ruleId(1)<br>when<br> Node($id : id)<br>
not ( Backup(clientId == $id, $state: state == BackupStateEnum.FINISHED) over window:time( 3d ) from entry-point "Backup Stream" )<br>then<br> //nothing for now<br>end<br><br>rule "Prune Previous Successful Backups"<br>
@ruleId(2)<br>when<br> $prevBackup : Backup($id : clientId, state == BackupStateEnum.FINISHED) from entry-point "Backup Stream"<br> $newerBackup : Backup(clientId == $id, state == BackupStateEnum.FINISHED, this after $prevBackup) from entry-point "Backup Stream"<br>
then<br> drools.retract($prevBackup);<br>end<br><br>rule #2 is my attempt to cut down on memory usage. the problem is that rule #2 slows down the processing very very considerably (2 orders of magnitude slower when simulating batches of 40K events/day).<br>
<br>what would be my next step in trying to find the reason for it? my intuition tells me that with 2 events in the system at any given time instead of 120K (single node, 40K events/day 3 day window) i should have seen either a speedup or reduced memory consumption (if not both) and yet the results im seeing are the exact opposite.<br>
is there anything im missing ? i could try adding some sort of LastSuccessfulBackup "marker" object into main memory and updating it using events from the backup stream, but then how would i express rule #1 ?<br>
<br>any help/clues/suggestions would be greatly appreciated,<br><br> radai.<br>