[jboss-svn-commits] JBL Code SVN: r26664 - in labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools: base and 15 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 21 22:32:46 EDT 2009
Author: dsotty
Date: 2009-05-21 22:32:45 -0400 (Thu, 21 May 2009)
New Revision: 26664
Modified:
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/BaseImperfectEvaluator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/ImplicationBetaConstraint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/NamedEntryPoint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/TupleStartEqualsConstraint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/IntervalDegree.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IDegreeFactory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IntervalDegreeFactory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleDegreeFactory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleFuzzyDegreeFactory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDegreeCombiner.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IMergeStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/INullHandlingStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/NegationOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/DefaultIntervalMergeStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/DefaultIntervalNullHandlingStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDiscountOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDoubleMPOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalEquivOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalExistsOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalForAnyOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalForallOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalIntersectionOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasAndOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasOrOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalMaxOrOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalMinAndOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalModusPonensOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalNegationOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalXorOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDotAnd.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDoubleMPOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleEquiv.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleIdentityOperator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasAnd.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasOr.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinAnd.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNot.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNullHandlingStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleProbSumOr.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleVeryModifier.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleXor.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/FuzzyDomain.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/FuzzySet.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/NumericDomainFuzzySet.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/FuzzyNumericEvaluator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/MockEvaluator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluatorDefinition.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/SeemsEvaluator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/SeemsEvaluatorDefinition.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeLeftTupleSinkAdapter.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EntryPointNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Evaluation.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvaluationTemplate.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/GammaMemory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectExistsNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/OperatorInstaller.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Rete.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SetCompositeEvaluation.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SingleEvaluationTemplate.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SingleLeftTupleSinkAdapter.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ImperfectGroupElementBuilder.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/filters/DefaultIntervalFilterStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/filters/SimpleFilterStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/AndConstraint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/GroupElement.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/GroupElementFactory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/MutableTypeConstraint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/OrConstraint.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
Log:
Major update
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -136,6 +136,7 @@
private String ruleBaseUpdateHandler;
private boolean imperfect;
+
private EventProcessingMode eventProcessingMode;
@@ -155,6 +156,7 @@
private NodeInstanceFactoryRegistry processNodeInstanceFactoryRegistry;
private String imperfectFactoryName;
+ private boolean cwa;
private transient ClassLoader classLoader;
@@ -185,6 +187,7 @@
out.writeInt( maxThreads );
out.writeObject( eventProcessingMode );
out.writeObject(imperfectFactoryName);
+ out.writeBoolean(cwa);
}
public void readExternal(ObjectInput in) throws IOException,
@@ -213,6 +216,7 @@
maxThreads = in.readInt();
eventProcessingMode = (EventProcessingMode) in.readObject();
imperfectFactoryName = (String) in.readObject();
+ cwa = in.readBoolean();
}
/**
@@ -304,12 +308,16 @@
setEventProcessingMode( EventProcessingMode.determineAssertBehaviour( StringUtils.isEmpty( value ) ? "cloud" : value ) );
} else if ( name.equals( "org.drools.chance.factory" ) ) {
setFactoryName(value);
+ } else if ( name.equals( "org.drools.chance.cwa" ) ) {
+ setClosedWorldAssumption(StringUtils.isEmpty( value ) ? true : Boolean.valueOf( value ));
} else if ( name.equals( "org.drools.chance.enable" ) ) {
- setImperfectActive(Boolean.parseBoolean(value));
+ setImperfectActive(StringUtils.isEmpty( value ) ? true : Boolean.valueOf( value ));
}
}
- public String getProperty(String name) {
+
+
+ public String getProperty(String name) {
name = name.trim();
if ( StringUtils.isEmpty( name ) ) {
return null;
@@ -357,7 +365,9 @@
return getEventProcessingMode().toExternalForm();
} else if ( name.equals( "org.drools.chance.factory" ) ) {
return getFactoryName();
- }
+ } else if ( name.equals( "org.drools.chance.cwa" ) ) {
+ return Boolean.toString( getClosedWorldAssumption());
+ }
return null;
}
@@ -462,11 +472,21 @@
setFactoryName(this.chainedProperties.getProperty("org.drools.chance.factory", "org.drools.degrees.factory.SimpleDegreeFactory"));
setImperfectActive( Boolean.valueOf( this.chainedProperties.getProperty("org.drools.chance.enable", "false")).booleanValue());
+
+ setClosedWorldAssumption( Boolean.valueOf( this.chainedProperties.getProperty("org.drools.chance.cwa", "true")).booleanValue());
}
private void setImperfectActive(boolean booleanValue) {
this.imperfect = booleanValue;
}
+
+ private void setClosedWorldAssumption(boolean b) {
+ this.cwa = b;
+ }
+
+ public boolean getClosedWorldAssumption() {
+ return this.cwa;
+ }
/**
* Makes the configuration object immutable. Once it becomes immutable,
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/BaseImperfectEvaluator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/BaseImperfectEvaluator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/BaseImperfectEvaluator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -10,6 +10,7 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.factory.IDegreeFactory;
import org.drools.reteoo.ImperfectRuleBase;
+import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
import org.drools.spi.FieldValue;
import org.drools.spi.InternalReadAccessor;
@@ -26,8 +27,9 @@
public abstract class BaseImperfectEvaluator extends BaseEvaluator {
- public BaseImperfectEvaluator(final ValueType type, final Operator operator) {
+ public BaseImperfectEvaluator(final ValueType type, final Operator operator, String parameters) {
super(type,operator);
+ this.parseParameters( parameters );
}
@@ -40,8 +42,107 @@
+ public boolean evaluate(InternalWorkingMemory workingMemory,
+ final InternalReadAccessor leftExtractor,
+ final Object left,
+ final InternalReadAccessor rightExtractor,
+ final Object right) {
+ return evaluate(workingMemory,
+ getFactory(workingMemory),
+ leftExtractor,
+ left,
+ rightExtractor,
+ right).toBoolean();
+ }
+
+ public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
+ final VariableContextEntry context,
+ final Object left) {
+ return evaluateCachedRight(workingMemory,
+ context,
+ getFactory(workingMemory),
+ left).toBoolean();
+ }
+
+ public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
+ final VariableContextEntry context,
+ final Object right) {
+ return evaluateCachedLeft(workingMemory,
+ context,
+ getFactory(workingMemory),
+ right).toBoolean();
+ }
+
+ public boolean evaluate(InternalWorkingMemory workingMemory,
+ final InternalReadAccessor extractor,
+ final Object object,
+ final FieldValue value) {
+ return evaluate(workingMemory,
+ getFactory(workingMemory),
+ extractor,
+ object,
+ value).toBoolean();
+ }
+
+
+
+
+
+
+
+ public IDegree evaluate(InternalWorkingMemory workingMemory,
+ IDegreeFactory factory, InternalReadAccessor extractor,
+ Object object1, FieldValue value) {
+
+ Object field = extractor.getValue(object1);
+
+ return eval(field, value, factory);
+ }
+
+ public IDegree evaluate(InternalWorkingMemory workingMemory,
+ IDegreeFactory factory, InternalReadAccessor leftExtractor,
+ Object left, InternalReadAccessor rightExtractor, Object right) {
+
+ Object leftArg = leftExtractor.getValue(workingMemory,left);
+ Object rightArg = rightExtractor.getValue(workingMemory,right);
+
+ return eval(leftArg, rightArg, factory);
+ }
+ public IDegree evaluateCachedLeft(InternalWorkingMemory workingMemory,
+ VariableContextEntry context, IDegreeFactory factory, Object object1) {
+
+ Object v1 = ((ObjectVariableContextEntry) context).left;
+ Object v2 = object1;
+
+ return eval(v1,v2,factory);
+ }
+
+ public IDegree evaluateCachedRight(InternalWorkingMemory workingMemory,
+ VariableContextEntry context, IDegreeFactory factory, Object object) {
+
+ Object o1 = object;
+ Object o2 = ((ObjectVariableContextEntry) context).right;
+
+ return eval(o1,o2,factory);
+
+ }
+
+
+ protected abstract IDegree eval(Object left, Object right, IDegreeFactory factory);
+
+
+ public String toString() {
+ return getOperator().getOperatorString() ;
+ }
+
+
+
+ protected void parseParameters(String s) {
+
+ }
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -285,58 +285,119 @@
-
+ public IDegree getConsequenceDegree() {
+ return consequenceDegree;
+ }
public void setConsequenceDegree(IDegree deg) {
this.consequenceDegree = deg;
}
+
+
+ public Evaluation getEvaluation() {
+ return evaluation;
+ }
+
+ public void setEvaluation(Evaluation eval) {
+ this.evaluation = eval;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
public void injectKey(ArgList args, String field, String op, String value) {
System.out.println("\n"+this.getClass()+" : KH injects a rule for degree "+getConsequenceDegree());
workingMemory.inject(this.getRule().getName(),
args,
new ConstraintKey(field,op,value),
- getConsequenceDegree());
+ getConsequenceDegree(),
+ false);
}
+ public void injectKey(ArgList args, String field, String op, String value, boolean killer) {
+ System.out.println("\n"+this.getClass()+" : KH injects a rule for degree "+getConsequenceDegree());
+ workingMemory.inject(this.getRule().getName(),
+ args,
+ new ConstraintKey(field,op,value),
+ getConsequenceDegree(),
+ killer);
+ }
-
-
- public IDegree getConsequenceDegree() {
- return consequenceDegree;
- }
-
- public void injectKey(Object arg, String field, String op, String value) {
- this.injectKey(new ArgList(arg), field, op, value);
- }
-
- public void injectKey(Object[] args, String field, String op, String value) {
- this.injectKey(new ArgList(args), field, op, value);
+ public void injectKey(Object arg, String key) {
+ workingMemory.inject(this.getRule().getName(),
+ new ArgList(arg),
+ new ConstraintKey(key),
+ getConsequenceDegree(),
+ false);
}
-
- public void injectKey(Object arg, String key) {
+ public void injectKey(Object arg, String key, boolean killer) {
workingMemory.inject(this.getRule().getName(),
new ArgList(arg),
new ConstraintKey(key),
- getConsequenceDegree());
+ getConsequenceDegree(),
+ killer);
}
+ public void rejectKey(Object arg, String key) {
+ workingMemory.reject(this.getRule().getName(),
+ new ArgList(arg),
+ new ConstraintKey(key),
+ getConsequenceDegree(),
+ false);
+
+ }
+ public void rejectKey(Object arg, String key, boolean killer) {
+ workingMemory.reject(this.getRule().getName(),
+ new ArgList(arg),
+ new ConstraintKey(key),
+ getConsequenceDegree(),
+ killer);
+
+ }
+
public void injectKey(Object[] args, String key) {
workingMemory.inject(this.getRule().getName(),
new ArgList(args),
new ConstraintKey(key),
- getConsequenceDegree());
+ getConsequenceDegree(),
+ false);
}
+ public void injectKey(Object[] args, String key, boolean killer) {
+ workingMemory.inject(this.getRule().getName(),
+ new ArgList(args),
+ new ConstraintKey(key),
+ getConsequenceDegree(),
+ killer);
+ }
+ public void rejectKey(Object[] args, String key) {
+ workingMemory.reject(this.getRule().getName(),
+ new ArgList(args),
+ new ConstraintKey(key),
+ getConsequenceDegree(),
+ false);
+ }
+ public void rejectKey(Object[] args, String key, boolean killer) {
+ workingMemory.reject(this.getRule().getName(),
+ new ArgList(args),
+ new ConstraintKey(key),
+ getConsequenceDegree(),
+ killer);
+ }
- public Evaluation getEvaluation() {
- return evaluation;
- }
-
- public void setEvaluation(Evaluation eval) {
- this.evaluation = eval;
- }
@@ -345,33 +406,176 @@
workingMemory.inject(this.getRule().getName(),
new ArgList(arg),
key,
- getConsequenceDegree());
+ getConsequenceDegree(),
+ false);
}
+ public void injectId(Object arg, String id, boolean killer) {
+ ConstraintKey key = workingMemory.retrieveKeyForId(id);
+ workingMemory.inject(this.getRule().getName(),
+ new ArgList(arg),
+ key,
+ getConsequenceDegree(),
+ killer);
+ }
+ public void rejectId(Object arg, String id) {
+ ConstraintKey key = workingMemory.retrieveKeyForId(id);
+ workingMemory.reject(this.getRule().getName(),
+ new ArgList(arg),
+ key,
+ getConsequenceDegree(),
+ false);
+ }
+ public void rejectId(Object arg, String id, boolean killer) {
+ ConstraintKey key = workingMemory.retrieveKeyForId(id);
+ workingMemory.reject(this.getRule().getName(),
+ new ArgList(arg),
+ key,
+ getConsequenceDegree(),
+ killer);
+ }
+
+
public void injectId(Object[] args, String id) {
ConstraintKey key = workingMemory.retrieveKeyForId(id);
workingMemory.inject(this.getRule().getName(),
new ArgList(args),
key,
- getConsequenceDegree());
+ getConsequenceDegree(),
+ false);
}
+ public void injectId(Object[] args, String id,boolean killer) {
+ ConstraintKey key = workingMemory.retrieveKeyForId(id);
+ workingMemory.inject(this.getRule().getName(),
+ new ArgList(args),
+ key,
+ getConsequenceDegree(),
+ killer);
+ }
+ public void rejectId(Object[] args, String id) {
+ ConstraintKey key = workingMemory.retrieveKeyForId(id);
+ workingMemory.reject(this.getRule().getName(),
+ new ArgList(args),
+ key,
+ getConsequenceDegree(),
+ false);
+ }
+ public void rejectId(Object[] args, String id,boolean killer) {
+ ConstraintKey key = workingMemory.retrieveKeyForId(id);
+ workingMemory.reject(this.getRule().getName(),
+ new ArgList(args),
+ key,
+ getConsequenceDegree(),
+ killer);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ public void injectKey(Object arg, String field, String op, String value) {
+ this.injectKey(new ArgList(arg), field, op, value,false);
+ }
+ public void injectKey(Object arg, String field, String op, String value, boolean killer) {
+ this.injectKey(new ArgList(arg), field, op, value,killer);
+ }
+ public void rejectKey(Object arg, String field, String op, String value) {
+ this.rejectKey(new ArgList(arg), field, op, value,false);
+ }
+ public void rejectKey(Object arg, String field, String op, String value, boolean killer) {
+ this.rejectKey(new ArgList(arg), field, op, value, killer);
+ }
+
+
+
+
+ public void injectKey(Object[] args, String field, String op, String value) {
+ this.injectKey(new ArgList(args), field, op, value,false);
+ }
+ public void injectKey(Object[] args, String field, String op, String value, boolean killer) {
+ this.injectKey(new ArgList(args), field, op, value, killer);
+ }
+ public void rejectKey(Object[] args, String field, String op, String value) {
+ this.rejectKey(new ArgList(args), field, op, value, false);
+ }
+ public void rejectKey(Object[] args, String field, String op, String value, boolean killer) {
+ this.rejectKey(new ArgList(args), field, op, value, killer);
+ }
+
+
+
+
public void inject(Object arg, String field, String op, String value) {
- injectKey(arg,field,op,value);
-
+ injectKey(arg,field,op,value,false);
}
+ public void inject(Object arg, String field, String op, String value, boolean killer) {
+ injectKey(arg,field,op,value,killer);
+ }
+ public void reject(Object arg, String field, String op, String value) {
+ rejectKey(arg,field,op,value,false);
+ }
+ public void reject(Object arg, String field, String op, String value, boolean killer) {
+ rejectKey(arg,field,op,value, killer);
+ }
+
+
public void inject(Object[] args, String field, String op, String value) {
- injectKey(args,field,op,value);
+ injectKey(args,field,op,value,false);
}
+ public void inject(Object[] args, String field, String op, String value, boolean killer) {
+ injectKey(args,field,op,value,killer);
+ }
+ public void reject(Object[] args, String field, String op, String value) {
+ rejectKey(args,field,op,value,false);
+ }
+ public void reject(Object[] args, String field, String op, String value,boolean killer) {
+ rejectKey(args,field,op,value,killer);
+ }
+
+
public void inject(Object arg, String key) {
- injectKey(arg,key);
+ injectKey(arg,key,false);
}
+ public void inject(Object arg, String key,boolean killer) {
+ injectKey(arg,key,killer);
+ }
+ public void reject(Object arg, String key) {
+ rejectKey(arg,key,false);
+ }
+ public void reject(Object arg, String key,boolean killer) {
+ rejectKey(arg,key,killer);
+ }
+
+
public void inject(Object[] args, String key) {
- injectKey(args,key);
+ injectKey(args,key,false);
}
+ public void inject(Object[] args, String key,boolean killer) {
+ injectKey(args,key,killer);
+ }
+ public void reject(Object[] args, String key) {
+ rejectKey(args,key,false);
+ }
+ public void reject(Object[] args, String key, boolean killer) {
+ rejectKey(args,key,killer);
+ }
+
+
+
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/SequentialKnowledgeHelper.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -285,4 +285,162 @@
// TODO Auto-generated method stub
}
+
+ public void reject(Object arg, String field, String op, String value) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void reject(Object[] args, String field, String op, String value) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void reject(Object arg, String key) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void reject(Object[] args, String key) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectId(Object arg, String key) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectId(Object[] args, String key) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectKey(Object arg, String field, String op, String value) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectKey(Object[] args, String field, String op, String value) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectKey(Object arg, String key) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectKey(Object[] args, String key) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void inject(Object arg, String field, String op, String value,
+ boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void inject(Object[] args, String field, String op, String value,
+ boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void inject(Object arg, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void inject(Object[] args, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void injectId(Object arg, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void injectId(Object[] args, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void injectKey(Object arg, String field, String op, String value,
+ boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void injectKey(Object[] args, String field, String op, String value,
+ boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void injectKey(Object arg, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void injectKey(Object[] args, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void reject(Object arg, String field, String op, String value,
+ boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void reject(Object[] args, String field, String op, String value,
+ boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void reject(Object arg, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void reject(Object[] args, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectId(Object arg, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectId(Object[] args, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectKey(Object arg, String field, String op, String value,
+ boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectKey(Object[] args, String field, String op, String value,
+ boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectKey(Object arg, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void rejectKey(Object[] args, String key, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -55,6 +55,8 @@
import org.drools.definition.process.Process;
import org.drools.degrees.IDegree;
import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.operators.IDegreeCombiner;
+import org.drools.degrees.operators.NegationOperator;
import org.drools.event.AgendaEventListener;
import org.drools.event.AgendaEventSupport;
import org.drools.event.RuleBaseEventListener;
@@ -1943,11 +1945,15 @@
+ public void reject(String ruleName, ArgList args, ConstraintKey key, IDegree degree, boolean killer) {
+ NegationOperator non = (NegationOperator) ((ImperfectRuleBase) getRuleBase()).getDegreeFactory().getNegationOperator();
+ IDegree negDegree = non.negate(degree);
+ inject(ruleName, args, key, negDegree, killer);
+ }
-
- public void inject(String ruleName, ArgList args, ConstraintKey key, IDegree degree) {
+ public void inject(String ruleName, ArgList args, ConstraintKey key, IDegree degree, boolean killer) {
Object factHandle = this.getObjectStore().getHandleForObject(args.getObject());
IGammaNode node = this.ruleBase.getRete().getNode(key);
@@ -1956,7 +1962,7 @@
//Object does not exist, YET
//Prepare eval to be collected...
if (node != null)
- node.storeEvaluation(args, prepareEval(ruleName,args,key,degree,node));
+ node.storeEvaluation(args, prepareEval(ruleName,args,key,degree,node,killer));
} else {
if (factHandle instanceof ImperfectFactHandle) {
@@ -1967,13 +1973,13 @@
if (eval == null && node != null) {
// Object exsits, but its prop hasn't been evaluated yet
// Prepare eval to be collected at the node...
- node.storeEvaluation(args,prepareEval(ruleName,args,key,degree,node));
+ node.storeEvaluation(args,prepareEval(ruleName,args,key,degree,node,killer));
} else if (eval != null) {
// Object exists and has already been eval'ed
// Add new degree to evaluation
//TODO: 1 should be confidence!
- eval.addDegree(ruleName, degree,1,true);
+ eval.addDegree(ruleName, degree,1,killer,true);
//Notification is implicit in the record...
} else if (node == null) {
System.out.println("Warning - injected USELESS eval");
@@ -1994,12 +2000,13 @@
}
private Evaluation prepareEval(String ruleName, ArgList args, ConstraintKey key,
- IDegree degree, IGammaNode node) {
+ IDegree degree, IGammaNode node, boolean killer) {
EvaluationTemplate templ = node.getEvaluationTemplate(key);
- return templ.spawn(ruleName,degree, args);
-
+ Evaluation eval = templ.spawn(ruleName,degree, args);
+ eval.setKiller(ruleName,killer);
+ return eval;
}
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/ImplicationBetaConstraint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/ImplicationBetaConstraint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/ImplicationBetaConstraint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -230,7 +230,7 @@
public EvaluationTemplate[] buildEvaluationTemplates(int id, Map<ConstraintKey, Set<String>> dependencies, IDegreeFactory factory) {
template = new EvaluationTemplate[1];
- template[0] = new SingleEvaluationTemplate(id,singletonKeys[0],dependencies.get(singletonKeys[0]),factory.getMergeStrategy(),factory.getNullHandlingStrategy());
+ template[0] = new SingleEvaluationTemplate(id,singletonKeys[0],dependencies.get(singletonKeys[0]),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory);
return template;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -236,7 +236,8 @@
this.getConstraintKey(),
dependencies.get(this.getConstraintKey()),
factory.getMergeStrategy(),
- factory.getNullHandlingStrategy());
+ factory.getNullHandlingStrategy(),
+ factory);
return template;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -241,7 +241,8 @@
this.getConstraintKey(),
dependencies.get(this.getConstraintKey()),
factory.getMergeStrategy(),
- factory.getNullHandlingStrategy());
+ factory.getNullHandlingStrategy(),
+ factory);
return template;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/NamedEntryPoint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/NamedEntryPoint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/NamedEntryPoint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -489,11 +489,17 @@
public void inject(String premise, ArgList args,
- ConstraintKey key, IDegree degree) {
+ ConstraintKey key, IDegree degree, boolean killer) {
// TODO Auto-generated method stub
}
+ public void reject(String ruleName, ArgList args, ConstraintKey key,
+ IDegree degree, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/TupleStartEqualsConstraint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/TupleStartEqualsConstraint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/TupleStartEqualsConstraint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -244,7 +244,8 @@
this.getConstraintKey(),
dependencies.get(this.getConstraintKey()),
factory.getMergeStrategy(),
- factory.getNullHandlingStrategy());
+ factory.getNullHandlingStrategy(),
+ factory);
return template;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/IntervalDegree.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/IntervalDegree.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/IntervalDegree.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -73,4 +73,28 @@
return 1.0f - getPhi();
}
+
+ public int hashCode() {
+ return new Float(getLow()).hashCode()^new Float(getUpp()).hashCode();
+ }
+
+ public boolean equals(Object other) {
+ if (other == null) {
+ return false;
+ } else if (other == this) {
+ return true;
+ } else if (other.getClass().equals(this.getClass()) ) {
+ IntervalDegree o = (IntervalDegree) other;
+ return (this.phi == o.phi) && (this.tau == o.tau);
+ } else {
+ return false;
+ }
+ }
+
+
+
+ public float getConfidence(boolean cwa) {
+ return phi+tau;
+ }
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IDegreeFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IDegreeFactory.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IDegreeFactory.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,13 +4,17 @@
import org.drools.degrees.operators.IDegreeCombiner;
import org.drools.reteoo.filters.IFilterStrategy;
+import org.drools.degrees.operators.IDiscountOperator;
+import org.drools.degrees.operators.IDiscountStrategy;
import org.drools.degrees.operators.IMergeStrategy;
import org.drools.degrees.operators.INullHandlingStrategy;
public interface IDegreeFactory {
+ public void setClosedWorldAssumption(boolean cwa);
+ public boolean isClosedWorldAssumption();
public IDegree buildDegree(float val);
@@ -38,7 +42,9 @@
public IDegreeCombiner getXorOperator();
+ public IDegreeCombiner getImplicationOperator();
+
public IDegreeCombiner getAggregator();
@@ -73,7 +79,7 @@
public IDegreeCombiner getDoubleMPOperator();
- public IDegreeCombiner getDiscountOperator();
+ public IDiscountOperator getDiscountOperator();
public IDegreeCombiner getHedgeOperator();
@@ -94,6 +100,8 @@
public IDegreeCombiner getXorOperator(String params);
+
+ public IDegreeCombiner getImplicationOperator(String params);
public IDegreeCombiner getOrOperator(String params);
@@ -109,6 +117,9 @@
public IDegree buildDegree(String priorStr);
+
+
+ public IDiscountStrategy getDiscountStrategy();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IntervalDegreeFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IntervalDegreeFactory.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IntervalDegreeFactory.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -1,13 +1,19 @@
package org.drools.degrees.factory;
+import java.util.StringTokenizer;
+
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.SimpleDegree;
import org.drools.degrees.operators.IDegreeCombiner;
+import org.drools.degrees.operators.IDiscountOperator;
+import org.drools.degrees.operators.IDiscountStrategy;
import org.drools.degrees.operators.IMergeStrategy;
import org.drools.degrees.operators.INullHandlingStrategy;
import org.drools.degrees.operators.intervals.DefaultIntervalMergeStrategy;
import org.drools.degrees.operators.intervals.DefaultIntervalNullHandlingStrategy;
import org.drools.degrees.operators.intervals.IntervalDiscountOperator;
+import org.drools.degrees.operators.intervals.IntervalDiscountStrategy;
import org.drools.degrees.operators.intervals.IntervalDoubleMPOperator;
import org.drools.degrees.operators.intervals.IntervalEquivOperator;
import org.drools.degrees.operators.intervals.IntervalExistsOperator;
@@ -15,6 +21,7 @@
import org.drools.degrees.operators.intervals.IntervalForallOperator;
import org.drools.degrees.operators.intervals.IntervalIntersectionOperator;
import org.drools.degrees.operators.intervals.IntervalLukasAndOperator;
+import org.drools.degrees.operators.intervals.IntervalLukasImplicationOperator;
import org.drools.degrees.operators.intervals.IntervalLukasOrOperator;
import org.drools.degrees.operators.intervals.IntervalMaxOrOperator;
import org.drools.degrees.operators.intervals.IntervalMinAndOperator;
@@ -32,6 +39,8 @@
public static IDegree TRUE = new IntervalDegree(1,1);
public static IDegree UNKNOWN = new IntervalDegree(0,1);
+ private boolean cwa;
+
public IDegree False() {
return FALSE;
}
@@ -120,7 +129,7 @@
return new IntervalLukasOrOperator();
}
- public IDegreeCombiner getDiscountOperator() {
+ public IDiscountOperator getDiscountOperator() {
return new IntervalDiscountOperator();
}
@@ -129,8 +138,12 @@
}
+ public IDegreeCombiner getImplicationOperator() {
+ return new IntervalLukasImplicationOperator();
+ }
+
public IDegreeCombiner getAndOperator(String params) {
// TODO Auto-generated method stub
@@ -161,6 +174,10 @@
// TODO Auto-generated method stub
return null;
}
+
+ public IDegreeCombiner getImplicationOperator(String params) {
+ return new IntervalLukasImplicationOperator();
+ }
public IDegreeCombiner getHedgeOperator() {
throw new UnsupportedOperationException("Not yet...");
@@ -171,8 +188,28 @@
}
public IDegree buildDegree(String priorStr) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Not yet...");
+ if (priorStr.equals("unknown"))
+ return Unknown();
+
+
+ StringTokenizer tok = new StringTokenizer(priorStr,"[,]");
+ if (tok.countTokens() == 2) {
+ try {
+ float low = Float.parseFloat(tok.nextToken());
+ float upp = Float.parseFloat(tok.nextToken());
+ return new IntervalDegree(low, upp);
+ } catch (NumberFormatException nfe) {
+ return Unknown();
+ }
+
+ } else {
+ try {
+ float val = Float.parseFloat(tok.nextToken());
+ return new IntervalDegree(val,val);
+ } catch (NumberFormatException nfe) {
+ return Unknown();
+ }
+ }
}
public IDegreeCombiner getModusPonensOperator(String params) {
@@ -188,4 +225,16 @@
}
+ public IDiscountStrategy getDiscountStrategy() {
+ return new IntervalDiscountStrategy(getDiscountOperator());
+ }
+
+ public boolean isClosedWorldAssumption() {
+ return cwa;
+ }
+
+ public void setClosedWorldAssumption(boolean cwa) {
+ this.cwa = cwa;
+ }
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleDegreeFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleDegreeFactory.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleDegreeFactory.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -1,23 +1,28 @@
package org.drools.degrees.factory;
import org.drools.degrees.IDegree;
-import org.drools.degrees.IntervalDegree;
import org.drools.degrees.SimpleDegree;
import org.drools.degrees.operators.IDegreeCombiner;
+import org.drools.degrees.operators.IDiscountOperator;
+import org.drools.degrees.operators.IDiscountStrategy;
import org.drools.degrees.operators.IMergeStrategy;
import org.drools.degrees.operators.INullHandlingStrategy;
import org.drools.degrees.operators.simple.SimpleAverage;
+import org.drools.degrees.operators.simple.SimpleDiscountOperator;
+import org.drools.degrees.operators.simple.SimpleDiscountStrategy;
import org.drools.degrees.operators.simple.SimpleDotAnd;
import org.drools.degrees.operators.simple.SimpleDoubleMPOperator;
import org.drools.degrees.operators.simple.SimpleEquiv;
import org.drools.degrees.operators.simple.SimpleExists;
import org.drools.degrees.operators.simple.SimpleIdentityOperator;
import org.drools.degrees.operators.simple.SimpleLukasAnd;
+import org.drools.degrees.operators.simple.SimpleLukasImplication;
import org.drools.degrees.operators.simple.SimpleLukasOr;
import org.drools.degrees.operators.simple.SimpleMaxOr;
import org.drools.degrees.operators.simple.SimpleMinAnd;
+import org.drools.degrees.operators.simple.SimpleMinMergeStrategy;
import org.drools.degrees.operators.simple.SimpleNot;
-import org.drools.degrees.operators.simple.SimpleMergeStrategy;
+import org.drools.degrees.operators.simple.SimpleMaxMergeStrategy;
import org.drools.degrees.operators.simple.SimpleNullHandlingStrategy;
import org.drools.degrees.operators.simple.SimpleProbSumOr;
import org.drools.degrees.operators.simple.SimpleVeryModifier;
@@ -30,12 +35,15 @@
public class SimpleDegreeFactory implements IDegreeFactory {
- public static IDegree FALSE = new SimpleDegree(0);
- public static IDegree TRUE = new SimpleDegree(1);
+ private boolean cwa = true;
- //BEWARE OF CWA
- public static IDegree UNKNOWN = new SimpleDegree(0);
+ public static IDegree FALSE = SimpleDegree.FALSE();
+ public static IDegree TRUE = SimpleDegree.TRUE();
+
+ //BEWARE OF OWA
+ //private static IDegree UNKNOWN = SimpleDegree.UNKNOWN();
+
public IDegree False() {
return FALSE;
}
@@ -45,7 +53,12 @@
}
public IDegree Unknown() {
- return UNKNOWN;
+ if (cwa) {
+ return FALSE;
+ } else {
+ return TRUE;
+ }
+ //return UNKNOWN;
}
@@ -92,10 +105,10 @@
return new SimpleMinAnd();
}
- public IDegree mergeIntersect(IDegree d1,
- IDegree d2) {
- return getAggregator().eval(new IDegree[] {d1,d2});
- }
+// public IDegree mergeIntersect(IDegree d1,
+// IDegree d2) {
+// return getAggregator().eval(new IDegree[] {d1,d2});
+// }
public IDegreeCombiner getEquivModusPonensOp() {
@@ -109,6 +122,10 @@
return new SimpleAverage() ;
}
+ public IDegreeCombiner getImplicationOperator() {
+ return new SimpleLukasImplication();
+ }
+
public IDegreeCombiner getMaxOrOperator() {
return new SimpleMaxOr();
@@ -128,7 +145,11 @@
}
public IMergeStrategy getMergeStrategy() {
- return new SimpleMergeStrategy();
+ if (cwa) {
+ return new SimpleMaxMergeStrategy();
+ } else {
+ return new SimpleMinMergeStrategy();
+ }
}
public INullHandlingStrategy getNullHandlingStrategy() {
@@ -148,8 +169,8 @@
return this.getAndOperator();
}
- public IDegreeCombiner getDiscountOperator() {
- return new SimpleIdentityOperator();
+ public IDiscountOperator getDiscountOperator() {
+ return new SimpleDiscountOperator(this.Unknown().getDegree());
}
public IDegreeCombiner getDoubleMPOperator() {
@@ -217,6 +238,9 @@
}
public IDegree buildDegree(String priorStr) {
+ if (priorStr.toLowerCase().contains("unknown"))
+ return this.Unknown();
+
return new SimpleDegree(Float.parseFloat(priorStr));
}
@@ -232,5 +256,23 @@
return getModusPonensOp();
}
+
+
+ public IDegreeCombiner getImplicationOperator(String params) {
+ return new SimpleLukasImplication();
+ }
+
+ public IDiscountStrategy getDiscountStrategy() {
+ return new SimpleDiscountStrategy(this.getDiscountOperator());
+ }
+
+ public boolean isClosedWorldAssumption() {
+ return cwa;
+ }
+
+ public void setClosedWorldAssumption(boolean cwa) {
+ this.cwa = cwa;
+ }
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleFuzzyDegreeFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleFuzzyDegreeFactory.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleFuzzyDegreeFactory.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -1,13 +1,25 @@
package org.drools.degrees.factory;
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.IMergeStrategy;
+import org.drools.degrees.operators.simple.SimpleMaxMergeStrategy;
import org.drools.reteoo.filters.FuzzyFilterStrategy;
import org.drools.reteoo.filters.IFilterStrategy;
import org.drools.reteoo.filters.SimpleFilterStrategy;
public class SimpleFuzzyDegreeFactory extends SimpleDegreeFactory {
+ public IDegree Unknown() {
+ return SimpleDegree.FALSE();
+ }
+
public IFilterStrategy getDefaultStrategy() {
return FuzzyFilterStrategy.getInstance();
}
+ public IMergeStrategy getMergeStrategy() {
+ return new SimpleMaxMergeStrategy();
+ }
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDegreeCombiner.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDegreeCombiner.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDegreeCombiner.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -7,6 +7,7 @@
import java.util.Collection;
import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
/**
@@ -25,10 +26,10 @@
* @param args The truth values to be combined
* @return The output combination
*/
- public IDegree eval(IDegree[] args);
+ public IDegree eval(IDegree[] args, IDegreeFactory factory);
- public IDegree eval(Collection<? extends IDegree> args);
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory );
public String getName();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IMergeStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IMergeStrategy.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IMergeStrategy.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -1,9 +1,10 @@
package org.drools.degrees.operators;
import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
public interface IMergeStrategy extends IDegreeCombiner {
- public IDegree eval(IDegree[] degrees, INullHandlingStrategy nullStrat);
+ public IDegree eval(IDegree[] degrees, boolean[] killerFlags, INullHandlingStrategy nullStrat, IDegreeFactory factory);
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/INullHandlingStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/INullHandlingStrategy.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/INullHandlingStrategy.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -5,6 +5,6 @@
public interface INullHandlingStrategy {
- public IDegree convertNull();
+ public IDegree convertNull(IDegreeFactory factory);
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/NegationOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/NegationOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/NegationOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -3,6 +3,7 @@
import java.util.Collection;
import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
public abstract class NegationOperator implements IDegreeCombiner {
@@ -15,12 +16,12 @@
this.operator = op;
}
- public IDegree eval(IDegree[] args) {
- return negate(operator.eval(args));
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
+ return negate(operator.eval(args,factory));
}
- public IDegree eval(Collection<? extends IDegree> args) {
- return negate(operator.eval(args));
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
+ return negate(operator.eval(args,factory));
}
public String getName() {
@@ -28,7 +29,7 @@
}
- protected abstract IDegree negate(IDegree arg);
+ public abstract IDegree negate(IDegree arg);
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/DefaultIntervalMergeStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/DefaultIntervalMergeStrategy.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/DefaultIntervalMergeStrategy.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -5,26 +5,37 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.operators.IDiscountStrategy;
import org.drools.degrees.operators.IMergeStrategy;
import org.drools.degrees.operators.INullHandlingStrategy;
+import org.drools.reteoo.DiscountOperatorInstaller;
public class DefaultIntervalMergeStrategy implements IMergeStrategy {
private IntervalIntersectionOperator op = new IntervalIntersectionOperator();
- public IDegree eval(IDegree[] degrees, INullHandlingStrategy nullStrat) {
+ public IDegree eval(IDegree[] degrees, boolean[] kFlags, INullHandlingStrategy nullStrat, IDegreeFactory factory) {
IDegree[] args = new IDegree[degrees.length];
+
+
for (int j = 0; j < degrees.length; j++) {
- args[j] = degrees[j] != null ? degrees[j] : nullStrat.convertNull();
+ args[j] = degrees[j] != null ? degrees[j] : nullStrat.convertNull(factory);
}
- return op.eval(args);
+
+ if (kFlags != null) {
+ IDiscountStrategy discountStrat = factory.getDiscountStrategy();
+ return op.eval(discountStrat.discount(args, kFlags,factory), factory);
+ } else {
+ return op.eval(args, factory);
+ }
}
- public IDegree eval(IDegree[] args) {
- return eval(args, new DefaultIntervalNullHandlingStrategy());
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
+ return eval(args, null, new DefaultIntervalNullHandlingStrategy(),factory);
}
- public IDegree eval(Collection<? extends IDegree> degrees) {
+ public IDegree eval(Collection<? extends IDegree> degrees, IDegreeFactory factory) {
IDegree[] args = new IDegree[degrees.size()];
Iterator<? extends IDegree> iter = degrees.iterator();
INullHandlingStrategy nullStrat = new DefaultIntervalNullHandlingStrategy();
@@ -32,9 +43,9 @@
int j = 0;
while (iter.hasNext()) {
IDegree deg = iter.next();
- args[j++] = deg != null ? deg : nullStrat.convertNull();
+ args[j++] = deg != null ? deg : nullStrat.convertNull(factory);
}
- return op.eval(args);
+ return op.eval(args, factory);
}
public String getName() {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/DefaultIntervalNullHandlingStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/DefaultIntervalNullHandlingStrategy.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/DefaultIntervalNullHandlingStrategy.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -1,14 +1,15 @@
package org.drools.degrees.operators.intervals;
import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.INullHandlingStrategy;
public class DefaultIntervalNullHandlingStrategy implements
INullHandlingStrategy {
- public IDegree convertNull() {
- return IntervalDegreeFactory.UNKNOWN;
+ public IDegree convertNull(IDegreeFactory factory) {
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
}
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDiscountOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDiscountOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDiscountOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -6,26 +6,36 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
+import org.drools.degrees.operators.IDiscountOperator;
-public class IntervalDiscountOperator implements IDegreeCombiner {
+public class IntervalDiscountOperator implements IDiscountOperator {
- public IDegree eval(IDegree[] args) {
+
+ public IDegree discount(IDegree arg, float strength) {
+ float alfa = strength;
+ IntervalDegree ival = (IntervalDegree) arg;
+ return new IntervalDegree(ival.getTau()*alfa, 1 - ival.getPhi()*alfa);
+ }
+
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length < 2)
- return SimpleDegreeFactory.UNKNOWN;
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
IntervalDegree ival = (IntervalDegree) args[0];
SimpleDegree disc = args[1].getDegree();
float alfa = disc.getValue();
+ return new IntervalDegree(ival.getTau()*alfa, 1 - ival.getPhi()*alfa);
- return new IntervalDegree(ival.getTau()*alfa, 1 - ival.getPhi()*alfa);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() < 2)
- return SimpleDegreeFactory.UNKNOWN;
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
Iterator<? extends IDegree> iter= args.iterator();
IntervalDegree ival = (IntervalDegree) iter.next();
@@ -40,4 +50,6 @@
return "i_discount";
}
+
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDoubleMPOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDoubleMPOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalDoubleMPOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -6,15 +6,17 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
import org.drools.time.Interval;
public class IntervalDoubleMPOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length < 2)
- return SimpleDegreeFactory.UNKNOWN;
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
IntervalDegree prem = (IntervalDegree) args[0];
IntervalDegree impl = (IntervalDegree) args[1];
@@ -22,13 +24,13 @@
float tau = Math.min(prem.getTau(),impl.getTau());
float phi = Math.min(prem.getPhi(),impl.getTau());
- return new IntervalDegree(tau, phi);
+ return new IntervalDegree(tau, 1-phi);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() < 2)
- return SimpleDegreeFactory.UNKNOWN;
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
Iterator<? extends IDegree> iter= args.iterator();
IntervalDegree prem = (IntervalDegree) iter.next();
@@ -37,7 +39,7 @@
float tau = Math.min(prem.getTau(),impl.getTau());
float phi = Math.min(prem.getPhi(),impl.getTau());
- return new IntervalDegree(tau, phi);
+ return new IntervalDegree(tau, 1-phi);
}
public String getName() {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalEquivOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalEquivOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalEquivOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -5,15 +5,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class IntervalEquivOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length < 2)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
IntervalDegree a1 = (IntervalDegree) args[0];
IntervalDegree a2 = (IntervalDegree) args[1];
@@ -25,10 +25,9 @@
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() < 2)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
Iterator<? extends IDegree> iter = args.iterator();
IntervalDegree a1 = (IntervalDegree) iter.next();
IntervalDegree a2 = (IntervalDegree) iter.next();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalExistsOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalExistsOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalExistsOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,15 +4,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class IntervalExistsOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 1.0f;
for (IDegree deg : args) {
@@ -25,10 +25,9 @@
return new IntervalDegree(tau,1.0f-phi);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 1.0f;
for (IDegree deg : args) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalForAnyOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalForAnyOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalForAnyOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,15 +4,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class IntervalForAnyOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float low = 0;
float upp = 0;
for (IDegree deg : args) {
@@ -26,10 +26,9 @@
return new IntervalDegree(low,upp);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float low = 0;
float upp = 0;
for (IDegree deg : args) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalForallOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalForallOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalForallOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,15 +4,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class IntervalForallOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 1.0f;
float phi = 0.0f;
for (IDegree deg : args) {
@@ -25,10 +25,9 @@
return new IntervalDegree(tau,1.0f-phi);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 1.0f;
float phi = 0.0f;
for (IDegree deg : args) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalIntersectionOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalIntersectionOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalIntersectionOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,6 +4,7 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
@@ -11,10 +12,9 @@
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 0;
for (IDegree deg : args) {
@@ -27,10 +27,9 @@
return new IntervalDegree(tau,1.0f-phi);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 0;
for (IDegree deg : args) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasAndOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasAndOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasAndOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,6 +4,7 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
@@ -11,10 +12,9 @@
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 0;
for (IDegree deg : args) {
@@ -28,10 +28,9 @@
return new IntervalDegree(tau,phi);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 0;
for (IDegree deg : args) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasOrOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasOrOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalLukasOrOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,15 +4,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class IntervalLukasOrOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 0;
for (IDegree deg : args) {
@@ -26,10 +26,9 @@
return new IntervalDegree(tau,phi);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 0;
for (IDegree deg : args) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalMaxOrOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalMaxOrOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalMaxOrOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,15 +4,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class IntervalMaxOrOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 1.0f;
for (IDegree deg : args) {
@@ -25,10 +25,9 @@
return new IntervalDegree(tau,1.0f-phi);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 0;
float phi = 1.0f;
for (IDegree deg : args) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalMinAndOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalMinAndOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalMinAndOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,15 +4,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class IntervalMinAndOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 1.0f;
float phi = 0.0f;
for (IDegree deg : args) {
@@ -25,10 +25,9 @@
return new IntervalDegree(tau,1.0f-phi);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
float tau = 1.0f;
float phi = 0.0f;
for (IDegree deg : args) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalModusPonensOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalModusPonensOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalModusPonensOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -5,15 +5,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class IntervalModusPonensOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length < 2)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
IntervalDegree a1 = (IntervalDegree) args[0];
IntervalDegree a2 = (IntervalDegree) args[1];
@@ -21,10 +21,9 @@
return new IntervalDegree(Math.min(a1.getLow(),a2.getLow()),1);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() < 2)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
Iterator<? extends IDegree> iter = args.iterator();
IntervalDegree a1 = (IntervalDegree) iter.next();
IntervalDegree a2 = (IntervalDegree) iter.next();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalNegationOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalNegationOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalNegationOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -11,7 +11,7 @@
public class IntervalNegationOperator extends NegationOperator {
- protected IDegree negate(IDegree arg) {
+ public IDegree negate(IDegree arg) {
IntervalDegree iDeg = (IntervalDegree) arg;
return new IntervalDegree(iDeg.getPhi(),1-iDeg.getTau());
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalXorOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalXorOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/intervals/IntervalXorOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -5,15 +5,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class IntervalXorOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length < 2)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
IntervalDegree a1 = (IntervalDegree) args[0];
IntervalDegree a2 = (IntervalDegree) args[1];
@@ -25,10 +25,9 @@
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() < 2)
- return IntervalDegreeFactory.UNKNOWN;
-
+ return factory == null ? IntervalDegreeFactory.UNKNOWN : factory.Unknown();
Iterator<? extends IDegree> iter = args.iterator();
IntervalDegree a1 = (IntervalDegree) iter.next();
IntervalDegree a2 = (IntervalDegree) iter.next();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,15 +4,17 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public final class SimpleAverage implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return SimpleDegree.UNKNOWN();
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float ans = 0;
int n = 0;
@@ -55,7 +57,7 @@
}
*/
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
// TODO Auto-generated method stub
return null;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDotAnd.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDotAnd.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDotAnd.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,16 +4,17 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class SimpleDotAnd implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float ans = 1;
for (IDegree deg : args) {
SimpleDegree d = deg.getDegree();
@@ -23,7 +24,7 @@
return new SimpleDegree(ans);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
// TODO Auto-generated method stub
return null;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDoubleMPOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDoubleMPOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDoubleMPOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -5,15 +5,15 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class SimpleDoubleMPOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length < 2)
- return SimpleDegreeFactory.UNKNOWN;
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
IDegree prem = args[0];
IDegree impl = args[1];
@@ -27,9 +27,9 @@
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() < 2)
- return SimpleDegreeFactory.UNKNOWN;
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
Iterator<? extends IDegree> iter= args.iterator();
IDegree prem = iter.next();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleEquiv.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleEquiv.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleEquiv.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -6,6 +6,7 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.IntervalDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.IntervalDegreeFactory;
import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
@@ -13,7 +14,7 @@
public class SimpleEquiv implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
return new SimpleDegree( 1 - Math.abs(
args[0].getDegree().getValue()
- args[1].getDegree().getValue())
@@ -21,10 +22,10 @@
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() < 2)
- return SimpleDegreeFactory.UNKNOWN;
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
Iterator<? extends IDegree> iter = args.iterator();
SimpleDegree a1 = (SimpleDegree) iter.next();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleIdentityOperator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleIdentityOperator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleIdentityOperator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,15 +4,17 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public final class SimpleIdentityOperator implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return SimpleDegree.UNKNOWN();
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
return args[0];
}
@@ -47,9 +49,9 @@
}
*/
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return SimpleDegree.UNKNOWN();
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
return args.iterator().next();
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasAnd.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasAnd.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasAnd.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,16 +4,17 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class SimpleLukasAnd implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float ans = 1;
for (IDegree deg : args) {
SimpleDegree d = deg.getDegree();
@@ -23,10 +24,9 @@
return new SimpleDegree(Math.max(0,ans));
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float ans = 1;
for (IDegree deg : args) {
SimpleDegree d = deg.getDegree();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasOr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasOr.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleLukasOr.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,16 +4,17 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class SimpleLukasOr implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float ans = 0;
for (IDegree deg : args) {
SimpleDegree d = deg.getDegree();
@@ -23,10 +24,9 @@
return new SimpleDegree(Math.min(1,ans));
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float ans = 0;
for (IDegree deg : args) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,16 +4,17 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class SimpleMaxOr implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float ans = 0;
for (IDegree deg : args) {
SimpleDegree d = deg.getDegree();
@@ -23,10 +24,9 @@
return new SimpleDegree(ans);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float ans = 0;
for (IDegree deg : args) {
SimpleDegree d = deg.getDegree();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinAnd.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinAnd.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinAnd.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,15 +4,16 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class SimpleMinAnd implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float ans = 1;
for (IDegree deg : args) {
SimpleDegree d = deg.getDegree();
@@ -22,7 +23,7 @@
return new SimpleDegree(ans);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
// TODO Auto-generated method stub
return null;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNot.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNot.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNot.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -9,7 +9,7 @@
public class SimpleNot extends NegationOperator {
- protected IDegree negate(IDegree arg) {
+ public IDegree negate(IDegree arg) {
return new SimpleDegree(1-arg.getDegree().getValue());
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNullHandlingStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNullHandlingStrategy.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNullHandlingStrategy.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -2,12 +2,14 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.INullHandlingStrategy;
public class SimpleNullHandlingStrategy implements INullHandlingStrategy {
- public IDegree convertNull() {
- return new SimpleDegree(0);
+ public IDegree convertNull(IDegreeFactory factory) {
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
}
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleProbSumOr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleProbSumOr.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleProbSumOr.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,23 +4,23 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class SimpleProbSumOr implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
throw new UnsupportedOperationException("Still to be done");
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
throw new UnsupportedOperationException("Still to be done");
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleVeryModifier.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleVeryModifier.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleVeryModifier.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -4,26 +4,26 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class SimpleVeryModifier implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
if (args == null || args.length == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float arg = args[0].getDegree().getValue();
return new SimpleDegree(arg*arg);
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() == 0)
- return SimpleDegree.UNKNOWN();
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
float arg = args.iterator().next().getDegree().getValue();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleXor.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleXor.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleXor.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -5,13 +5,14 @@
import org.drools.degrees.IDegree;
import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
public class SimpleXor implements IDegreeCombiner {
- public IDegree eval(IDegree[] args) {
+ public IDegree eval(IDegree[] args, IDegreeFactory factory) {
return new SimpleDegree( Math.abs(
args[0].getDegree().getValue()
- args[1].getDegree().getValue())
@@ -19,11 +20,10 @@
}
- public IDegree eval(Collection<? extends IDegree> args) {
+ public IDegree eval(Collection<? extends IDegree> args, IDegreeFactory factory) {
if (args == null || args.size() < 2)
- return SimpleDegreeFactory.UNKNOWN;
-
+ return factory == null ? SimpleDegree.UNKNOWN(true) : factory.Unknown();
Iterator<? extends IDegree> iter = args.iterator();
SimpleDegree a1 = (SimpleDegree) iter.next();
SimpleDegree a2 = (SimpleDegree) iter.next();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/FuzzyDomain.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/FuzzyDomain.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/FuzzyDomain.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -8,11 +8,12 @@
import org.drools.base.ValueType;
import org.drools.base.evaluators.EvaluatorDefinition;
+import org.drools.base.evaluators.ImperfectEvaluatorDefinition;
import org.drools.base.evaluators.Operator;
import org.drools.base.evaluators.EvaluatorDefinition.Target;
import org.drools.spi.Evaluator;
-public abstract class FuzzyDomain implements EvaluatorDefinition {
+public abstract class FuzzyDomain implements ImperfectEvaluatorDefinition {
private Map<String, FuzzySet> granules;
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/FuzzySet.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/FuzzySet.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/FuzzySet.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -23,10 +23,12 @@
return name;
}
+ public float getConfidence(boolean cwa) {
+ return 1;
+ }
-
public SimpleDegree getDegree() {
// TODO Defuzzify here
return null;
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/NumericDomainFuzzySet.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/NumericDomainFuzzySet.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/NumericDomainFuzzySet.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -14,6 +14,9 @@
public Number defuzzify() {
return ((FuzzyNumericEvaluator) this.membershipEvaluator).getCenter();
}
+
+
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/FuzzyNumericEvaluator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/FuzzyNumericEvaluator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/FuzzyNumericEvaluator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -36,10 +36,8 @@
public FuzzyNumericEvaluator(Operator op, final ValueType type,
final boolean isNegated,
final String parameters) {
- super( type , op );
+ super( type , op, parameters );
this.isNegated = isNegated;
-
- this.mu = this.parseParameters( parameters );
}
@@ -58,11 +56,13 @@
- protected IDegree eval(Number number, IDegreeFactory factory) {
+ protected IDegree eval(Object left, Object right, IDegreeFactory factory) {
- if (number == null) return factory.Unknown();
+ if (left == null) return factory.Unknown();
+ if (! (left instanceof Number))
+ throw new RuntimeDroolsException("Numbers only");
- return mu.eval(number, factory);
+ return mu.eval((Number) left, factory);
}
@@ -70,72 +70,12 @@
return "FuzzyNumericEvaluator - " + getOperator().getOperatorString();
}
-
-
-
-
- public IDegree evaluate(InternalWorkingMemory workingMemory, IDegreeFactory factory,
- InternalReadAccessor extractor, Object object1, FieldValue value) {
-
- Object field = extractor.getValue(object1);
- if (field == null)
- return eval(null, factory);
-
- return eval((Number) field, factory);
-
- }
-
-
- public boolean evaluate(InternalWorkingMemory workingMemory,
- InternalReadAccessor extractor, Object object1, FieldValue value) {
- return evaluate(workingMemory, getFactory(workingMemory), extractor, object1, value).toBoolean();
- }
-
-
- public IDegree evaluate(InternalWorkingMemory workingMemory,
- IDegreeFactory factory,
- InternalReadAccessor leftExtractor, Object left,
- InternalReadAccessor rightExtractor, Object right) {
- throw new RuntimeDroolsException("Fuzzy Numeric Evaluator : Unary op ");
- }
-
- public boolean evaluate(InternalWorkingMemory workingMemory,
- InternalReadAccessor leftExtractor, Object left,
- InternalReadAccessor rightExtractor, Object right) {
- throw new RuntimeDroolsException("Fuzzy Numeric Evaluator : Unary op ");
- }
-
-
- public IDegree evaluateUncertainCachedLeft(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object object1) {
- throw new RuntimeDroolsException("Fuzzy Numeric Evaluator : Unary op ");
- }
- public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object object1) {
- return evaluateUncertainCachedLeft(workingMemory,context,object1).toBoolean();
- }
-
-
- public IDegree evaluateUncertainCachedRight(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object object2) {
- throw new RuntimeDroolsException("Fuzzy Numeric Evaluator : Unary op ");
- }
- public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object object2) {
- return evaluateUncertainCachedRight(workingMemory, context, object2).toBoolean();
- }
-
-
-
-
-
+
public Number getCenter() {
return mu.getCenter();
}
-
-
-
+
@Override
public int hashCode() {
final int PRIME = 37;
@@ -161,11 +101,11 @@
*
* @param parameters
*/
- private INumericSetMembershipFunction parseParameters(String parameters) {
+ public void parseParameters(String parameters) {
StringTokenizer tok = new StringTokenizer(parameters," ,");
if (tok.countTokens() == 0)
- return new SkepticNumericMembershipFunction();
+ setMu(new SkepticNumericMembershipFunction());
String className = tok.nextToken();
@@ -185,7 +125,8 @@
INumericSetMembershipFunction mu = (INumericSetMembershipFunction) obj;
mu.init(params);
- return mu;
+ setMu(mu);
+ return;
}
} catch (ClassNotFoundException e) {
System.out.println(e.toString());
@@ -215,6 +156,17 @@
}
+
+ public INumericSetMembershipFunction getMu() {
+ return mu;
+ }
+
+
+
+ public void setMu(INumericSetMembershipFunction mu) {
+ this.mu = mu;
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/MockEvaluator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/MockEvaluator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/MockEvaluator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -21,101 +21,26 @@
public class MockEvaluator extends BaseImperfectEvaluator {
-
+
private final static Operator MOP = Operator.addOperatorToRegistry("NOPERATOR", false) ;
+
-
- public MockEvaluator(final ValueType type,
- final boolean isNegated,
- final String parameters) {
- super( type,
- MOP);
- this.parseParameters( parameters );
+ public MockEvaluator(ValueType type, Operator operator, String parameters) {
+ super(type, operator, parameters);
}
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- super.readExternal(in);
-
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- super.writeExternal(out);
-
-
- }
-
-
- protected IDegree eval(WorkingMemory workingMemory) {
- if (! (workingMemory.getRuleBase() instanceof ImperfectRuleBase)) {
- throw new RuntimeDroolsException("Mock Evaluator : Uncertainty has not been enabled in the current Rule Base");
- }
- IDegreeFactory factory = ((ImperfectRuleBase) workingMemory.getRuleBase()).getDegreeFactory();
-
+ @Override
+ protected IDegree eval(Object left, Object right, IDegreeFactory factory) {
return factory.Unknown();
- }
-
-
- public boolean evaluate(InternalWorkingMemory workingMemory,
- InternalReadAccessor extractor, Object object1, FieldValue value) {
- return eval(workingMemory).toBoolean();
}
-
-
- public boolean evaluate(InternalWorkingMemory workingMemory,
- InternalReadAccessor leftExtractor, Object left,
- InternalReadAccessor rightExtractor, Object right) {
- return eval(workingMemory).toBoolean();
- }
-
- public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object object1) {
- return eval(workingMemory).toBoolean();
- }
- public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object object2) {
- return eval(workingMemory).toBoolean();
- }
-
-
- @Override
- public int hashCode() {
- final int PRIME = 37;
- int result = PRIME * super.hashCode();
- return result;
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object obj) {
- if ( this == obj ) return true;
- if ( !super.equals( obj ) ) return false;
- if ( getClass() != obj.getClass() ) return false;
- return true;
- }
-
- /**
- * This methods tries to parse the string of parameters to customize
- * the evaluator.
- *
- * @param parameters
- */
- private void parseParameters(String parameters) {
-
- }
-
-
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -12,77 +12,26 @@
public class RandomEvaluator extends BaseImperfectEvaluator {
- public RandomEvaluator(ValueType type, Operator operator) {
- super(type, operator);
- }
-
public RandomEvaluator(ValueType type, boolean isNegated,
String parameterText) {
- super(type, RandomEvaluatorDefinition.RANDOM);
+ super(type, RandomEvaluatorDefinition.RANDOM, parameterText);
}
- public boolean evaluate(InternalWorkingMemory workingMemory,
- InternalReadAccessor leftExtractor, Object left,
- InternalReadAccessor rightExtractor, Object right) {
- return getFactory(workingMemory).Random().toBoolean();
- }
-
- public boolean evaluate(InternalWorkingMemory workingMemory,
- InternalReadAccessor extractor, Object object, FieldValue value) {
- return getFactory(workingMemory).Random().toBoolean();
- }
-
- public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object right) {
- return getFactory(workingMemory).Random().toBoolean();
- }
-
- public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object left) {
- return getFactory(workingMemory).Random().toBoolean();
+ @Override
+ protected IDegree eval(Object left, Object right, IDegreeFactory factory) {
+ return factory.buildDegree((float) Math.random());
}
- public String toString() {
- return "random";
- }
-
-
- public IDegree evaluate(InternalWorkingMemory workingMemory,
- IDegreeFactory factory, InternalReadAccessor extractor,
- Object object, FieldValue value) {
- return factory.Random();
- }
- public IDegree evaluate(InternalWorkingMemory workingMemory,
- IDegreeFactory factory, InternalReadAccessor leftExtractor,
- Object left, InternalReadAccessor rightExtractor, Object right) {
- return factory.Random();
- }
-
- public IDegree evaluateCachedLeft(InternalWorkingMemory workingMemory,
- VariableContextEntry context, IDegreeFactory factory,
- Object right) {
- return factory.Random();
- }
-
- public IDegree evaluateCachedRight(InternalWorkingMemory workingMemory,
- VariableContextEntry context, IDegreeFactory factory,
- Object left) {
- return factory.Random();
- }
-
-
-
-
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluatorDefinition.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluatorDefinition.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -14,8 +14,10 @@
import org.drools.base.BaseEvaluator;
import org.drools.base.BaseImperfectEvaluator;
import org.drools.base.ValueType;
-import org.drools.base.evaluators.ImperfectBinaryEvaluatorDefinition;
+import org.drools.base.evaluators.ImperfectAbstractEvaluatorDefinition;
+import org.drools.base.evaluators.ImperfectEvaluatorDefinition;
import org.drools.base.evaluators.Operator;
+import org.drools.base.evaluators.EvaluatorDefinition.Target;
import org.drools.common.InternalWorkingMemory;
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
@@ -36,7 +38,7 @@
*
*/
public class RandomEvaluatorDefinition
- implements ImperfectBinaryEvaluatorDefinition {
+ extends ImperfectAbstractEvaluatorDefinition {
@@ -52,17 +54,10 @@
private static final String[] SUPPORTED_IDS = {RANDOM.getOperatorString()};
- private Map<String, Evaluator> cache = Collections.emptyMap();
-
-
-
-
-
public Evaluator getEvaluator(ValueType type, String operatorId,
- boolean isNegated, String parameterText) {
+ boolean isNegated, String parameterText, Target left, Target right) {
-
if ( this.cache == Collections.EMPTY_MAP ) {
this.cache = new HashMap<String, Evaluator>();
}
@@ -81,25 +76,10 @@
}
- public Evaluator getEvaluator(ValueType type, Operator operator,
- String parameterText) {
- return getEvaluator(type,operator.getOperatorString(),false,parameterText);
- }
-
- public Evaluator getEvaluator(ValueType type, Operator operator) {
- return getEvaluator(type,operator.getOperatorString(),false,"");
- }
-
- public Evaluator getEvaluator(ValueType type, String operatorId,
- boolean isNegated, String parameterText, Target leftTarget,
- Target rightTarget) {
- return getEvaluator(type, operatorId, isNegated, parameterText);
- }
-
/**
- * Operator is known as "far"
+ * Operator is known as "random"
*/
public String[] getEvaluatorIds() {
return SUPPORTED_IDS;
@@ -111,87 +91,7 @@
- /**
- *
- *
- */
- public boolean isNegatable() {
- return true;
- }
-
- /**
- * This evaluator operates on fact properties (i.e. age)
- * and not on factHandles.
- * So this returns false
- */
- public boolean operatesOnFactHandles() {
- return false;
- }
-
-
-
-
- /**
- *
- */
- public boolean supportsType(ValueType type) {
- return type.isNumber();
- }
-
-
-
-
-
-
-
- /*
- * TODO: Try and understand what this means. Copied from AfterEvalDef.
- */
-
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- cache = (Map<String, Evaluator>) in.readObject();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(cache);
- }
-
-
-
-
-
-
-
-
-
- public Target getTarget() {
- return Target.FACT;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/SeemsEvaluator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/SeemsEvaluator.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/SeemsEvaluator.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -34,61 +34,29 @@
public SeemsEvaluator() {
this(ValueType.OBJECT_TYPE,false,"");
}
-
-
+
public SeemsEvaluator(final ValueType type,
final boolean isNegated,
final String parameters) {
super( type,
- SeemsEvaluatorDefinition.SEEMS);
+ SeemsEvaluatorDefinition.SEEMS,
+ parameters);
}
-
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- super.readExternal(in);
-
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- super.writeExternal(out);
-
-
- }
-
-
-
- protected IDegree eval(WorkingMemory workingMemory) {
- if (! (workingMemory.getRuleBase() instanceof ImperfectRuleBase)) {
- throw new RuntimeDroolsException("Seems Evaluator : Uncertainty has not been enabled in the current Rule Base");
- }
- IDegreeFactory factory = ((ImperfectRuleBase) workingMemory.getRuleBase()).getDegreeFactory();
-
- return eval(factory);
- }
- protected IDegree eval(IDegreeFactory factory) {
- return factory.Unknown();
- }
-
public IDegree evaluate(InternalWorkingMemory workingMemory,
IDegreeFactory factory,
InternalReadAccessor extractor,
Object object1,
FieldValue value) {
- Evaluator set = ((IDynamicEvaluable) object1).getPred(value.toString());
-
- return set.evaluate(workingMemory, factory, extractor, object1, new LongFieldImpl(1));
-
+ Evaluator set = ((IDynamicEvaluable) object1).getPred(value.toString());
+ return set.evaluate(workingMemory, factory, extractor, object1, new LongFieldImpl(1));
}
- public boolean evaluate(InternalWorkingMemory workingMemory,
- InternalReadAccessor extractor, Object object1, FieldValue value) {
- return eval(workingMemory).toBoolean();
- }
+
public IDegree evaluate(InternalWorkingMemory workingMemory,
@@ -96,7 +64,7 @@
InternalReadAccessor leftExtractor, Object left,
InternalReadAccessor rightExtractor, Object right) {
-
+
Object set = rightExtractor.getValue(right);
if (set == null) {
return factory.Unknown();
@@ -104,69 +72,18 @@
return ((Evaluator) set).evaluate(workingMemory, factory, leftExtractor, left, new LongFieldImpl(1));
}
-
- public boolean evaluate(InternalWorkingMemory workingMemory,
- InternalReadAccessor leftExtractor, Object left,
- InternalReadAccessor rightExtractor, Object right) {
- return eval(workingMemory).toBoolean();
- }
- public IDegree evaluateCachedLeft(InternalWorkingMemory workingMemory,
- VariableContextEntry context, IDegreeFactory factory, Object object1) {
- return eval(factory);
- }
- public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object object1) {
- return eval(workingMemory).toBoolean();
- }
-
- public IDegree evaluateCachedRight(InternalWorkingMemory workingMemory,
- VariableContextEntry context, IDegreeFactory factory, Object object2) {
- return eval(factory);
+ @Override
+ protected IDegree eval(Object left, Object right, IDegreeFactory factory) {
+ return factory.Unknown();
}
- public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
- VariableContextEntry context, Object object2) {
- return eval(workingMemory).toBoolean();
- }
-
- @Override
- public int hashCode() {
- final int PRIME = 37;
- int result = PRIME * super.hashCode();
- return result;
- }
-
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object obj) {
- if ( this == obj ) return true;
- if ( !super.equals( obj ) ) return false;
- if ( getClass() != obj.getClass() ) return false;
- return true;
- }
-
- public String toString() {
- return SeemsEvaluatorDefinition.SEEMS.getOperatorString();
- }
-
- /**
- * This methods tries to parse the string of parameters to customize
- * the evaluator.
- *
- * @param parameters
- */
- private void parseParameters(String parameters) {
-
- }
+
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/SeemsEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/SeemsEvaluatorDefinition.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/SeemsEvaluatorDefinition.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -16,8 +16,10 @@
import org.drools.base.BaseEvaluator;
import org.drools.base.BaseImperfectEvaluator;
import org.drools.base.ValueType;
-import org.drools.base.evaluators.ImperfectBinaryEvaluatorDefinition;
+import org.drools.base.evaluators.ImperfectAbstractEvaluatorDefinition;
+import org.drools.base.evaluators.ImperfectEvaluatorDefinition;
import org.drools.base.evaluators.Operator;
+import org.drools.base.evaluators.EvaluatorDefinition.Target;
import org.drools.common.InternalWorkingMemory;
import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
import org.drools.rule.VariableRestriction.VariableContextEntry;
@@ -34,11 +36,11 @@
/**
*
* @author sotty
-
+
*
*/
public class SeemsEvaluatorDefinition
- implements ImperfectBinaryEvaluatorDefinition {
+ extends ImperfectAbstractEvaluatorDefinition {
@@ -54,17 +56,13 @@
private static final String[] SUPPORTED_IDS = {SEEMS.getOperatorString()};
- private Map<String, Evaluator> cache = Collections.emptyMap();
-
-
public Evaluator getEvaluator(ValueType type, String operatorId,
- boolean isNegated, String parameterText) {
+ boolean isNegated, String parameterText, Target left, Target right) {
-
if ( this.cache == Collections.EMPTY_MAP ) {
this.cache = new HashMap<String, Evaluator>();
}
@@ -83,23 +81,6 @@
}
- public Evaluator getEvaluator(ValueType type, Operator operator,
- String parameterText) {
- return getEvaluator(type,operator.getOperatorString(),false,parameterText);
- }
-
- public Evaluator getEvaluator(ValueType type, Operator operator) {
- return getEvaluator(type,operator.getOperatorString(),false,"");
- }
-
- public Evaluator getEvaluator(ValueType type, String operatorId,
- boolean isNegated, String parameterText, Target leftTarget,
- Target rightTarget) {
- return getEvaluator(type, operatorId, isNegated, parameterText);
- }
-
-
-
/**
* Operator is known as "far"
*/
@@ -113,87 +94,15 @@
- /**
- *
- *
- */
- public boolean isNegatable() {
- return true;
- }
-
- /**
- * This evaluator operates on fact properties (i.e. age)
- * and not on factHandles.
- * So this returns false
- */
- public boolean operatesOnFactHandles() {
- return false;
- }
-
- /**
- *
- */
- public boolean supportsType(ValueType type) {
- return type.isNumber();
- }
-
-
- /*
- * TODO: Try and understand what this means. Copied from AfterEvalDef.
- */
-
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- cache = (Map<String, Evaluator>) in.readObject();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(cache);
- }
-
-
-
-
-
-
-
-
-
- public Target getTarget() {
- return Target.FACT;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -668,11 +668,17 @@
public void inject(String rule, ArgList args, ConstraintKey key,
- IDegree degree) {
+ IDegree degree, boolean killer) {
// TODO Auto-generated method stub
}
+ public void reject(String ruleName, ArgList args, ConstraintKey key,
+ IDegree degree, boolean killer) {
+ // TODO Auto-generated method stub
+
+ }
+
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -392,9 +392,15 @@
public void inject(String premise, ArgList args, ConstraintKey key,
- IDegree degree) {
+ IDegree degree, boolean killer) {
// TODO Auto-generated method stub
+ }
+
+ public void reject(String ruleName, ArgList args, ConstraintKey key,
+ IDegree degree, boolean killer) {
+ // TODO Auto-generated method stub
+
}
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -195,6 +195,7 @@
}
}
+
public void assertObject(ImperfectFactHandle factHandle,
PropagationContext propagationContext,
InternalWorkingMemory workingMemory, IDegreeFactory factory,
@@ -211,7 +212,7 @@
factHandle.addPropertyDegrees(storedEvals);
}
-
+ boolean doCut = false;
//Call internal evaluator, if not done before
ConstraintKey key = this.constraint.getConstraintKey();
Evaluation eval = factHandle.getPropertyDegree(key);
@@ -221,7 +222,8 @@
memory.context,
factory
);
-
+ if (eval.getDegree().equals(factory.False()) && constraint.isCutter())
+ doCut = true;
for (Evaluation subEval : eval.getEvalTree()) {
factHandle.addPropertyDegree(subEval);
@@ -236,6 +238,10 @@
memory.context,
factory
);
+
+ if (localEval.getDegree().equals(factory.False()) && constraint.isCutter())
+ doCut = true;
+
record.addEvaluation(localEval);
}
}
@@ -244,7 +250,8 @@
int verdict;
- if (this.constraint.isCutter() && record.getDegree().equals(factory.False()))
+ //if (this.constraint.isCutter() && record.getDegree().equals(factory.False()))
+ if (doCut)
verdict = IFilterStrategy.DROP;
else
verdict = this.filterStrat.doTry(record);
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -10,6 +10,7 @@
import org.drools.RuntimeDroolsException;
import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
import org.drools.degrees.operators.IMergeStrategy;
import org.drools.degrees.operators.INullHandlingStrategy;
@@ -21,8 +22,8 @@
private float opRate;
public CompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
- Evaluation[] evalDegrees, IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, ArgList args) {
- super(id,key,deps,mergeStrat,nullStrat, args);
+ Evaluation[] evalDegrees, IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory, ArgList args) {
+ super(id,key,deps,mergeStrat,nullStrat, factory, args);
if (evalDegrees != null) {
this.operands = new Vector<Evaluation>(evalDegrees.length);
@@ -41,8 +42,8 @@
protected CompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
- IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat,ArgList args) {
- super(id,key,deps,mergeStrat,nullStrat, args);
+ IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory,ArgList args) {
+ super(id,key,deps,mergeStrat,nullStrat, factory,args);
this.operands = new Vector<Evaluation>(1,1);
this.operator = null;
@@ -54,8 +55,8 @@
public CompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
- int arity, IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, ArgList args) {
- super(id,key,deps,mergeStrat,nullStrat, args);
+ int arity, IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory, ArgList args) {
+ super(id,key,deps,mergeStrat,nullStrat, factory, args);
this.operands = new Vector<Evaluation>(arity,2);
@@ -97,13 +98,13 @@
int j = 0;
for (Evaluation eval : getOperands()) {
- args[j++] = eval == null ? this.getNullHandlingStrat().convertNull() : eval.getDegree();
+ args[j++] = eval == null ? this.getNullHandlingStrat().convertNull(getFactory()) : eval.getDegree();
}
}
- IDegree opDeg = this.operator.eval(args);
+ IDegree opDeg = this.operator.eval(args,getFactory());
updateOpRate();
boolean newContrib = this.addDegree(Evaluation.EVAL, opDeg, getOpRate(),true);
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -22,8 +22,8 @@
protected Map<ConstraintKey,EvaluationTemplate> children;
- public CompositeEvaluationTemplate(int id, ConstraintKey key, Set<String> deps, int N, IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
- super(id,key,deps,mergeStrat,nullStrat);
+ public CompositeEvaluationTemplate(int id, ConstraintKey key, Set<String> deps, int N, IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory) {
+ super(id,key,deps,mergeStrat,nullStrat, factory);
children = new HashMap<ConstraintKey, EvaluationTemplate>();
this.N = N;
@@ -48,19 +48,19 @@
public Evaluation spawn(Evaluation[] evalDegree) {
- return new CompositeEvaluation(id,key.clone(),deps,evalDegree,operator,mergeStrat,nullStrat,new ArgList());
+ return new CompositeEvaluation(id,key.clone(),deps,evalDegree,operator,mergeStrat,nullStrat,factory, new ArgList());
}
public Evaluation spawn(ArgList args) {
- return new CompositeEvaluation(id,key.clone(),deps,children.values().toArray(new Evaluation[children.values().size()]),operator,mergeStrat,nullStrat,args);
+ return new CompositeEvaluation(id,key.clone(),deps,children.values().toArray(new Evaluation[children.values().size()]),operator,mergeStrat,nullStrat,factory,args);
}
public Evaluation spawn(int N) {
- return new CompositeEvaluation(id,key.clone(),deps,N,operator,mergeStrat,nullStrat,new ArgList());
+ return new CompositeEvaluation(id,key.clone(),deps,N,operator,mergeStrat,nullStrat,factory,new ArgList());
}
public Evaluation spawn(OperandSet args, BetaConstraints joinConstraints) {
- return new SetCompositeEvaluation(id,key.clone(),deps,operator,args,mergeStrat,nullStrat,joinConstraints);
+ return new SetCompositeEvaluation(id,key.clone(),deps,operator,factory,args,mergeStrat,nullStrat,joinConstraints);
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeLeftTupleSinkAdapter.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeLeftTupleSinkAdapter.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeLeftTupleSinkAdapter.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -95,7 +95,7 @@
for( LeftTupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextLeftTupleSinkNode() ) {
- EvalRecord masterRecord = new EvalRecord(-1,factory.getAndOperator(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),new ArgList());
+ EvalRecord masterRecord = new EvalRecord(-1,factory.getAndOperator(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory,new ArgList());
masterRecord.addEvaluation(record);
doPropagateAssertLeftTuple( context, workingMemory, factory, sink,
new ImperfectLeftTuple( factHandle, sink, leftTupleMemoryEnabled, masterRecord ) );
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EntryPointNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EntryPointNode.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EntryPointNode.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -331,7 +331,7 @@
for ( int i = 0, length = cachedNodes.length; i < length; i++ ) {
System.out.println(this.getClass() + " dispatching obj"+ (handle.getObject().getClass().getSimpleName()) + "to node "+cachedNodes[i].hashCode());
- EvalRecord record = new EvalRecord(this.getId(),factory.getAndOperator(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),new ArgList());
+ EvalRecord record = new EvalRecord(this.getId(),factory.getAndOperator(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory,new ArgList());
cachedNodes[i].assertObject(handle,
context,
workingMemory,
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -217,7 +217,7 @@
EvalRecord record = leftTuple.getRecord();
ConstraintKey key = new ConstraintKey("eval",this.condition.getEvalExpression().toString());
- EvaluationTemplate templ = new SingleEvaluationTemplate(this.getId(),key,Collections.EMPTY_SET,factory.getMergeStrategy(),factory.getNullHandlingStrategy());
+ EvaluationTemplate templ = new SingleEvaluationTemplate(this.getId(),key,Collections.EMPTY_SET,factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory);
Evaluation eval = templ.spawn(ans,leftTuple.getArgList());
record.addEvaluation(eval);
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -46,7 +46,7 @@
private ImperfectRightTuple rightTuple;
private PropagationContext propagationContext;
private InternalWorkingMemory workingMemory;
- private IDegreeFactory factory;
+ //private IDegreeFactory factory;
@@ -57,8 +57,8 @@
// }
- public EvalRecord(int id,IDegreeCombiner operator,IMergeStrategy mergeStrat,INullHandlingStrategy nullStrat, ArgList args) {
- super(id,new DynamicConstraintKey(operator.getName()),null,null,operator,mergeStrat,nullStrat, args);
+ public EvalRecord(int id,IDegreeCombiner operator,IMergeStrategy mergeStrat,INullHandlingStrategy nullStrat, IDegreeFactory factory, ArgList args) {
+ super(id,new DynamicConstraintKey(operator.getName()),null,null,operator,mergeStrat,nullStrat,factory, args);
//mainKey = null;
//evalMap = new HashMap<ConstraintKey, Evaluation>();
@@ -185,7 +185,7 @@
public EvalRecord clone() {
- EvalRecord ans = new EvalRecord(this.getNodeId(),this.getOperator(),this.getMergeStrat(),this.getNullHandlingStrat(), (ArgList) this.getArgs().clone());
+ EvalRecord ans = new EvalRecord(this.getNodeId(),this.getOperator(),this.getMergeStrat(),this.getNullHandlingStrat(), this.getFactory(), (ArgList) this.getArgs().clone());
ans.addEvaluations(this);
return ans;
@@ -282,21 +282,21 @@
return workingMemory;
}
- /**
- * @param factory the factory to set
- */
- public void setFactory(IDegreeFactory factory) {
- this.factory = factory;
- }
+// /**
+// * @param factory the factory to set
+// */
+// public void setFactory(IDegreeFactory factory) {
+// this.factory = factory;
+// }
+//
+// /**
+// * @return the factory
+// */
+// public IDegreeFactory getFactory() {
+// return factory;
+// }
/**
- * @return the factory
- */
- public IDegreeFactory getFactory() {
- return factory;
- }
-
- /**
* @param leftTuple the leftTuple to set
*/
public void setLeftTuple(ImperfectLeftTuple leftTuple) {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Evaluation.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Evaluation.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Evaluation.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -11,6 +11,7 @@
import java.util.Set;
import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.operators.IMergeStrategy;
import org.drools.degrees.operators.INullHandlingStrategy;
@@ -29,27 +30,38 @@
private Map<String,IDegree> degrees;
private int totDegrees;
private Map<String,Float> confidence;
+ private Map<String,Boolean> killer;
private IDegree aggDegree;
private IMergeStrategy mergeStrat;
private INullHandlingStrategy nullStrat;
+ private IDegreeFactory factory;
+
private ArgList args;
+
+
- public Evaluation(int id, ConstraintKey key, Set<String> deps, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, ArgList args) {
+ public Evaluation(int id, ConstraintKey key, Set<String> deps, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory, ArgList args) {
+ this.factory = factory;
+
+
if (deps == null)
deps = Collections.emptySet();
this.nodeId = id;
this.degrees = new HashMap<String,IDegree>();
this.confidence = new HashMap<String,Float>();
+ this.killer = new HashMap<String,Boolean>();
+
this.degrees.put(PRIOR, null);
this.degrees.put(EVAL, null);
for (String s : deps) {
this.degrees.put(s, null);
confidence.put(s,new Float(0));
+ killer.put(s,false);
}
totDegrees = 2+deps.size();
@@ -60,14 +72,14 @@
this.args = args;
}
- public Evaluation(int id, ConstraintKey key, Set<String> deps, IDegree evalDeg, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, ArgList args) {
- this(id,key,deps,mergeStrat,nullStrat,args);
+ public Evaluation(int id, ConstraintKey key, Set<String> deps, IDegree evalDeg, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory, ArgList args) {
+ this(id,key,deps,mergeStrat,nullStrat,factory,args);
this.addDegree(Evaluation.EVAL,evalDeg,1,true);
}
- public Evaluation(int id, ConstraintKey key, Set<String> deps, IDegree evalDeg, String source, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, ArgList args) {
- this(id,key,deps,mergeStrat,nullStrat,args);
+ public Evaluation(int id, ConstraintKey key, Set<String> deps, IDegree evalDeg, String source, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory, ArgList args) {
+ this(id,key,deps,mergeStrat,nullStrat,factory,args);
this.addDegree(source,evalDeg,1,true);
}
@@ -96,14 +108,19 @@
public void merge(Evaluation other) {
- this.addDegrees(other.degrees, other.confidence);
+ this.addDegrees(other.degrees, other.confidence, other.killer);
}
- private void addDegrees(Map<String, IDegree> moreDegrees, Map<String, Float> conf) {
+ private void addDegrees(Map<String, IDegree> moreDegrees, Map<String, Float> conf, Map<String, Boolean> killer) {
boolean newContrib = false;
for (String source : moreDegrees.keySet()) {
IDegree evalDeg = moreDegrees.get(source);
+
+ Boolean killerContri = killer.get(source);
+ if (killerContri == null)
+ killerContri = false;
+
if (evalDeg != null) {
System.out.println("Trying to merge degrees for source "+ source + "+1");
@@ -117,7 +134,7 @@
this.degrees.put(source,evalDeg);
}
*/
- newContrib = newContrib || this.addDegree(source, evalDeg, conf.get(source),false);
+ newContrib = newContrib || this.addDegree(source, evalDeg, conf.get(source),killerContri,false);
@@ -135,8 +152,11 @@
}
+ public boolean addDegree(String source, IDegree evalDeg, float wgt, boolean immediateUpdate) {
+ return addDegree(source, evalDeg, wgt, false, immediateUpdate);
+ }
- public boolean addDegree(String source, IDegree evalDeg, float wgt, boolean immediateUpdate) {
+ public boolean addDegree(String source, IDegree evalDeg, float wgt, boolean isKiller, boolean immediateUpdate) {
boolean newContrib = false;
boolean rateIncr = false;
Float prevConf;
@@ -154,10 +174,12 @@
confidence.put(source, wgt);
rateIncr = prevConf == null ? true : prevConf.floatValue() < wgt;
+
IDegree oldVal = getDegreeBit(source);
if (oldVal == null) {
System.out.println(this.key+" Added degree for source "+ source + " with wgt "+wgt);
- this.degrees.put(source,evalDeg);
+ this.degrees.put(source,evalDeg);
+ this.killer.put(source,isKiller);
newContrib = true;
} else {
if (oldVal.equals(evalDeg)) {
@@ -168,6 +190,12 @@
this.degrees.put(source,evalDeg);
newContrib = true;
}
+
+ boolean wasKiller = killer.get(source);
+ if (wasKiller != isKiller) {
+ killer.put(source,isKiller);
+ newContrib = true;
+ }
}
// if (getDegreeBit(source) == null) {
@@ -233,11 +261,24 @@
protected IDegree mergeDegrees() {
IDegree[] bits = new IDegree[this.totDegrees];
+ boolean[] killerFlags = new boolean[this.totDegrees];
+ boolean needKill = false;
+
int j = 0;
- for (String s : degrees.keySet())
- bits[j++] = degrees.get(s);
+ for (String s : degrees.keySet()) {
+ bits[j] = degrees.get(s);
+ Boolean flag = killer.get(s);
+ killerFlags[j] = flag == null ? false : flag;
+ if (killerFlags[j])
+ needKill = true;
+
+ j++;
+ }
- return this.mergeStrat.eval(bits,nullStrat);
+ if (needKill)
+ return this.mergeStrat.eval(bits, killerFlags, nullStrat, getFactory());
+ else
+ return this.mergeStrat.eval(bits, null, nullStrat, getFactory());
}
@@ -350,6 +391,34 @@
public ArgList getArgs() {
return args;
}
+
+ /**
+ * @param factory the factory to set
+ */
+ public void setFactory(IDegreeFactory factory) {
+ this.factory = factory;
+ }
+
+ /**
+ * @return the factory
+ */
+ public IDegreeFactory getFactory() {
+ return factory;
+ }
+
+ /**
+ * @param killer the killer to set
+ */
+ public void setKiller(String id, boolean killer) {
+ this.killer.put(id,killer);
+ }
+
+ /**
+ * @return the killer
+ */
+ public boolean isKiller(String id) {
+ return killer.get(id);
+ }
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvaluationTemplate.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvaluationTemplate.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvaluationTemplate.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -3,6 +3,7 @@
import java.util.Set;
import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
import org.drools.degrees.operators.IMergeStrategy;
import org.drools.degrees.operators.INullHandlingStrategy;
@@ -16,14 +17,17 @@
protected IMergeStrategy mergeStrat;
protected INullHandlingStrategy nullStrat;
+ protected IDegreeFactory factory;
- public EvaluationTemplate(int id, ConstraintKey key, Set<String> deps, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
+
+ public EvaluationTemplate(int id, ConstraintKey key, Set<String> deps, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory) {
this.id = id;
this.key = key;
this.deps = deps;
this.mergeStrat = mergeStrat;
this.nullStrat = nullStrat;
+ this.factory = factory;
}
@@ -31,15 +35,15 @@
public Evaluation spawn(IDegree evalDegree, ArgList args) {
- return new Evaluation(id,key,deps,evalDegree,mergeStrat,nullStrat,args);
+ return new Evaluation(id,key,deps,evalDegree,mergeStrat,nullStrat,factory,args);
}
public Evaluation spawn(String source, IDegree evalDegree, ArgList args) {
- return new Evaluation(id,key,deps,evalDegree,source,mergeStrat,nullStrat,args);
+ return new Evaluation(id,key,deps,evalDegree,source,mergeStrat,nullStrat,factory,args);
}
public Evaluation spawn(ArgList args) {
- return new Evaluation(id,key,deps,null,mergeStrat,nullStrat,args);
+ return new Evaluation(id,key,deps,null,mergeStrat,nullStrat,factory,args);
}
@@ -48,8 +52,14 @@
}
public abstract Evaluation spawn(Evaluation[] evalDegree);
+
+
+
+
+
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/GammaMemory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/GammaMemory.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/GammaMemory.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -9,15 +9,32 @@
private Map<ArgList, Collection<Evaluation>> store;
+ private Collection<Evaluation> all = null;
+
public GammaMemory() {
store = new HashMap<ArgList, Collection<Evaluation>>();
}
public Collection<Evaluation> retrieve(ArgList o) {
+ Collection<Evaluation> ans;
+
if (o.isPersistent())
- return this.store.get(o);
+ ans = this.store.get(o);
else
- return this.store.remove(o);
+ ans = this.store.remove(o);
+
+ if (all != null) {
+
+ if (ans == null) {
+ ans = all;
+ } else {
+ ans.addAll(all);
+ }
+
+
+ }
+
+ return ans;
}
public Collection<ArgList> getKeys() {
@@ -25,6 +42,12 @@
}
public void store(ArgList o, Evaluation eval) {
+ if (o.getObject() instanceof Jolly) {
+ all = new LinkedList<Evaluation>();
+ all.add(eval);
+ return;
+ }
+
Collection<Evaluation> coll = store.get(o);
if (coll == null) {
coll = new LinkedList<Evaluation>();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectExistsNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectExistsNode.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectExistsNode.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -58,7 +58,7 @@
}
- public EvaluationTemplate buildEvaluationTemplate(IDegreeCombiner operator, Map<ConstraintKey,Set<String>> deps, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
+ public EvaluationTemplate buildEvaluationTemplate(IDegreeCombiner operator, Map<ConstraintKey,Set<String>> deps, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory) {
@@ -69,7 +69,8 @@
1,
operator,
mergeStrat,
- nullStrat);
+ nullStrat,
+ factory);
return template;
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -93,10 +93,12 @@
factHandleFactory
);
- String factoryName = config.getProperty("org.drools.chance.factory");
+ String factoryName = config.getProperty("org.drools.chance.factory");
+ boolean cwa = config.getClosedWorldAssumption();
IDegreeFactory factory = null;
try {
factory = (IDegreeFactory) Class.forName(factoryName).newInstance();
+ factory.setClosedWorldAssumption(cwa);
System.out.println("Created instance of "+factoryName);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
@@ -153,6 +155,7 @@
getDegreeFactory().getAndOperator(),
getDegreeFactory().getMergeStrategy(),
getDegreeFactory().getNullHandlingStrategy(),
+ getDegreeFactory(),
new ArgList(object));
getRete().assertObject( (ImperfectFactHandle) handle,
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -203,7 +203,7 @@
-
+ boolean doCut = false;
//Call internal evaluator, if not done before
ConstraintKey[] keys = this.constraints.getConstraintKeys();
if (keys != null) {
@@ -215,6 +215,11 @@
Evaluation[] evals = this.constraints.isSatisfiedCachedLeft(memory.getContext(), factHandle, factory);
+ for (Evaluation eval : evals) {
+ if (eval.getDegree().equals(factory.False()) && constraints.isCutter())
+ doCut = true;
+ }
+
//B-constraints are 0 to N
//Each is evaluated and, if it is the first time, added to the object's handle
if (evals != null) {
@@ -259,7 +264,8 @@
int verdict;
- if (this.isCutter && mainRecord.getDegree().equals(factory.False()))
+ //if (this.isCutter && mainRecord.getDegree().equals(factory.False()))
+ if (doCut)
verdict = IFilterStrategy.DROP;
else
verdict = this.filterStrat.doTry(mainRecord);
@@ -413,7 +419,7 @@
-
+ boolean doCut = false;
//Call internal evaluator, if not done before
ConstraintKey[] keys = this.constraints.getConstraintKeys();
Evaluation[] evals = null;
@@ -423,6 +429,9 @@
evals = this.constraints.isSatisfiedCachedRight( memory.getContext(),
leftTuple,
factory );
+ for (Evaluation eval : evals)
+ if (eval.getDegree().equals(factory.False()) && constraints.isCutter())
+ doCut = true;
//B-constraints are 0 to N
//Each is evaluated and, if it is the first time, added to the object's handle
if (evals != null) {
@@ -468,7 +477,8 @@
int verdict;
- if (this.isCutter && mainRecord.getDegree().equals(factory.False()))
+ //if (this.isCutter && mainRecord.getDegree().equals(factory.False()))
+ if (doCut)
verdict = IFilterStrategy.DROP;
else
verdict = this.filterStrat.doTry(mainRecord);
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -103,6 +103,8 @@
ImperfectRightTuple dummyRT = new ImperfectRightTuple(handle,this,null);
Evaluation implEval = this.constraints.isSatisfiedCachedLeft( new ContextEntry[] {adHocCtx}, handle, factory)[0];
+ // For future injections...
+ ((ImperfectFactHandle) leftTuple.getLastHandle()).addPropertyDegree(implEval);
ArgList args = leftTuple.getArgList();
@@ -115,7 +117,7 @@
- EvalRecord mpRecord = new EvalRecord(this.id,getMPOperator(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),new ArgList());
+ EvalRecord mpRecord = new EvalRecord(this.id,getMPOperator(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory,new ArgList());
Evaluation core = premiseRecord.getOperands().iterator().next();
core.deleteObserver(premiseRecord);
mpRecord.addEvaluation(core);
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -199,7 +199,8 @@
getConstraintKey(),
deps,
factory.getMergeStrategy(),
- factory.getNullHandlingStrategy());
+ factory.getNullHandlingStrategy(),
+ factory);
return templ;
}
@@ -640,7 +641,7 @@
Evaluation eval = factHandle.getPropertyDegree(key);
if (eval == null) {
- eval = this.template.spawn(storedEvals == null ? factory.True() : factory.False(),new ArgList(factHandle.getObject()));
+ eval = this.template.spawn(storedEvals == null ? factory.True() : factory.Unknown(),new ArgList(factHandle.getObject()));
factHandle.addPropertyDegree(eval);
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/OperatorInstaller.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/OperatorInstaller.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/OperatorInstaller.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -51,7 +51,7 @@
}
- public EvaluationTemplate buildEvaluationTemplate(IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
+ public EvaluationTemplate buildEvaluationTemplate(IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory) {
template = new CompositeEvaluationTemplate( this.getId(),
new DynamicConstraintKey(operator.getName()),
@@ -59,7 +59,8 @@
getArity(),
operator,
mergeStrat,
- nullStrat
+ nullStrat,
+ factory
);
return template;
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Rete.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Rete.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -285,7 +285,7 @@
}
else {
if (! node.equals(constraintIndex.get(key)))
- throw new RuntimeDroolsException("Found duplicate key: this may be a know issue");
+ throw new RuntimeDroolsException("Found duplicate key: "+key+" this may be a know issue");
}
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SetCompositeEvaluation.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SetCompositeEvaluation.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SetCompositeEvaluation.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -28,10 +28,10 @@
//IOperandSet args;
public SetCompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
- IDegreeCombiner operator, OperandSet opSet,
+ IDegreeCombiner operator, IDegreeFactory factory, OperandSet opSet,
IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat,
BetaConstraints joinConstraints) {
- super(id,key,deps,mergeStrat,nullStrat, new ArgList());
+ super(id,key,deps,mergeStrat,nullStrat, factory, new ArgList());
setOperator(operator);
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SingleEvaluationTemplate.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SingleEvaluationTemplate.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SingleEvaluationTemplate.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -3,6 +3,7 @@
import java.util.Set;
import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
import org.drools.degrees.operators.IMergeStrategy;
import org.drools.degrees.operators.INullHandlingStrategy;
@@ -10,8 +11,8 @@
public class SingleEvaluationTemplate extends EvaluationTemplate {
- public SingleEvaluationTemplate(int id, ConstraintKey key, Set<String> deps, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
- super(id,key,deps,mergeStrat,nullStrat);
+ public SingleEvaluationTemplate(int id, ConstraintKey key, Set<String> deps, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat, IDegreeFactory factory) {
+ super(id,key,deps,mergeStrat,nullStrat,factory);
}
@Override
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SingleLeftTupleSinkAdapter.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SingleLeftTupleSinkAdapter.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/SingleLeftTupleSinkAdapter.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -120,7 +120,7 @@
InternalWorkingMemory workingMemory, IDegreeFactory factory,
EvalRecord record, boolean leftTupleMemoryEnabled) {
- EvalRecord masterRecord = new EvalRecord(-1,factory.getAndOperator(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),new ArgList());
+ EvalRecord masterRecord = new EvalRecord(-1,factory.getAndOperator(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory,new ArgList());
masterRecord.addEvaluation(record);
// System.out.println("--------------------------------------");
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ImperfectGroupElementBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ImperfectGroupElementBuilder.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ImperfectGroupElementBuilder.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -60,6 +60,9 @@
this.getGeBuilders().put( GroupElement.EQV,
new ImperfectEqvBuilder() );
+ this.getGeBuilders().put( GroupElement.IMPLIES,
+ new ImperfectImpliesBuilder() );
+
this.getGeBuilders().put( GroupElement.EXISTS,
new ImperfectExistsBuilder() );
@@ -195,7 +198,7 @@
context.getRuleBase().getConfiguration().isMultithreadEvaluation());
- instNode.buildEvaluationTemplate(operator,factory.getMergeStrategy(),factory.getNullHandlingStrategy());
+ instNode.buildEvaluationTemplate(operator,factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory);
context.setTupleSource((LeftTupleSource) utils.attachNode(
context,
@@ -257,6 +260,16 @@
}
}
+ private static class ImperfectImpliesBuilder extends ImperfectOperatorArgsBuilder {
+ @Override
+ protected IDegreeCombiner getOperator(IDegreeFactory factory, String params) {
+ if (params == null)
+ return factory.getImplicationOperator();
+ else
+ return factory.getImplicationOperator(params);
+ }
+ }
+
private static class ImperfectEqvBuilder extends ImperfectOperatorArgsBuilder {
@Override
protected IDegreeCombiner getOperator(IDegreeFactory factory, String params) {
@@ -302,234 +315,8 @@
-
-//
-// private static class ImperfectAndBuilder
-// implements
-// ReteooComponentBuilder {
-//
-// /**
-// * @inheritDoc
-// *
-// * And group elements just iterate over their children
-// * selecting and calling the build procedure for each one
-// *
-// */
-// public void build(final BuildContext context,
-// final BuildUtils utils,
-// final RuleConditionElement rce) {
-//
-//
-//
-// IDegreeFactory factory = ((ImperfectRuleBase) context.getRuleBase()).getDegreeFactory();
-//
-// IDegreeCombiner operator;
-// if (context.isNegated()) {
-// operator = factory.getNegationOperator();
-// ((NegationOperator) operator).setOperator(factory.getAndOperator());
-// context.toggleNegated();
-//
-// } else {
-// operator = factory.getAndOperator();
-// }
-//
-//
-// final GroupElement ge = (GroupElement) rce;
-//
-// // iterate over each child and build it
-// for ( final Iterator it = ge.getChildren().iterator(); it.hasNext(); ) {
-//
-// final RuleConditionElement child = (RuleConditionElement) it.next();
-//
-// final ReteooComponentBuilder builder = utils.getBuilderFor( child );
-//
-// builder.build( context,
-// utils,
-// child );
-//
-// // if a previous object source was bound, but no tuple source
-// if ( context.getObjectSource() != null && context.getTupleSource() == null ) {
-// // adapt it to a Tuple source
-// context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
-// new LeftInputAdapterNode( context.getNextId(),
-// context.getObjectSource(),
-// context ) ) );
-//
-// context.setObjectSource( null );
-// }
-//
-// // if there was a previous tuple source, then a join node is needed
-// if ( context.getObjectSource() != null && context.getTupleSource() != null ) {
-// // so, create the tuple source and clean up the constraints and object source
-// final BetaConstraints betaConstraints = utils.createBetaNodeConstraint( context,
-// context.getBetaconstraints(),
-// false );
-//
-// Behavior[] behaviors = createBehaviorArray( context );
-//
-// context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
-// new JoinNode( context.getNextId(),
-// context.getTupleSource(),
-// context.getObjectSource(),
-// betaConstraints,
-// behaviors,
-// context ) ) );
-// context.setBetaconstraints( null );
-// context.setObjectSource( null );
-// }
-// }
-//
-// int arity = ge.getChildren().size();
-// Object firstChild = ge.getChildren().get(0);
-// if (firstChild instanceof Pattern) {
-// Pattern pat = (Pattern) firstChild;
-// if (pat.getObjectType().isAssignableFrom(new ClassObjectType(InitialFact.class)))
-// arity--;
-// }
-//// if (firstChild.isPatternScopeDelimiter())
-//// ;
-//
-// OperatorInstaller instNode = new AndOperatorInstaller(
-// context.getTupleSource(),
-// arity,
-// context.getNextId(),
-// context.getPartitionId(),
-// context.getRuleBase().getConfiguration().isMultithreadEvaluation());
-//
-//
-// instNode.buildEvaluationTemplate(operator,factory.getMergeStrategy(),factory.getNullHandlingStrategy());
-//
-// context.setTupleSource((LeftTupleSource) utils.attachNode(
-// context,
-// instNode
-// ));
-//
-//
-//
-// }
-//
-// public boolean requiresLeftActivation(final BuildUtils utils,
-// final RuleConditionElement rce) {
-// final GroupElement and = (GroupElement) rce;
-//
-// // need to check this because in the case of an empty rule, the root AND
-// // will have no child
-// if ( and.getChildren().isEmpty() ) {
-// return true;
-// }
-//
-// final RuleConditionElement child = (RuleConditionElement) and.getChildren().get( 0 );
-// final ReteooComponentBuilder builder = utils.getBuilderFor( child );
-//
-// return builder.requiresLeftActivation( utils,
-// child );
-// }
-// }
-//
-// private static class ImperfectOrBuilder
-// implements
-// ReteooComponentBuilder {
-//
-//
-//
-// public void build(final BuildContext context,
-// final BuildUtils utils,
-// final RuleConditionElement rce) {
-//
-// IDegreeFactory factory = ((ImperfectRuleBase) context.getRuleBase()).getDegreeFactory();
-//
-// IDegreeCombiner operator;
-// if (context.isNegated()) {
-// operator = factory.getNegationOperator();
-// ((NegationOperator) operator).setOperator(factory.getOrOperator());
-// context.toggleNegated();
-//
-// } else {
-// operator = factory.getOrOperator();
-// }
-//
-//
-// final GroupElement ge = (GroupElement) rce;
-//
-// // iterate over each child and build it
-// for ( final Iterator it = ge.getChildren().iterator(); it.hasNext(); ) {
-//
-// final RuleConditionElement child = (RuleConditionElement) it.next();
-//
-// final ReteooComponentBuilder builder = utils.getBuilderFor( child );
-//
-// builder.build( context,
-// utils,
-// child );
-//
-// // if a previous object source was bound, but no tuple source
-// if ( context.getObjectSource() != null && context.getTupleSource() == null ) {
-// // adapt it to a Tuple source
-// context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
-// new LeftInputAdapterNode( context.getNextId(),
-// context.getObjectSource(),
-// context ) ) );
-//
-// context.setObjectSource( null );
-// }
-//
-// // if there was a previous tuple source, then a join node is needed
-// if ( context.getObjectSource() != null && context.getTupleSource() != null ) {
-// // so, create the tuple source and clean up the constraints and object source
-// final BetaConstraints betaConstraints = utils.createBetaNodeConstraint( context,
-// context.getBetaconstraints(),
-// false );
-//
-// Behavior[] behaviors = createBehaviorArray( context );
-//
-// context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
-// new JoinNode( context.getNextId(),
-// context.getTupleSource(),
-// context.getObjectSource(),
-// betaConstraints,
-// behaviors,
-// context ) ) );
-// context.setBetaconstraints( null );
-// context.setObjectSource( null );
-// }
-// }
-//
-// OperatorInstaller instNode = new OrOperatorInstaller(
-// context.getTupleSource(),
-// ge.getChildren().size(),
-// context.getNextId(),
-// context.getPartitionId(),
-// context.getRuleBase().getConfiguration().isMultithreadEvaluation());
-//
-//
-// instNode.buildEvaluationTemplate(operator,factory.getMergeStrategy(),factory.getNullHandlingStrategy());
-//
-// context.setTupleSource((LeftTupleSource) utils.attachNode(
-// context,
-// instNode
-// ));
-//
-// }
-//
-// public boolean requiresLeftActivation(final BuildUtils utils,
-// final RuleConditionElement rce) {
-// final GroupElement and = (GroupElement) rce;
-//
-// // need to check this because in the case of an empty rule, the root AND
-// // will have no child
-// if ( and.getChildren().isEmpty() ) {
-// return true;
-// }
-//
-// final RuleConditionElement child = (RuleConditionElement) and.getChildren().get( 0 );
-// final ReteooComponentBuilder builder = utils.getBuilderFor( child );
-//
-// return builder.requiresLeftActivation( utils,
-// child );
-// }
-//
-// }
+
private static class ImperfectNotBuilder
implements
ReteooComponentBuilder {
@@ -659,7 +446,7 @@
behaviors,
context );
- exNode.buildEvaluationTemplate(operator,context.getRule().getDependencies(),factory.getMergeStrategy(),factory.getNullHandlingStrategy());
+ exNode.buildEvaluationTemplate(operator,context.getRule().getDependencies(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory);
context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
exNode) );
@@ -771,7 +558,7 @@
behaviors,
context );
- exNode.buildEvaluationTemplate(operator,context.getRule().getDependencies(),factory.getMergeStrategy(),factory.getNullHandlingStrategy());
+ exNode.buildEvaluationTemplate(operator,context.getRule().getDependencies(),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory);
context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
exNode) );
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/filters/DefaultIntervalFilterStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/filters/DefaultIntervalFilterStrategy.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/filters/DefaultIntervalFilterStrategy.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -34,7 +34,7 @@
return DROP;
*/
- return PASS;
+ return (eval.getInfoRate() == 1) ? PASS : HOLD;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/filters/SimpleFilterStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/filters/SimpleFilterStrategy.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/filters/SimpleFilterStrategy.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -19,14 +19,18 @@
@Override
public int doTry(Evaluation eval) {
//return eval.getDegree().toBoolean() ? PASS : DROP;
- System.out.println(""+eval.getInfoRate());
- if (eval.getDegree().toBoolean() && eval.getInfoRate() == 1.0f)
- return PASS;
- else if (eval.getDegree().toBoolean() && eval.getInfoRate() < 1.0f)
- return HOLD;
- else
- return DROP;
+ System.out.println(this.getClass()+" : "+eval.getInfoRate());
+ //Changed since CUT can be used
+// if (eval.getDegree().toBoolean() && eval.getInfoRate() == 1.0f)
+// return PASS;
+// else if (eval.getDegree().toBoolean() && eval.getInfoRate() < 1.0f)
+// return HOLD;
+// else
+// return DROP;
+ return eval.getInfoRate() == 1.0f? PASS : HOLD;
+
+
}
@Override
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -51,7 +51,7 @@
handle,
workingMemory,
context, factory );
- return factory.getAndOperator().eval(degs);
+ return factory.getAndOperator().eval(degs,factory);
}
@@ -81,7 +81,7 @@
handle, factory );
- return factory.getAndOperator().eval(degs);
+ return factory.getAndOperator().eval(degs,factory);
}
@@ -110,7 +110,7 @@
contextEntry.contextEntries[i],
factory );
- return factory.getAndOperator().eval(degs);
+ return factory.getAndOperator().eval(degs,factory);
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/AndConstraint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/AndConstraint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/AndConstraint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -274,7 +274,8 @@
N,
this.getOperator(),
factory.getMergeStrategy(),
- factory.getNullHandlingStrategy());
+ factory.getNullHandlingStrategy(),
+ factory);
int Na = this.alphaConstraints.length;
int Nb = this.betaConstraints.length;
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/GroupElement.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/GroupElement.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/GroupElement.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -39,6 +39,7 @@
public static final Type OR = Type.OR;
public static final Type NOT = Type.NOT;
public static final Type XOR = Type.XOR;
+ public static final Type IMPLIES = Type.IMPLIES;
public static final Type EQV = Type.EQV;
public static final Type EXISTS = Type.EXISTS;
// public static final Type FORANY = Type.FORANY;
@@ -323,6 +324,10 @@
return XOR.equals( this.type );
}
+ public boolean isImplies() {
+ return IMPLIES.equals( this.type );
+ }
+
public boolean isEqv() {
return EQV.equals( this.type );
}
@@ -408,6 +413,7 @@
OR(false),
NOT(true),
XOR(false),
+ IMPLIES(false),
EQV(false),
EXISTS(true),
AVG(false),
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/GroupElementFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/GroupElementFactory.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/GroupElementFactory.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -50,6 +50,10 @@
return new GroupElement( GroupElement.XOR );
}
+ public static GroupElement newImpliesInstance() {
+ return new GroupElement( GroupElement.IMPLIES );
+ }
+
public static GroupElement newEqvInstance() {
return new GroupElement( GroupElement.EQV );
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -230,7 +230,7 @@
- this.template = new SingleEvaluationTemplate(id,this.getConstraintKey(),deps,factory.getMergeStrategy(),factory.getNullHandlingStrategy());
+ this.template = new SingleEvaluationTemplate(id,this.getConstraintKey(),deps,factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory);
return template;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -181,7 +181,7 @@
//EvaluationTemplate temp = buildTemplateForRestriction(this.restrictions, null, id, dependencies, factory);
- EvaluationTemplate temp = new SingleEvaluationTemplate(id,this.restrictions.getConstraintKey(),dependencies.get(restrictions.getConstraintKey()),factory.getMergeStrategy(),factory.getNullHandlingStrategy());
+ EvaluationTemplate temp = new SingleEvaluationTemplate(id,this.restrictions.getConstraintKey(),dependencies.get(restrictions.getConstraintKey()),factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory);
this.setTemplate(temp);
return getTemplate();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/MutableTypeConstraint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/MutableTypeConstraint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/MutableTypeConstraint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -145,7 +145,7 @@
- this.template = new SingleEvaluationTemplate(id,this.getConstraintKey(),deps,factory.getMergeStrategy(),factory.getNullHandlingStrategy());
+ this.template = new SingleEvaluationTemplate(id,this.getConstraintKey(),deps,factory.getMergeStrategy(),factory.getNullHandlingStrategy(),factory);
return template;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -51,7 +51,7 @@
handle,
workingMemory,
context, factory );
- return factory.getOrOperator().eval(degs);
+ return factory.getOrOperator().eval(degs,factory);
}
@@ -78,7 +78,7 @@
handle, factory );
- return factory.getOrOperator().eval(degs);
+ return factory.getOrOperator().eval(degs,factory);
}
public boolean isAllowedCachedRight(final LeftTuple tuple,
@@ -104,7 +104,7 @@
contextEntry.contextEntries[i],
factory );
- return factory.getOrOperator().eval(degs);
+ return factory.getOrOperator().eval(degs,factory);
}
public Object clone() {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/OrConstraint.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/OrConstraint.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/OrConstraint.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -65,7 +65,8 @@
N,
getOperator(),
factory.getMergeStrategy(),
- factory.getNullHandlingStrategy());
+ factory.getNullHandlingStrategy(),
+ factory);
int Na = this.alphaConstraints.length;
int Nb = this.betaConstraints.length;
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -138,11 +138,12 @@
public IDegree isSatisfiedCachedLeft(ContextEntry context,
InternalFactHandle handle, IDegreeFactory factory) {
- return this.evaluator.evaluateCachedLeft(
+ IDegree deg = this.evaluator.evaluateCachedLeft(
((VariableContextEntry) context).workingMemory,
(VariableContextEntry) context,
factory,
this.evaluator.prepareLeftObject( handle ) );
+ return deg;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java 2009-05-22 02:31:50 UTC (rev 26663)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java 2009-05-22 02:32:45 UTC (rev 26664)
@@ -138,26 +138,56 @@
public void inject(Object arg, String field, String op, String value);
+ public void inject(Object arg, String field, String op, String value,boolean killer);
+ public void reject(Object arg, String field, String op, String value);
+ public void reject(Object arg, String field, String op, String value,boolean killer);
public void inject(Object[] args, String field, String op, String value);
+ public void inject(Object[] args, String field, String op, String value,boolean killer);
+ public void reject(Object[] args, String field, String op, String value);
+ public void reject(Object[] args, String field, String op, String value,boolean killer);
public void inject(Object arg, String key);
+ public void inject(Object arg, String key,boolean killer);
+ public void reject(Object arg, String key);
+ public void reject(Object arg, String key,boolean killer);
public void inject(Object[] args, String key);
+ public void inject(Object[] args, String key,boolean killer);
+ public void reject(Object[] args, String key);
+ public void reject(Object[] args, String key,boolean killer);
public void injectKey(Object arg, String field, String op, String value);
+ public void injectKey(Object arg, String field, String op, String value,boolean killer);
+ public void rejectKey(Object arg, String field, String op, String value);
+ public void rejectKey(Object arg, String field, String op, String value,boolean killer);
public void injectKey(Object[] args, String field, String op, String value);
+ public void injectKey(Object[] args, String field, String op, String value,boolean killer);
+ public void rejectKey(Object[] args, String field, String op, String value);
+ public void rejectKey(Object[] args, String field, String op, String value,boolean killer);
public void injectKey(Object arg, String key);
+ public void injectKey(Object arg, String key,boolean killer);
+ public void rejectKey(Object arg, String key);
+ public void rejectKey(Object arg, String key,boolean killer);
public void injectKey(Object[] args, String key);
+ public void injectKey(Object[] args, String key,boolean killer);
+ public void rejectKey(Object[] args, String key);
+ public void rejectKey(Object[] args, String key,boolean killer);
public void injectId(Object arg, String key);
+ public void injectId(Object arg, String key,boolean killer);
+ public void rejectId(Object arg, String key);
+ public void rejectId(Object arg, String key,boolean killer);
public void injectId(Object[] args, String key);
+ public void injectId(Object[] args, String key,boolean killer);
+ public void rejectId(Object[] args, String key);
+ public void rejectId(Object[] args, String key,boolean killer);
More information about the jboss-svn-commits
mailing list