public void modifyQuery(final InternalFactHandle factHandle, final PropagationContext context, final InternalWorkingMemory workingMemory) { if ( queryNode == null ) { this.queryNode = objectTypeNodes.get( ClassObjectType.DroolsQuery_ObjectType ); } if ( queryNode != null ) { ModifyPreviousTuples modifyPreviousTuples = new ModifyPreviousTuples(factHandle.getFirstLeftTuple(), factHandle.getFirstRightTuple() ); factHandle.clearLeftTuples(); factHandle.clearRightTuples(); // There may be no queries defined this.queryNode.modifyObject( factHandle, modifyPreviousTuples, context, workingMemory ); modifyPreviousTuples.retractTuples( context, workingMemory ); } }
public void modifyActivation(final InternalFactHandle factHandle, final PropagationContext context, final InternalWorkingMemory workingMemory) { if ( activationNode == null ) { this.activationNode = objectTypeNodes.get( ClassObjectType.Activation_ObjectType ); } if ( activationNode != null ) { ModifyPreviousTuples modifyPreviousTuples = new ModifyPreviousTuples(factHandle.getFirstLeftTuple(), factHandle.getFirstRightTuple() ); factHandle.clearLeftTuples(); factHandle.clearRightTuples(); // There may be no queries defined this.activationNode.modifyObject( factHandle, modifyPreviousTuples, context, workingMemory ); modifyPreviousTuples.retractTuples( context, workingMemory ); } }
public static void writeLeftTuples(MarshallerWriteContext context, InternalFactHandle[] factHandles) throws IOException { ObjectOutputStream stream = context.stream; InternalWorkingMemory wm = context.wm; // Write out LeftTuples //context.out.println( "LeftTuples Start" ); for ( InternalFactHandle handle : factHandles ) { //InternalFactHandle handle = (InternalFactHandle) it.next(); for ( LeftTuple leftTuple = handle.getFirstLeftTuple(); leftTuple != null; leftTuple = (LeftTuple) leftTuple.getLeftParentNext() ) { stream.writeShort( PersisterEnums.LEFT_TUPLE ); int sinkId = leftTuple.getLeftTupleSink().getId() ; stream.writeInt( sinkId ); stream.writeInt( handle.getId() ); //context.out.println( "LeftTuple sinkId:" + leftTuple.getLeftTupleSink().getId() + " handleId:" + handle.getId() ); writeLeftTuple( leftTuple, context, true ); } } stream.writeShort( PersisterEnums.END ); //context.out.println( "LeftTuples End" ); }
public static void writeInitialFactHandleLeftTuples(MarshallerWriteContext context) throws IOException { ObjectOutputStream stream = context.stream; //context.out.println( "InitialFact LeftTuples Start" ); InternalFactHandle handle = context.wm.getInitialFactHandle(); for ( LeftTuple leftTuple = handle.getFirstLeftTuple(); leftTuple != null; leftTuple = (LeftTuple) leftTuple.getLeftParentNext() ) { stream.writeShort( PersisterEnums.LEFT_TUPLE ); stream.writeInt( leftTuple.getLeftTupleSink().getId() ); //context.out.println( "LeftTuple sinkId:" + leftTuple.getLeftTupleSink().getId() ); writeLeftTuple( leftTuple, context, true ); } stream.writeShort( PersisterEnums.END ); //context.out.println( "InitialFact LeftTuples End" ); }
/** * OTN needs to override remove to avoid releasing the node ID, since OTN are * never removed from the rulebase in the current implementation */ protected void doRemove(final RuleRemovalContext context, final ReteooBuilder builder, final InternalWorkingMemory[] workingMemories) { if ( context.getCleanupAdapter() != null ) { for ( InternalWorkingMemory workingMemory : workingMemories ) { CleanupAdapter adapter = context.getCleanupAdapter(); final ObjectTypeNodeMemory memory = (ObjectTypeNodeMemory) workingMemory.getNodeMemory( this ); Iterator it = memory.memory.iterator(); for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) { InternalFactHandle handle = (InternalFactHandle) entry.getValue(); for ( LeftTuple leftTuple = handle.getFirstLeftTuple(); leftTuple != null; leftTuple = leftTuple.getLeftParentNext() ) { adapter.cleanUp( leftTuple, workingMemory ); } } } context.setCleanupAdapter( null ); } }
for ( LeftTuple leftTuple = factHandle.getFirstLeftTuple(); leftTuple != null; leftTuple = leftTuple.getLeftParentNext() ) { leftTuple.getLeftTupleSink().retractLeftTuple( leftTuple, context,
ModifyPreviousTuples modifyPreviousTuples = new ModifyPreviousTuples(handle.getFirstLeftTuple(), handle.getFirstRightTuple() ); handle.clearLeftTuples(); handle.clearRightTuples();
for ( LeftTuple leftTuple = handle.getFirstLeftTuple(); leftTuple != null; leftTuple = leftTuple.getLeftParentNext() ) { if ( leftTuple.getLeftTupleSink() == sink ) { return leftTuple;
for ( leftTuple = handle.getFirstLeftTuple(); leftTuple != null; leftTuple = leftTuple.getLeftParentNext() ) { if ( leftTuple.getLeftTupleSink() == sink ) { return leftTuple;