|
ABLE 2.0.0 07/02/2003 10:25:01 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--com.ibm.able.rules.AbleInferenceEngine | +--com.ibm.able.rules.AbleForwardChainInferenceEngine
This class provides the inferencing algorithm for processing a set of rules in a ruleblock using data-driven or forward chaining.
The AbleForwardChainInferenceEngine processes AbleAssertionRules and AbleConditionalRules and ignores all others. The control strategy ARL.ControlStrategy parameter can be used to specify several alternative control algorithms. These include:
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.
AbleRuleSet
,
AbleRuleBlock
,
AbleAssertionRule
,
AbleConditionalRule
, Serialized FormField Summary | |
---|---|
static int |
FIRE_ALL_RULES
Control strategy: cycle until no more rules can fire |
static int |
FIRE_N_RULES
Control strategy: find first N rules to fire, then stop |
static int |
FIRE_ONE_RULE
Control strategy: find first rule to fire, then stop |
protected int |
myControlStrategy
The control strategy used by the engine, one of : |
protected int |
myNumberOfRulesToFire
The number of rules to fire when FIRE_N_RULES is the control strategy |
Fields inherited from class com.ibm.able.rules.AbleInferenceEngine |
---|
myDebugLevel, myRuleBlock, myRuleSet, myRulesFiredCount, myTracer, myWorkingMemory |
Constructor Summary | |
---|---|
AbleForwardChainInferenceEngine(AbleRuleSet theRuleSet,
AbleLogger theTracer)
Create a new inference engine. |
|
AbleForwardChainInferenceEngine(AbleRuleSet theRuleSet,
AbleLogger theTracer,
AbleRuleBlock theRuleBlock)
Create a new inference engine. |
Method Summary | |
---|---|
void |
addRuleToConflictSet(java.util.Vector theConflictSet,
AbleRule theRule)
Inserts the Rule into the conflict set based on priority and specificity. |
static java.lang.String |
Copyright()
Determine the copyright of this class. |
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 conditional rules and forward chaining inferencing. |
boolean |
isRuleBlockValid(AbleRuleBlock theRuleBlock)
Make sure the current ruleblock is "executable" by examining the rule types and rule object configurations. |
protected void |
logConflictSet(java.util.Vector conflictSet)
Write the contents of the conflict set (triggered rules) to the Inference trace log. |
protected void |
reevaluateClausesWithChangedVariable(AbleClauseReferences theClauseReferences)
Re-evaluate, if necessary, the specified clauses that contain a reference to a variable whose current value has just changed. |
void |
setControlParameter(java.lang.String theControlParameter,
java.lang.Object theValue)
Set the specified control parameter on the associated inference engine. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final int FIRE_ALL_RULES
public static final int FIRE_ONE_RULE
public static final int FIRE_N_RULES
protected int myControlStrategy
protected int myNumberOfRulesToFire
Constructor Detail |
public AbleForwardChainInferenceEngine(AbleRuleSet theRuleSet, AbleLogger theTracer)
theRuleSet
- A ruleset whose rules are to be 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.
public AbleForwardChainInferenceEngine(AbleRuleSet theRuleSet, AbleLogger theTracer, AbleRuleBlock theRuleBlock)
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 |
public boolean isRuleBlockValid(AbleRuleBlock theRuleBlock)
The ruleblock is invalid if any of the following are present in the ruleblock:
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.
isRuleBlockValid
in class AbleInferenceEngine
public void infer(AbleRuleBlock theRuleBlock) throws AbleDataException
The infer() method is called by the AbleRuleSet process() method as part of the overall ruleset bean processing sequence.
The order of processing is as follows:
infer
in class AbleInferenceEngine
theRuleBlock
- The ruleblock to be processed.
AbleDataException
- When any error occurs.protected void reevaluateClausesWithChangedVariable(AbleClauseReferences theClauseReferences) throws AbleDataException
theClauseReferences
- A collection of clauses that reference some variable
whose current value has just changed.
public void addRuleToConflictSet(java.util.Vector theConflictSet, AbleRule theRule) throws AbleDataException
conflictSet
- the Vector to which the rule is addedtheRule
- the Rule that needs to be addedprotected void logConflictSet(java.util.Vector conflictSet)
public void setControlParameter(java.lang.String theControlParameter, java.lang.Object theValue) throws AbleDataException
setControlParameter
in class AbleInferenceEngine
public java.lang.Object getControlParameter(java.lang.String theControlParameter) throws AbleDataException
getControlParameter
in class AbleInferenceEngine
public static java.lang.String Copyright()
|
ABLE 2.0.0 07/02/2003 10:25:01 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |