I'll preface this by saying this may not be the correct way to do this, so suggestions welcome...
For this example, the name can be something like 'collector1', 'collector2'. For each collector, there are normalized stats, like 'CPU', 'IO', etc. <pre> // Imports and other stuff declare InstanceHealth @role(event) @expires(10s) @timestamp(timeStamp) end rule "Iostats above 90 over 5 seconds" when $mih:InstanceHealth($id:id, $luid:name, $stat:stat ) from entry-point "stat-stream" $measure : Number( doubleValue > 90 ) from accumulate( InstanceHealth( $inst:name==$luid, $value:value, stat==$stat) over window:time( 5s ) from entry-point "stat-stream", average($value)) then logger.warn( "--------Average--------------" ); logger.warn( $mih.hashCode() + " // "+$stat +" // "+$id+" : "+$luid +" == "+$measure ); // doStuff based upon the name and stat end rule "Log instance" when $m:InstanceHealth($id:id, $stat:stat, $inst:name, $v:value ) from entry-point "stat-stream" then logger.warn( "------------Instance--------------" ); logger.warn( "--"+$inst+" == "+$stat +" value = "+$v ); end </pre> So the 'Iostats above 90 over 5 seconds' rule is trying to match up stats with collectors so there are no cross-products (stats aren't accumulated across collectors and each stat type gets it's own evaluation). This actually seems to be working, except the InstanceHealth objects don't seem to be being evicted and I'm apparently getting multiple activations (?). Note when I remove the line w/ the $mih binding, things get evicted fine but I don't have access to the name, stat, etc. TIA. A snippet of a log (I can confirm that three different iostats were inserted for collector2) ==>[ObjectInsertedEventImpl: getFactHandle()=1:19:1003982845:1003982845:19:stat-stream, getObject()=com.poc.mediator.domain.InstanceHealth : null, getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@30a2268a, getPropagationContext()=PropagationContextImpl [activeActivations=0, dormantActivations=15, entryPoint=EntryPoint::stat-stream, factHandle=1:19:1003982845:1003982845:19:stat-stream, leftTuple=null, originOffset=-1, propagationNumber=13, rule=null, type=0]] 2011-09-23 11:35:16,004 [Rule-Execution-Thread] WARN WorkingMemory - --------Average-------------- 2011-09-23 11:35:16,004 [Rule-Execution-Thread] WARN WorkingMemory - 1302111244 // iostats // null : collector2 == 91.0 2011-09-23 11:35:16,004 [Rule-Execution-Thread] WARN WorkingMemory - --------Average-------------- 2011-09-23 11:35:16,004 [Rule-Execution-Thread] WARN WorkingMemory - 158787804 // iostats // null : collector2 == 91.0 2011-09-23 11:35:16,004 [Rule-Execution-Thread] WARN WorkingMemory - --------Average-------------- 2011-09-23 11:35:16,004 [Rule-Execution-Thread] WARN WorkingMemory - 1785305512 // iostats // null : collector2 == 91.0 ==>[ObjectInsertedEventImpl: getFactHandle()=1:21:1340153218:1340153218:21:stat-stream, getObject()=com.poc.mediator.domain.InstanceHealth : null, getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@30a2268a, getPropagationContext()=PropagationContextImpl [activeActivations=0, dormantActivations=20, entryPoint=EntryPoint::stat-stream, factHandle=1:21:1340153218:1340153218:21:stat-stream, leftTuple=null, originOffset=-1, propagationNumber=16, rule=null, type=0]] 2011-09-23 11:35:16,100 [Insertion Thread] INFO mediator.RulesExecutionService - inserting com.poc.mediator.domain.InstanceHealth : null... 2011-09-23 11:35:16,101 [Insertion Thread] WARN mediator.RulesExecutionService - >>><org.drools.event.rule.impl.ObjectInsertedEventImpl@1dddec9e factHandle=1:21:1340153218:1340153218:21:stat-stream object=com.poc.mediator.domain.InstanceHealth : null kruntime=org.drools.impl.StatefulKnowledgeSessionImpl@30a2268a propagationContext=PropagationContextImpl [activeActivations=0, dormantActivations=20, entryPoint=EntryPoint::stat-stream, factHandle=1:21:1340153218:1340153218:21:stat-stream, leftTuple=null, originOffset=-1, propagationNumber=16, rule=null, type=0]> 2011-09-23 11:35:16,101 [Insertion Thread] INFO mediator.RulesExecutionService - ...done inserting <com.poc.mediator.domain.InstanceHealth@4fe11d82 timeStamp=Fri Sep 23 11:35:16 CDT 2011 stat=cpu value=88.0 id=null version=null Instance=com.poc.mediator.domain.Instance : null> 2011-09-23 11:35:16,108 [Insertion Thread] INFO mediator.RulesExecutionService - inserting com.poc.mediator.domain.InstanceHealth : null... 2011-09-23 11:35:16,109 [Insertion Thread] WARN mediator.RulesExecutionService - >>><org.drools.event.rule.impl.ObjectInsertedEventImpl@56300388 factHandle=1:23:1092542236:1092542236:23:stat-stream object=com.poc.mediator.domain.InstanceHealth : null kruntime=org.drools.impl.StatefulKnowledgeSessionImpl@30a2268a propagationContext=PropagationContextImpl [activeActivations=2, dormantActivations=19, entryPoint=EntryPoint::stat-stream, factHandle=1:23:1092542236:1092542236:23:stat-stream, leftTuple=null, originOffset=-1, propagationNumber=17, rule=null, type=0]> 2011-09-23 11:35:16,109 [Insertion Thread] INFO mediator.RulesExecutionService - ...done inserting <com.poc.mediator.domain.InstanceHealth@411edf1c timeStamp=Fri Sep 23 11:35:16 CDT 2011 stat=iostats value=85.0 id=null version=null Instance=com.poc.mediator.domain.Instance : null> ==>[ObjectInsertedEventImpl: getFactHandle()=1:23:1092542236:1092542236:23:stat-stream, getObject()=com.poc.mediator.domain.InstanceHealth : null, getKnowledgeRuntime()=org.drools.impl.StatefulKnowledgeSessionImpl@30a2268a, getPropagationContext()=PropagationContextImpl [activeActivations=2, dormantActivations=19, entryPoint=EntryPoint::stat-stream, factHandle=1:23:1092542236:1092542236:23:stat-stream, leftTuple=null, originOffset=-1, propagationNumber=17, rule=null, type=0]] 2011-09-23 11:35:16,160 [Rule-Execution-Thread] WARN WorkingMemory - ------------Instance-------------- 2011-09-23 11:35:16,161 [Rule-Execution-Thread] WARN WorkingMemory - --collector1 == iostats value = 85.0 2011-09-23 11:35:16,161 [Rule-Execution-Thread] WARN WorkingMemory - ------------Instance-------------- 2011-09-23 11:35:16,161 [Rule-Execution-Thread] WARN WorkingMemory - --collector2 == cpu value = 88.0 2011-09-23 11:35:17,013 [Rule-Execution-Thread] WARN WorkingMemory - --------Average-------------- 2011-09-23 11:35:17,014 [Rule-Execution-Thread] WARN WorkingMemory - 1302111244 // iostats // null : collector2 == 92.0 2011-09-23 11:35:17,014 [Rule-Execution-Thread] WARN WorkingMemory - --------Average-------------- 2011-09-23 11:35:17,014 [Rule-Execution-Thread] WARN WorkingMemory - 158787804 // iostats // null : collector2 == 92.0 2011-09-23 11:35:17,014 [Rule-Execution-Thread] WARN WorkingMemory - --------Average-------------- 2011-09-23 11:35:17,014 [Rule-Execution-Thread] WARN WorkingMemory - 1785305512 // iostats // null : collector2 == 92.0 -- View this message in context: http://drools.46999.n3.nabble.com/Expiry-of-events-not-occurring-for-sliding-window-tp3362402p3362402.html Sent from the Drools: User forum mailing list archive at Nabble.com. _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users