Create a single fact, say Clock, with a field time. Assuming that this value is updated once in a while, depending on the precision with which your time supervision should work, you may then write rules such as
rule extract
when
Clock( $time : time )
e1 : Event (code == "LOGON", status == "ACTIVE",
$ts: longTimeStamp < ($time - 100) )
then
retract( e1 );
end
I have a need to "expire" some facts based on time. In other words, if an event occurs some time and if sufficient time has gone by, the fact should become inonsequential and be retracted. Here is my simple rule to do this:rule"Retract expired facts"dialect"mvel"// salience -5whene1 : Event (code == "LOGON", status == "ACTIVE")eval ((getCurrentTimeStamp ()- e1.getLongTimeStamp()) > 100)thenSystem.out.println( "Retracting expired event with Timestamp: " + e1.longTimeStamp );retract (e1);endThis does not seem to work because the "eval" method does not evaluate the rule every cycle. And, there is no other change to the fact (event) to force the rule to re-evaluate the fact. Is there a way to make "eval" in the LHS evaluate every cycle? Is there any other method?I would greatly appreciate any ideas.Thanks,Ravi.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users