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