public boolean equals(final Object object) { if ( object == this ) { return true; } if ( !(object instanceof AgendaItem) ) { return false; } final AgendaItem otherItem = (AgendaItem) object; return (this.rtn.getRule().equals( otherItem.getRule() ) && this.tuple.equals( otherItem.getTuple() )); }
public SerializableActivation(Activation activation) { this.rule = activation.getRule(); this.factHandles = activation.getFactHandles(); this.propgationContext = activation.getPropagationContext(); if ( activation instanceof AgendaItem ) { declarations = ((org.drools.reteoo.RuleTerminalNode)((AgendaItem)activation).getTuple().getLeftTupleSink()).getDeclarations(); } else if ( activation instanceof SerializableActivation ) { this.declarations = ((SerializableActivation)activation).declarations; } else { throw new RuntimeException("Unable to get declarations " + activation); } this.active = activation.isActive(); }
public void cancelActivation(org.drools.runtime.rule.Activation act) { AgendaItem match = ( AgendaItem ) act; match.cancel(); if ( match.isActive() ) { LeftTuple leftTuple = match.getTuple(); leftTuple.getLeftTupleSink().retractLeftTuple( leftTuple, (PropagationContext) act.getPropagationContext(), workingMemory ); } }
public Object getProperty(String name, Object obj, VariableResolverFactory variableFactory) { AgendaItem item = ( AgendaItem ) obj; if ( "rule".equals( name ) ) { return item.getRule(); } else if ( "active".equals( name ) ) { return item.isActive(); } else if ( "objects".equals( name ) ) { return item.getObjects(); } else if ( "factHandles".equals( name ) ) { return item.getFactHandles(); } else if ( "declarationIDs".equals( name ) ) { return item.getDeclarationIDs(); } else if ( "this".equals( name ) ) { return item; } // FIXME hack as MVEL seems to be ignoring indexed variables VariableResolver vr = variableFactory.getNextFactory().getVariableResolver( name ); if ( vr != null ) { return vr.getValue(); } Declaration declr = item.getRuleTerminalNode().getSubRule().getOuterDeclarations().get( name ); if ( declr != null ) { return declr.getValue( null, item.getTuple().get( declr ).getObject() ); } else { return item.getRule().getMetaData().get( name ); } }
public static ProtobufMessages.Activation writeActivation(MarshallerWriteContext context, AgendaItem agendaItem) { ProtobufMessages.Activation.Builder _activation = ProtobufMessages.Activation.newBuilder(); Rule rule = agendaItem.getRule(); _activation.setPackageName(rule.getPackage()); _activation.setRuleName(rule.getName()); ProtobufMessages.Tuple.Builder _tb = ProtobufMessages.Tuple.newBuilder(); for (LeftTuple entry = agendaItem.getTuple(); entry != null; entry = entry.getParent()) { InternalFactHandle handle = entry.getLastHandle(); _tb.addHandleId(handle.getId()); } _activation.setTuple(_tb.build()); _activation.setSalience(agendaItem.getSalience()); _activation.setIsActivated(agendaItem.isActivated()); if (agendaItem.getActivationGroupNode() != null) { _activation.setActivationGroup(agendaItem.getActivationGroupNode().getActivationGroup().getName()); } if (agendaItem.getFactHandle() != null) { _activation.setHandleId(agendaItem.getFactHandle().getId()); } org.drools.core.util.LinkedList<LogicalDependency> list = agendaItem.getLogicalDependencies(); if (list != null && !list.isEmpty()) { for (LogicalDependency node = list.getFirst(); node != null; node = node.getNext()) { _activation.addLogicalDependency(((InternalFactHandle) node.getJustified()).getId()); } } return _activation.build(); }