public void execute(InternalWorkingMemory workingMemory) { workingMemory.getEntryPointNode().modifyQuery( factHandle, context, workingMemory ); }
public void execute(InternalWorkingMemory workingMemory) { // we null this as it blocks this query being called, to avoid re-entrant issues. i.e. scheduling an insert and then an update, before the insert is executed ((DroolsQuery) this.factHandle.getObject()).setAction( null ); workingMemory.getEntryPointNode().assertQuery( factHandle, context, workingMemory ); }
public void removeActivation(final AgendaItem activation) { if ( declarativeAgenda ) { workingMemory.getEntryPointNode().retractActivation( activation.getFactHandle(), activation.getPropagationContext(), workingMemory ); if ( activation.getActivationGroupNode() != null ) { activation.getActivationGroupNode().getActivationGroup().removeActivation( activation ); } } if ( activation instanceof ScheduledAgendaItem ) { removeScheduleItem( (ScheduledAgendaItem) activation ); } }
public void execute(InternalWorkingMemory workingMemory) { InternalFactHandle factHandle = (InternalFactHandle) leftTuple.getObject(); if ( node.isOpenQuery() ) { // iterate to the query terminal node, as the child leftTuples will get picked up there workingMemory.getEntryPointNode().retractObject( factHandle, context, workingMemory.getObjectTypeConfigurationRegistry().getObjectTypeConf( workingMemory.getEntryPoint(), factHandle.getObject() ), workingMemory ); //workingMemory.getFactHandleFactory().destroyFactHandle( factHandle ); } else { // get child left tuples, as there is no open query if ( leftTuple.getFirstChild() != null ) { node.getSinkPropagator().propagateRetractLeftTuple( leftTuple, context, workingMemory ); } } }
public boolean addActivation(final AgendaItem activation) { if ( declarativeAgenda ) { if ( activationObjectTypeConf == null ) { EntryPoint ep = workingMemory.getEntryPoint(); activationObjectTypeConf = ((InternalWorkingMemoryEntryPoint) workingMemory.getWorkingMemoryEntryPoint( ep.getEntryPointId() )).getObjectTypeConfigurationRegistry().getObjectTypeConf( ep, activation ); } InternalFactHandle factHandle = workingMemory.getFactHandleFactory().newFactHandle( activation, activationObjectTypeConf, workingMemory, workingMemory ); workingMemory.getEntryPointNode().assertActivation( factHandle, activation.getPropagationContext(), workingMemory ); activation.setFactHandle( factHandle ); if ( !activation.isCanceled() && ( activation.getBlockers() == null || activation.getBlockers().isEmpty() ) ) { // All activations started off staged, they are unstaged if they are blocked or // allowed to move onto the actual agenda for firing. getStageActivationsGroup().addActivation( activation ); } return true; } else { addActivation( activation, true ); return true; } }
public void modifyActivation(final AgendaItem activation, boolean previouslyActive) { if ( declarativeAgenda ) { InternalFactHandle factHandle = activation.getFactHandle(); workingMemory.getEntryPointNode().modifyActivation( factHandle, activation.getPropagationContext(), workingMemory );
workingMemory.getEntryPointNode().modifyActivation( factHandle, activation.getPropagationContext(), workingMemory ); activation.getPropagationContext().evaluateActionQueue( workingMemory );