package jadex.rules.rulesystem.rete.constraints; import jadex.rules.rulesystem.rete.Tuple; import jadex.rules.rulesystem.rete.extractors.AttributeSet; import jadex.rules.state.IOAVState; import jadex.rules.state.OAVAttributeType; /** * Interface for all constraint evaluators. They are used * to abstract away the tests nodes have to perform. */ public interface IConstraintEvaluator { /** * Evaluate the constraints given the right object, left tuple * (null for alpha nodes) and the state. * @param right The right input object. * @param left The left input tuple. * @param state The working memory. */ public boolean evaluate(Object right, Tuple left, IOAVState state); /** * Test if a constraint evaluator is affected from a * change of a certain attribute. * @param tupleindex The tuple index. * @param attr The attribute. * @return True, if affected. */ public boolean isAffected(int tupleindex, OAVAttributeType attr); /** * Get the set of relevant attribute types. */ public AttributeSet getRelevantAttributes(); /** * Get the set of indirect attribute types. * I.e. attributes of objects, which are not part of an object conditions * (e.g. for chained extractors) * @return The relevant attribute types. */ public AttributeSet getIndirectAttributes(); }