My Fact/object (order) has multiple attributes and "due date" is one of them. A single rule is based on a combination of more than one attribute. My rule's when condition are dynamic and configurable by the end-user. An example of a rule's condition could be: when Order(dueDate < (some date), quantity > 1000) then //do something Dynamic rule here means that "some date" could be the current-date or it could be current-date + 2 days i.e configurable. The thread I'm talking about runs once a day to check the the due date condition. Now the problem is that if the object is not changed and we call fireAllRules() then even if the duedate condition is met then too the rule is not fired because the object is not changed. Michael Suzio wrote:Why couldn't the object itself know when the due date has passed? If you kept calling fireAllRules periodically in a thread, and had a rule like: when Order (dueDatePassed == true) then // do something end Then you just need a isDueDatePassed method in the Order object, which itself compares the due date to the current time.