org.drools.spi
Interface Evaluator

All Superinterfaces:
org.drools.runtime.rule.Evaluator, Serializable

public interface Evaluator
extends Serializable, org.drools.runtime.rule.Evaluator

A public interface to be implemented by all evaluators


Method Summary
 boolean evaluate(InternalWorkingMemory workingMemory, InternalReadAccessor extractor, Object object, FieldValue value)
          Evaluates the expression using the provided parameters.
 boolean evaluate(InternalWorkingMemory workingMemory, InternalReadAccessor leftExtractor, Object left, InternalReadAccessor rightExtractor, Object right)
          Evaluates the expression using the provided parameters.
 boolean evaluateCachedLeft(InternalWorkingMemory workingMemory, VariableRestriction.VariableContextEntry context, Object right)
          Evaluates the expression using the provided parameters.
 boolean evaluateCachedRight(InternalWorkingMemory workingMemory, VariableRestriction.VariableContextEntry context, Object left)
          Evaluates the expression using the provided parameters.
 ValueType getCoercedValueType()
          Returns the value type this evaluator will coerce operands to, during evaluation.
 Interval getInterval()
          In case this is a temporal evaluator, returns the interval in which this evaluator may match the target fact
 org.drools.runtime.rule.Operator getOperator()
          Returns the operator representation object for this evaluator
 ValueType getValueType()
          Returns the type of the values this evaluator operates upon.
 boolean isTemporal()
          Returns true if this evaluator implements a temporal evaluation, i.e., a time sensitive evaluation whose properties of matching only events within an specific time interval can be used for determining event expirations automatically.
 Object prepareLeftObject(InternalFactHandle handle)
          There are evaluators that operate on fact attributes, there are evaluators that operate on fact handle attributes (metadata), and there are evaluators that can operate in either one.
 Object prepareRightObject(InternalFactHandle handle)
          There are evaluators that operate on fact attributes, there are evaluators that operate on fact handle attributes (metadata), and there are evaluators that can operate in either one.
 

Method Detail

getValueType

ValueType getValueType()
Returns the type of the values this evaluator operates upon.

Returns:

getOperator

org.drools.runtime.rule.Operator getOperator()
Returns the operator representation object for this evaluator

Specified by:
getOperator in interface org.drools.runtime.rule.Evaluator
Returns:

getCoercedValueType

ValueType getCoercedValueType()
Returns the value type this evaluator will coerce operands to, during evaluation. This is useful for operators like "memberOf", that always convert to Object when evaluating, independently of the source operand value type.

Returns:

prepareLeftObject

Object prepareLeftObject(InternalFactHandle handle)
There are evaluators that operate on fact attributes, there are evaluators that operate on fact handle attributes (metadata), and there are evaluators that can operate in either one. This method allows the evaluator to prepare the left object for evaluation. That includes, unwrapping the object from the handle, if necessary. It is important to note that the concept of left and right is based on the Rete notion of left and right, where right corresponds to the current pattern, while left is a binding to a previous pattern.

Parameters:
handle -
Returns:

prepareRightObject

Object prepareRightObject(InternalFactHandle handle)
There are evaluators that operate on fact attributes, there are evaluators that operate on fact handle attributes (metadata), and there are evaluators that can operate in either one. This method allows the evaluator to prepare the right object for evaluation. That includes, unwrapping the object from the handle, if necessary. It is important to note that the concept of left and right is based on the Rete notion of left and right, where right corresponds to the current pattern, while left is a binding to a previous pattern.

Parameters:
handle -
Returns:

evaluate

boolean evaluate(InternalWorkingMemory workingMemory,
                 InternalReadAccessor extractor,
                 Object object,
                 FieldValue value)
Evaluates the expression using the provided parameters. This method is used when evaluating alpha-constraints, i.e., a fact attribute against a constant value. For instance: Person( name == "Bob" ) So, it uses a constant value "Bob" that is sent into the method as the FieldValue (value), and compares it to the value of the name field, read by using the extractor on the fact instance (object1).

Parameters:
workingMemory - The current working memory
extractor - The extractor used to get the field value from the object
object - The source object to evaluate, i.e., the fact
value - The actual value to compare to, i.e., the constant value.
Returns:
Returns true if evaluation is successful. false otherwise.

evaluate

boolean evaluate(InternalWorkingMemory workingMemory,
                 InternalReadAccessor leftExtractor,
                 Object left,
                 InternalReadAccessor rightExtractor,
                 Object right)
Evaluates the expression using the provided parameters. This method is used for internal indexing and hashing, when drools needs to extract and evaluate both left and right values at once. For instance: Person( name == $someName ) This method will be used to extract and evaluate both the "name" attribute and the "$someName" variable at once.

Parameters:
workingMemory - The current working memory
leftExtractor - The extractor to read the left value. In the above example, the "$someName" variable value.
left - The source object from where the value of the variable is extracted.
rightExtractor - The extractor to read the right value. In the above example, the "name" attribute value.
right - The right object from where to extract the value. In the above example, that is the "Person" instance from where to extract the "name" attribute.
Returns:
Returns true if evaluation is successful. false otherwise.

evaluateCachedLeft

boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
                           VariableRestriction.VariableContextEntry context,
                           Object right)
Evaluates the expression using the provided parameters. This method is used when evaluating left-activated beta-constraints, i.e., a fact attribute against a variable value, that is activated from the left. For instance: Person( name == $someName ) This method will be used when a new $someName variable is bound. So it will cache the value of $someName and will iterate over the right memory (Person instances) evaluating each occurrence.

Parameters:
workingMemory - The current working memory
context - The previously cached context, including the left value and the extractor for the right value.
right - The right object, from where to extract the value. In the above example, that is the "Person" instance from where to extract the "name" attribute.
Returns:
Returns true if evaluation is successful. false otherwise.

evaluateCachedRight

boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
                            VariableRestriction.VariableContextEntry context,
                            Object left)
Evaluates the expression using the provided parameters. This method is used when evaluating right-activated beta-constraints, i.e., a fact attribute against a variable value, that is activated from the right. For instance: Person( name == $someName ) This method will be used when a new Person instance is evaluated. So it will cache the value of the "Person" instance and will iterate over the left memory comparing it to each "$someName" bound values.

Parameters:
workingMemory - The current working memory
context - The previously cached context, including the right value and the extractor for the left value.
left - The left object, from where to extract the bound variable. In the above example, that is the "$someName" variable value.
Returns:
Returns true if evaluation is successful. false otherwise.

isTemporal

boolean isTemporal()
Returns true if this evaluator implements a temporal evaluation, i.e., a time sensitive evaluation whose properties of matching only events within an specific time interval can be used for determining event expirations automatically.

Specified by:
isTemporal in interface org.drools.runtime.rule.Evaluator
Returns:
true if the evaluator is a temporal evaluator.

getInterval

Interval getInterval()
In case this is a temporal evaluator, returns the interval in which this evaluator may match the target fact

Returns:


Copyright © 2001-2012 JBoss by Red Hat. All Rights Reserved.