[rules-users] Retraction of facts based on time - any ideas please?

Mark Proctor mproctor at codehaus.org
Sat May 2 17:27:15 EDT 2009


rsundaar at aretus.biz wrote:
>  
> 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 -5
> *when*
> e1 : Event (code == "LOGON", status == "ACTIVE")
> *eval* ((getCurrentTimeStamp ()- e1.getLongTimeStamp()) > 100)
> *then*
> System.out.println( "Retracting expired event with Timestamp: " + 
> e1.longTimeStamp );
> *retract* (e1);
> *end*
>  
> This 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?
Drools 5 supports an expiration time on an event. Beyond that you can 
use duration rules.

Mark
>  
> I would greatly appreciate any ideas.
>  
> Thanks,
>
> Ravi.
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090502/8bf34e68/attachment.html 


More information about the rules-users mailing list