/** * Copyright 2005 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.spi; import java.io.Serializable; import java.util.IdentityHashMap; import java.util.Map; import org.drools.FactException; import org.drools.FactHandle; import org.drools.WorkingMemory; import org.drools.rule.Declaration; import org.drools.rule.Rule; import org.drools.runtime.Channel; import org.drools.runtime.ExitPoint; import org.drools.runtime.rule.RuleContext; import org.drools.runtime.rule.WorkingMemoryEntryPoint; /** * KnowledgeHelper implementation types are injected into consequenses * instrumented at compile time and instances passed at runtime. It provides * convenience methods for users to interact with the WorkingMemory. * <p> * Of particular interest is the update method as it allows an object to * be modified without having to specify the facthandle, because they are not * passed to the consequence at runtime. To achieve this the implementation will * need to lookup the fact handle of the object form the WorkingMemory. * * @author <a href="mailto:bob@werken.com">bob mcwhirter </a> * @author <a href="mailto:mproctor@codehaus.org">mark proctor</a> */ public interface KnowledgeHelper extends RuleContext, Serializable { public void setActivation(final Activation agendaItem); public void reset(); /** * Asserts an object, notice that it does not return the FactHandle * * @param object - * the object to be asserted * @throws FactException - * Exceptions can be thrown by conditions which are wrapped and * returned as a FactException */ void insert(Object object) throws FactException; /** * Asserts an object specifying that it implement the onPropertyChange * listener, notice that it does not return the FactHandle. * * @param object - * the object to be asserted * @param dynamic - * specifies the object implements onPropertyChangeListener * @throws FactException - * Exceptions can be thrown by conditions which are wrapped and * returned as a FactException */ void insert(Object object, boolean dynamic) throws FactException; public void insertLogical(Object object) throws FactException; public void insertLogical(Object object, boolean dynamic) throws FactException; public void cancelRemainingPreviousLogicalDependencies(); void update(FactHandle handle, Object newObject) throws FactException; void update( Object newObject ) throws FactException; void retract(FactHandle handle) throws FactException; void retract(Object object) throws FactException; public Object get(Declaration declaration); /** * @return - The rule name */ Rule getRule(); Tuple getTuple(); Activation getActivation(); WorkingMemory getWorkingMemory(); WorkingMemoryEntryPoint getEntryPoint( String id ); Map<String, WorkingMemoryEntryPoint> getEntryPoints(); /** * @deprecated Use {@link #getChannel(String)} instead. */ @Deprecated ExitPoint getExitPoint( String id ); /** * @deprecated Use {@link #getChannels()} instead. */ @Deprecated Map<String, ExitPoint> getExitPoints(); Channel getChannel( String id ); Map<String, Channel> getChannels(); void setFocus(String focus); public Declaration getDeclaration(String identifier); public void halt(); public IdentityHashMap<Object, FactHandle> getIdentityMap(); public void setIdentityMap(IdentityHashMap<Object, FactHandle> identityMap); <T> T getContext(Class<T> contextClass); }