Class ConstraintRule

java.lang.Object
com.aquima.interactions.rule.constraint.table.ConstraintRule
All Implemented Interfaces:
IBusinessRule, IConstraint, Serializable

public class ConstraintRule extends Object implements IConstraint
This constraint uses a decision table to determine which values are valid.
Since:
5.0
Author:
O. Kerpershoek
See Also:
  • Constructor Details

    • ConstraintRule

      public ConstraintRule(IExpressionParser parser, String targetAttribute, DataType targetType, DecisionTable decisionTable, boolean r4Parser)
      Constructs the constraint rule from a decision table model.
      Parameters:
      parser - The parser that should be used to parse expression from the decision table.
      targetAttribute - The attribute the constraint is defined for.
      targetType - The data type of the target attribute.
      decisionTable - The decision table model containing the constraint logic.
      r4Parser - Boolean indicating if conditions should be fixed for a release 4 parser.
      Throws:
      RuleEngineException - This exception is thrown when expression from the decision table could not be parsed.
  • Method Details

    • getTargetAttributes

      public String[] getTargetAttributes()
      Description copied from interface: IBusinessRule
      This method should return an array of attribute names that the rule applies on. When this method returns multiple attribute names, all attributes in the array should belong to the same entity type.
      Specified by:
      getTargetAttributes in interface IBusinessRule
      Returns:
      An array which is never null or zero-length.
    • getName

      public String getName()
      Description copied from interface: IBusinessRule
      This method returns the unique name for the business rule.
      Specified by:
      getName in interface IBusinessRule
      Returns:
      the unique name for the business rule.
    • getSourceScopeObjects

      public String[] getSourceScopeObjects()
      Description copied from interface: IBusinessRule
      This method should return a list of objects that are required to be in scope in order for the rule to operate successfully. There are three kinds of object references that a rule may require to be in scope:
      • Type reference
        A type reference is declared by an entity name followed by an asterisk (*), for example Product*. Type references can be used when the rule uses information about the existence of instances of that type, for example when a rule contains COUNT( ALL Product ).
      • Named reference
        A named reference is declared by an entity name followed by square brackets containing the name of the instance that is referred. Named references usually refer to static instances that are declared in the metamodel, for example Product[Unica]
      • Direct reference
        A direct reference is declared by the entity name of the object that is referred to. A direct reference is a reference to an active object of the specified type. When a rule declares a direct reference, the object referred to must be of the same type of the object that the rule applies on. A business rule will be evaluated within its own context, and may thus not depend on active instances from other contexts like the current page. Only the object that triggered the rule will be available in the context. For example a rule calculating the age of a person by using the person.birth_date will declare a direct reference Person indicating that it depends on an instance of Person to be active.
      Specified by:
      getSourceScopeObjects in interface IBusinessRule
      Returns:
      An array which is never null but can be zero-length.
    • getRuleGroupNames

      public String[] getRuleGroupNames()
      Description copied from interface: IBusinessRule
      This method returns an array containing the names of the rule groups this rule belongs to. If the rule does not belong to a specific rule group, the returned value may either be null or an empty array. Rules that belong to a rule group will only be evaluated when one (or more) of the rule groups are active. Rule groups are sometimes referred to as rule clusters.
      Specified by:
      getRuleGroupNames in interface IBusinessRule
      Returns:
      an array containing the names of the rule groups this rule belongs to.
    • parseNextActions

      protected DomainActionRule[] parseNextActions(IExpressionParser parser, Action[] actions)
    • narrow

      public List<IPrimitiveValue> narrow(InferenceContext context, List<IPrimitiveValue> currentValues)
      Description copied from interface: IConstraint
      This method should narrow the current set of values and return a new set containing only the values that are valid for this constraint. This method is not allowed to add any value that is not present in the original set of current values.
      Specified by:
      narrow in interface IConstraint
      Parameters:
      context - InferenceContext
      currentValues - Collection
      Returns:
      List containing the subset of current values that are valid for this constraint.