Overview | Package | Class | Use | Tree | Serialized | Deprecated | Index | Help
| ABLE 2.3.0 07/13/2005 14:21:00
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.ibm.able.rules
Class AblePatternMatchLiteEngine

    java.lang.Object
      com.ibm.able.rules.AbleInferenceEngine
          com.ibm.able.rules.AblePatternMatchLiteEngine

All Implemented Interfaces:
  java.io.Serializable

public class AblePatternMatchLiteEngine
extends AbleInferenceEngine
implements java.io.Serializable

This class provides the inferencing algorithm for processing a set of pattern match rules in a ruleblock using data-driven or forward chaining. This is a simplified version of the Rete' AblePatternMatchEngine. It will produce identical results but uses a lighter-weight algorithm which may be less efficient than the Rete' engine but will less overhead. It may be appropriate for problems with small numbers of rules and/or working memory objects. In this engine, each pattern match rule is evaluated in each cycle.

The AblePatternMatchLiteEngine processes AbleAssertionRules and AblePatternMatchRules and ignores all others.

The major processing method is infer() which is called by the AbleRuleSet bean as part of the normal bean process() method.

Instances of this class are not directly constructed by the user but are dynamically created by the AbleRuleBlock init() method.

See Also:
  `AbleRuleSet`, `AbleRuleBlock`, `AbleAssertionRule`, `AblePatternMatchRule`, `AblePatternMatchEngine`, Serialized Form

Field Summary
`protected java.util.Hashtable` | `firedRuleBindingPairs`

Fields inherited from class com.ibm.able.rules.AbleInferenceEngine
`myDebugLevel, myRuleBlock, myRuleSet, myRulesFiredCount, myTracer, myWorkingMemory`

Constructor Summary
`AblePatternMatchLiteEngine(AbleRuleSet theRuleSet, AbleLogger theTracer, AbleRuleBlock theRuleBlock)` Create a new inference engine.

Method Summary
`protected void` | `addRuleToConflictSet(java.util.Vector theConflictSet, AblePatternMatchRule theRule)` Inserts the Rule into the conflict set based on priority.
`java.lang.Object` | `getControlParameter(java.lang.String theControlParameter)` Returns the specified control parameter on the associated inference engine.
`void` | `infer(AbleRuleBlock theRuleBlock)` Fire the rules in the ruleset using boolean rules of forward chaining inferencing.
`protected boolean` | `isDuplicateFiring(AbleRule theRule, java.util.Vector theBindings)`
`boolean` | `isRuleBlockValid(AbleRuleBlock theRuleBlock)` Make sure the current ruleblock is "executable" by this inference engine.
`protected void` | `logConflictSet(java.util.Vector conflictSet)` Write the contents of the conflict set (triggered rules) to the Inference trace log
`protected void` | `logWorkingMemory()` Write the contents of working memory out to the Inference trace log
`protected void` | `recordRuleFiring(AbleRule theRule, java.util.Vector theBindings)`
`void` | `setControlParameter(java.lang.String theControlParameter, java.lang.Object theValue)` Set the specified control parameter on the associated inference engine.
`protected void` | `setPatternMatchRuleBindings(AblePatternMatchRule theRule)` Set the bindings on a pattern-match (when-do) rule.

Methods inherited from class com.ibm.able.rules.AbleInferenceEngine
`allocateWorkingMemory, askUser, conditionalRulesValid, evalAntecedentClause, evalAntecedentExpression, evalAssertionClause, evalAssertionRule, evalConditionalRule, evalConsequentClause, evalDoUntilRule, evalDoWhileRule, evalForLoopRule, evalIfThenElseRule, evalPatternMatchRule, evalSwitchRule, evaluateDoActions, evalWhileDoRule, fireEngineBreakpoint, firePropertyChange, getRuleSet, getRulesFiredCount, getWorkingMemory, init, processAssertions, processConsequent, processConsequent, processConsequentClauses, processRuleBlock, reset, resetRuleSet, setControlParameters, setDebugLevel, setInferenceContext, setInferenceContext, setInferenceContext, setRuleSet, setWorkingMemory, startDebugConsole, stopDebugConsole, toString`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### firedRuleBindingPairs

    protected java.util.Hashtable firedRuleBindingPairs

