public void execute(InternalWorkingMemory workingMemory) {
if (this.factHandle.isValid()) {
PropagationContextFactory pctxFactory = workingMemory.getKnowledgeBase().getConfiguration().getComponentFactory().getPropagationContextFactory();
// if the fact is still in the working memory (since it may have been previously retracted already
final PropagationContext context = pctxFactory.createPropagationContext(workingMemory.getNextPropagationIdCounter(), PropagationContext.EXPIRATION,
null, null, this.factHandle);
((EventFactHandle) factHandle).setExpired(true);
this.node.retractObject(factHandle,
context,
workingMemory);
context.evaluateActionQueue(workingMemory);
// if no activations for this expired event
if (((EventFactHandle) factHandle).getActivationsCount() == 0) {
// remove it from the object store and clean up resources
((EventFactHandle) factHandle).getEntryPoint().retract(factHandle);
}
context.evaluateActionQueue(workingMemory);
}
}