Constructor Detail

### AblePatternMatchLiteEngine

    public AblePatternMatchLiteEngine(AbleRuleSet theRuleSet,
                                      AbleLogger theTracer,
                                      AbleRuleBlock theRuleBlock)

  Create a new inference engine.

Parameters:
  `theRuleSet` - A ruleset whose context is used for inferencing by this inference engine.

  `theTracer` - A tracer object to which this inference engine can log information. This may be null, in which case no information is logged.

  `theRuleBlock` - A ruleblock whose rules are to be used for inferencing by this inference engine.

Method Detail

### isRuleBlockValid

    public boolean isRuleBlockValid(AbleRuleBlock theRuleBlock)

  Make sure the current ruleblock is "executable" by this inference engine. Only assertion rules and pattern match rules are processed.

  The ruleblock is invalid if any of the following are present in the ruleblock:

  - Conditional rule
  - If-then-else rule
  - Predicate rule
  - Iteration rule

    All reasons for validation failures are appended to the AbleRuleSet's myIsExReason variable. If validation fails, the inference engine must call myRuleSet.addIsExReason(java.lang.String) to append the reason.

  Specified by:
    `isRuleBlockValid` in class `AbleInferenceEngine`
  Returns:
    true, if the ruleset is OK; false, if the ruleset is not executable.

### infer

    public void infer(AbleRuleBlock theRuleBlock)
               throws AbleDataException

  Fire the rules in the ruleset using boolean rules of forward chaining inferencing.

  The order of processing is as follows:

  1. Sequentially process all assertion rules in the ruleblock.
  2. Evaluate all pattern match rules using forward chaining and a working memory.

  Specified by:
    `infer` in class `AbleInferenceEngine`
  Parameters:
    `theRuleBlock` - The ruleblock to be processed.

  Throws:
    `AbleDataException` - When any error occurs.

### setPatternMatchRuleBindings

    protected void setPatternMatchRuleBindings(AblePatternMatchRule theRule)
                                        throws AbleDataException

  Set the bindings on a pattern-match (when-do) rule.

  Procesing is as follows:

  - Evaluate the pattern match clause.
  - If the match returns any bindings the rule is triggered and could be selected to fire.

  Throws:
    `AbleDataException` - when the data types are incompatible, or when the relational operator is invalid for the current situation or unrecognized.

### logWorkingMemory

    protected void logWorkingMemory()

  Write the contents of working memory out to the Inference trace log

### logConflictSet

    protected void logConflictSet(java.util.Vector conflictSet)

  Write the contents of the conflict set (triggered rules) to the Inference trace log

### addRuleToConflictSet

    protected void addRuleToConflictSet(java.util.Vector theConflictSet,
                                        AblePatternMatchRule theRule)
                                 throws AbleDataException

  Inserts the Rule into the conflict set based on priority.

  Parameters:
    `theConflictSet` - The Vector to which the rule is added.
    `theRule` - The Rule that needs to be added.
  Throws:
    `AbleDataException`

### setControlParameter

    public void setControlParameter(java.lang.String theControlParameter,
                                    java.lang.Object theValue)
                             throws AbleDataException

  Set the specified control parameter on the associated inference engine.

  Specified by:
    `setControlParameter` in class `AbleInferenceEngine`
  Throws:
    `AbleDataException`

### getControlParameter

    public java.lang.Object getControlParameter(java.lang.String theControlParameter)
                                         throws AbleDataException

  Returns the specified control parameter on the associated inference engine.

  Specified by:
    `getControlParameter` in class `AbleInferenceEngine`
  Throws:
    `AbleDataException`

### recordRuleFiring

    protected void recordRuleFiring(AbleRule theRule,
                                    java.util.Vector theBindings)

### isDuplicateFiring

    protected boolean isDuplicateFiring(AbleRule theRule,
                                        java.util.Vector theBindings)

Overview | Package | Class | Use | Tree | Serialized | Deprecated | Index | Help
| ABLE 2.3.0 07/13/2005 14:21:00
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

(C) Copyright IBM Corporation 1999, 2005