[jboss-svn-commits] JBL Code SVN: r26163 - in labs/jbossrules/branches/DroolsChance: drools-compiler/src/main/java/org/drools/compiler and 12 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Apr 20 19:16:43 EDT 2009
Author: dsotty
Date: 2009-04-20 19:16:43 -0400 (Mon, 20 Apr 2009)
New Revision: 26163
Modified:
labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/degrees/SimpleDegree.java
labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/reteoo/MockLeftTupleSink.java
labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.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/common/AbstractWorkingMemory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/BaseNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/ConcurrentNodeMemories.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/InternalWorkingMemory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/NodeMemories.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.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/factory/IDegreeFactory.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/operators/simple/SimpleDotAnd.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/reteoo/AccumulateNode.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/BetaNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CollectNode.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/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/ExistsNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/FromNode.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/InitialFactHandle.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/LeftInputAdapterNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/LeftTupleSource.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/NotNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectSource.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/PropagationQueuingNode.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/ReteooWorkingMemory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/RightTupleMemory.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/builder/ImperfectReteooRuleBuilder.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/Iterator.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LeftTupleIndexHashTable.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LeftTupleList.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LinkedList.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/RightTupleIndexHashTable.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/RightTupleList.java
labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java
labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockLeftTupleSink.java
labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockObjectSource.java
labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java
labs/jbossrules/branches/DroolsChance/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/chance/FuzzyTest1.drl
labs/jbossrules/branches/DroolsChance/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/chance/HelloWorld.drl
labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt
Log:
many bugfixes
support for imperfect exists
Modified: labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/degrees/SimpleDegree.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/degrees/SimpleDegree.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/degrees/SimpleDegree.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -37,7 +37,7 @@
}
public static IDegree UNKNOWN() {
- return null;
+ return FALSE();
}
Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -239,8 +239,13 @@
System.out.println(this.getClass().toString() + " HACKED TO GET DROOLSTREE");
- //System.out.println((((DroolsTree) resultTree.getChild(8)).toStringTree()));
- //System.out.println((((DroolsTree) resultTree.getChild(4)).toIndentedStringTree()));
+
+ int j = 0;
+ DroolsTree dtree = (DroolsTree) resultTree.getChild(j);
+ while (dtree != null && ! dtree.getToken().getText().equals("rule"))
+ dtree = (DroolsTree) resultTree.getChild(j++);
+
+ System.out.println(dtree.toIndentedStringTree());
//
Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/reteoo/MockLeftTupleSink.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/reteoo/MockLeftTupleSink.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/reteoo/MockLeftTupleSink.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -179,4 +179,12 @@
}
+ public ConstraintKey[] getConstraintKeys() {
+ return new ConstraintKey[] {new ConstraintKey("MOCK")};
+ }
+
+
+ public LeftTupleSource getParentSource() {
+ return null;
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -551,4 +551,9 @@
}
+ public Object setNodeMemory(NodeMemory node, Object memory) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -291,7 +291,7 @@
}
public void inject(ArgList args, String field, String op, String value) {
- System.out.println(this.getClass()+" : KH injects a rule for degree "+getConsequenceDegree());
+ System.out.println("\n"+this.getClass()+" : KH injects a rule for degree "+getConsequenceDegree());
workingMemory.inject(this.getRule().getName(),
args,
new ConstraintKey(field,op,value),
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -1079,7 +1079,7 @@
entryPoint );
//TODO:
- //System.out.println(this.getClass().toString() + "Hacked to enroute imperfect");
+ System.out.println(this.getClass().toString() + "Hacked to enroute imperfect");
if (this.ruleBase instanceof ImperfectRuleBase) {
@@ -1537,6 +1537,7 @@
public void clearNodeMemory(final NodeMemory node) {
this.nodeMemories.clearNodeMemory( node );
}
+
public WorkingMemoryEventSupport getWorkingMemoryEventSupport() {
return this.workingMemoryEventSupport;
@@ -1972,7 +1973,7 @@
// Object exists and has already been eval'ed
// Add new degree to evaluation
//TODO: 1 should be confidence!
- eval.addDegree(ruleName, degree,1);
+ eval.addDegree(ruleName, degree,1,true);
//Notification is implicit in the record...
} else if (node == null) {
System.out.println("Warning - injected USELESS eval");
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/BaseNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/BaseNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/BaseNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -20,6 +20,7 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import org.drools.reteoo.LeftTupleSource;
import org.drools.reteoo.ReteooBuilder;
import org.drools.reteoo.RuleRemovalContext;
@@ -145,4 +146,7 @@
public void setPartitionId( final RuleBasePartitionId partitionId ) {
this.partitionId = partitionId;
}
+
+
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/ConcurrentNodeMemories.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/ConcurrentNodeMemories.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/ConcurrentNodeMemories.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -77,6 +77,7 @@
return memory;
}
+
/**
@@ -131,4 +132,6 @@
this.rulebase = ruleBase;
}
+
+
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/ImplicationBetaConstraint.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -191,14 +191,14 @@
public Evaluation[] isSatisfiedCachedLeft(ContextEntry[] context,
InternalFactHandle handle, IDegreeFactory factory) {
Evaluation eval = template[0].spawn(factory.Unknown());
- eval.addDegree(Evaluation.PRIOR, this.priorDegree, 1);
+ eval.addDegree(Evaluation.PRIOR, this.priorDegree, 1,true);
return new Evaluation[] {eval};
}
public Evaluation[] isSatisfiedCachedRight(ContextEntry[] context,
LeftTuple tuple, IDegreeFactory factory) {
Evaluation eval = template[0].spawn(factory.Unknown());
- eval.addDegree(Evaluation.PRIOR, this.priorDegree, 1);
+ eval.addDegree(Evaluation.PRIOR, this.priorDegree, 1,true);
return new Evaluation[] {eval};
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -45,7 +45,7 @@
public void setRuleFlowEventSupport(RuleFlowEventSupport ruleFlowEventSupport);
- public Object getNodeMemory(NodeMemory node);
+ public Object getNodeMemory(NodeMemory node);
public void clearNodeMemory(NodeMemory node);
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/NodeMemories.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/NodeMemories.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/NodeMemories.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -26,7 +26,7 @@
*/
public interface NodeMemories {
- public Object getNodeMemory( NodeMemory node );
+ public Object getNodeMemory( NodeMemory node );
public void clearNodeMemory( NodeMemory node );
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -33,6 +33,7 @@
import org.drools.reteoo.EvaluationTemplate;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.LeftTupleMemory;
+import org.drools.reteoo.ObservableRightTupleMemoryWrapper;
import org.drools.reteoo.RightTupleMemory;
import org.drools.reteoo.SingleEvaluationTemplate;
import org.drools.rule.ContextEntry;
@@ -187,11 +188,14 @@
}
RightTupleMemory factHandleMemory;
- if ( this.conf.isIndexRightBetaMemory() ) {
- factHandleMemory = new RightTupleIndexHashTable( new FieldIndex[]{index} );
- } else {
- factHandleMemory = new RightTupleList();
- }
+ if ( this.conf.isIndexRightBetaMemory() ) {
+ factHandleMemory = new RightTupleIndexHashTable( new FieldIndex[]{index} );
+ } else {
+ factHandleMemory = new RightTupleList();
+ }
+
+
+
memory = new BetaMemory( config.isSequential() ? null : tupleMemory,
factHandleMemory,
this.createContext() );
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/common/TupleStartEqualsConstraint.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -211,8 +211,11 @@
private EvaluationTemplate template;
public ConstraintKey getConstraintKey() {
- if (singletonKey == null)
+ if (singletonKey == null) {
+
+
singletonKey = new ConstraintKey("tuple","starts","...");
+ }
return singletonKey;
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IDegreeFactory.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -42,6 +42,14 @@
public IDegreeCombiner getModusPonensOp();
+
+ public IDegreeCombiner getExistsOperator();
+
+ public IDegreeCombiner getForallOperator();
+
+ public IDegreeCombiner getForAnyOperator();
+
+
// public IDegreeCombiner getEquivModusPonensOp();
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleDegreeFactory.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -8,6 +8,7 @@
import org.drools.degrees.operators.simple.SimpleAverage;
import org.drools.degrees.operators.simple.SimpleDotAnd;
import org.drools.degrees.operators.simple.SimpleEquiv;
+import org.drools.degrees.operators.simple.SimpleExists;
import org.drools.degrees.operators.simple.SimpleMaxOr;
import org.drools.degrees.operators.simple.SimpleMinAnd;
import org.drools.degrees.operators.simple.SimpleNot;
@@ -110,4 +111,16 @@
return new SimpleNullHandlingStrategy();
}
+ public IDegreeCombiner getExistsOperator() {
+ return new SimpleExists();
+ }
+
+ public IDegreeCombiner getForAnyOperator() {
+ return new SimpleAverage();
+ }
+
+ public IDegreeCombiner getForallOperator() {
+ return this.getAndOperator();
+ }
+
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDotAnd.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -11,6 +11,9 @@
public IDegree eval(IDegree[] args) {
+ if (args == null || args.length == 0)
+ return SimpleDegree.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/SimpleMaxOr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -11,7 +11,10 @@
public IDegree eval(IDegree[] args) {
- float ans = 1;
+ if (args == null || args.length == 0)
+ return SimpleDegree.UNKNOWN();
+
+ float ans = 0;
for (IDegree deg : args) {
SimpleDegree d = deg.getDegree();
ans = Math.max(ans,d.getValue());
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinAnd.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -10,6 +10,9 @@
public IDegree eval(IDegree[] args) {
+ if (args == null || args.length == 0)
+ return SimpleDegree.UNKNOWN();
+
float ans = 1;
for (IDegree deg : args) {
SimpleDegree d = deg.getDegree();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -690,4 +690,9 @@
throw new UnsupportedOperationException("Imperfect Accumulate will be supported soon ");
}
+
+ public ConstraintKey[] getConstraintKeys() {
+ throw new RuntimeDroolsException("CRISP Accumulate should not be asked for CK");
+
+ }
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -576,6 +576,11 @@
}
+ public ConstraintKey getConstraintKey() {
+ return this.getConstraint().getConstraintKey();
+ }
+
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -432,5 +432,8 @@
return this.filterStrat;
}
+ public LeftTupleSource getParentSource() {
+ return this.leftInput;
+ }
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CollectNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CollectNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -24,6 +24,7 @@
import java.util.Collection;
import org.drools.RuleBaseConfiguration;
+import org.drools.RuntimeDroolsException;
import org.drools.common.BetaConstraints;
import org.drools.common.ImperfectFactHandle;
import org.drools.common.InternalFactHandle;
@@ -579,5 +580,10 @@
throw new UnsupportedOperationException("Imperfect collect will be supported soon");
}
+
+ public ConstraintKey[] getConstraintKeys() {
+ throw new RuntimeDroolsException("CRISP Collect should not be asked for CK");
+
+ }
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -6,7 +6,9 @@
import java.util.Observable;
import java.util.Observer;
import java.util.Set;
+import java.util.Vector;
+import org.drools.RuntimeDroolsException;
import org.drools.degrees.IDegree;
import org.drools.degrees.operators.IDegreeCombiner;
import org.drools.degrees.operators.IMergeStrategy;
@@ -15,7 +17,7 @@
public class CompositeEvaluation extends Evaluation implements Observer {
private IDegreeCombiner operator;
- protected Evaluation[] operands;
+ protected Vector<Evaluation> operands;
private float opRate;
public CompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
@@ -23,10 +25,12 @@
super(id,key,deps,mergeStrat,nullStrat);
if (evalDegrees != null) {
- this.operands = new Evaluation[evalDegrees.length];
+ this.operands = new Vector<Evaluation>(evalDegrees.length);
for (int j = 0; j < evalDegrees.length; j++) {
setOperand(j,evalDegrees[j]);
}
+ } else {
+ this.operands = new Vector<Evaluation>(0);
}
this.operator = operator;
@@ -34,11 +38,26 @@
this.combine();
}
+
+
+ protected CompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
+ IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
+ super(id,key,deps,mergeStrat,nullStrat);
+
+ this.operands = new Vector<Evaluation>(0);
+ this.operator = null;
+
+ }
+
+
+
+
+
public CompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
int arity, IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
super(id,key,deps,mergeStrat,nullStrat);
- this.operands = new Evaluation[arity];
+ this.operands = new Vector<Evaluation>(arity);
this.operator = operator;
@@ -67,47 +86,62 @@
//
// }
- protected void combine() {
- if (operands == null)
- return;
+ protected boolean combine() {
- int N = operands.length;
- IDegree[] args = new IDegree[N];
+ IDegree[] args = null;
- for (int j=0; j < N; j++) {
- args[j] = operands[j].getDegree();
+ if (getOperands() != null) {
+ int N = getOperands().size();
+ args = new IDegree[N];
- }
-
+ int j = 0;
+ for (Evaluation eval : getOperands()) {
+ args[j++] = eval.getDegree();
+ }
+ }
+
IDegree opDeg = this.operator.eval(args);
updateOpRate();
- this.addDegree(Evaluation.EVAL, opDeg, getOpRate());
+ boolean newContrib = this.addDegree(Evaluation.EVAL, opDeg, getOpRate(),true);
+
+ return newContrib;
}
- public Evaluation[] getOperands() {
+ public Collection<Evaluation> getOperands() {
return operands;
}
public void setOperand(int position, Evaluation operand) {
- if (operands[position] != null && operands[position] != operand) {
- System.out.println("SET OPERAND "+operand.getKey()+ "with " + operand.getBitS());
- operands[position].deleteObserver(this);
+ if (operands.size() <= position) {
+ // Surely a new operand!
+ operands.setSize(position+1);
+
operand.addObserver(this);
- operands[position] = operand;
- combine();
+ //operands.set(position,operand);
} else {
- operand.addObserver(this);
- operands[position] = operand;
- }
-
+ if (operands.get(position) != null && operands.get(position) != operand) {
+ System.out.println("SET OPERAND "+operand.getKey()+ "with " + operand.getBitS());
+ operands.get(position).deleteObserver(this);
+ operand.addObserver(this);
+ //operands.set(position,operand);
+ //combine();
+ } else {
+ // merging with old op
+// if (operands.get(position) != null)
+// throw new RuntimeDroolsException("DD");
+ //operands.set(position,operand);
+ }
+ }
+
+ operands.set(position,operand);
}
public Collection<Evaluation> getEvalTree() {
- Collection<Evaluation> ans = new ArrayList<Evaluation>(2*operands.length);
+ Collection<Evaluation> ans = new ArrayList<Evaluation>(2*operands.size());
for (Evaluation eval : operands)
ans.addAll(eval.getEvalTree());
ans.add(this);
@@ -133,18 +167,24 @@
}
protected void updateOpRate() {
- float delta = 0;
- for (Evaluation child : this.operands) {
- delta += child.getInfoRate();
- }
- opRate = delta / (1.0f*this.operands.length);
+ if (this.operands.size() == 0) {
+ setOpRate(1);
+ } else {
+ float delta = 0;
+ for (Evaluation child : this.getOperands()) {
+ delta += child.getInfoRate();
+ }
+ setOpRate(delta / (1.0f*this.operands.size()));
+ }
}
public void update(Observable o, Object arg) {
- System.out.println("UPDATE HAS BEEN CALLED ON COMBOVAL");
- incInfo("EVAL",-opRate);
- combine();
+ System.out.println("\nUPDATE HAS BEEN CALLED ON COMBOVAL by" + o.toString());
+ incInfo("EVAL",-getOpRate());
+ combine();
+
+ this.notifyObservers(this);
}
protected IDegreeCombiner getOperator() {
@@ -176,5 +216,12 @@
}
return sb.toString();
}
+
+ /**
+ * @param opRate the opRate to set
+ */
+ public void setOpRate(float opRate) {
+ this.opRate = opRate;
+ }
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -56,7 +56,11 @@
return new CompositeEvaluation(id,key,deps,N,operator,mergeStrat,nullStrat);
}
+ public Evaluation spawn(IOperandSet args) {
+ return new SetCompositeEvaluation(id,key,deps,operator,args,mergeStrat,nullStrat);
+ }
+
protected IDegreeCombiner getOperator() {
return operator;
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EntryPointNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -340,4 +340,9 @@
}
}
+ @Override
+ public ConstraintKey getConstraintKey() {
+ return new ConstraintKey("ENTRYPOINT");
+ }
+
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -23,6 +23,7 @@
import java.util.Collections;
import org.drools.RuleBaseConfiguration;
+import org.drools.RuntimeDroolsException;
import org.drools.common.BaseNode;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.NodeMemory;
@@ -412,7 +413,19 @@
}
}
+
+
+
+ public ConstraintKey[] getConstraintKeys() {
+ throw new RuntimeDroolsException("Imperfect eval will be supported soon");
+
+ }
+
+ public LeftTupleSource getParentSource() {
+ return this.tupleSource;
+ }
+
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -25,6 +25,8 @@
public class EvalRecord extends CompositeEvaluation implements Observer {
+ public static final int INITIAL_ID = -99;
+
private Map<ConstraintKey, Evaluation> evalMap;
//private ConstraintKey mainKey;
@@ -67,9 +69,9 @@
//pre-order visit!
if (eval instanceof CompositeEvaluation) {
CompositeEvaluation combo = (CompositeEvaluation) eval;
- Evaluation[] operands = combo.getOperands();
- for (int j = 0; j < operands.length; j++) {
- Evaluation newOp = insert(operands[j]);
+ Vector<Evaluation> operands = (Vector<Evaluation>) combo.getOperands();
+ for (int j = 0; j < operands.size(); j++) {
+ Evaluation newOp = insert(operands.get(j));
combo.setOperand(j,newOp);
}
}
@@ -79,7 +81,7 @@
System.out.println(this.getClass()+" insert "+eval.toString());
evalMap.put(eval.getKey(),eval);
prevEval = eval;
- eval.addObserver(this);
+ //eval.addObserver(this);
} else {
System.out.println(this.getClass()+" merge "+eval.toString());
prevEval.merge(eval);
@@ -102,20 +104,28 @@
if (newEval) {
if (operands == null) {
- operands = new Evaluation[1];
- operands[0] = addedEval;
+ operands = new Vector<Evaluation>(1);
+
+ operands.add(addedEval);
} else {
- int N = operands.length;
- Evaluation[] temp = new Evaluation[N+1];
+ /*
+ int N = operands.size();
+ Vector<Evaluation> temp = new Vector<Evaluation>(N+1);
+ temp.setSize(N+1);
for (int j = 0; j < N; j++)
- temp[j] = operands[j];
+ temp.set(j,operands.get(j));
operands = temp;
- operands[N] = addedEval;
+ operands.set(N,addedEval);
+ */
+ operands.add(addedEval);
}
}
+ addedEval.deleteObserver(this);
+ addedEval.addObserver(this);
+
((DynamicConstraintKey) this.getKey()).addArg(eval.getKey());
combine();
@@ -290,16 +300,18 @@
public void replace(CompositeEvaluation operator, int N) {
- int M = this.getOperands().length;
+
+ int M = this.getOperands().size();
for (int j = M-N; j < M; j++) {
- Evaluation operand = getOperands()[j];
+ Evaluation operand = ((Vector<Evaluation>) getOperands()).get(j);
+
operand.deleteObserver(this);
operator.setOperand(j+N-M, operand);
((DynamicConstraintKey) operator.getKey()).addArg(operand.getKey());
}
-
+ /*
Evaluation[] locOperands = new Evaluation[M-N+1];
((DynamicConstraintKey) this.getKey()).reset();
for (int j = 0; j < M-N; j++) {
@@ -310,16 +322,33 @@
((DynamicConstraintKey) this.getKey()).addArg(operator.getKey());
operands = locOperands;
+ */
- operator.combine();
+ Vector<Evaluation> locOperands = (Vector<Evaluation>) getOperands();
- evalMap.put(operator.getKey(),operator);
- operator.addObserver(this);
+ ((DynamicConstraintKey) this.getKey()).reset();
+ for (int j = 0; j < M-N; j++) {
+ ((DynamicConstraintKey) this.getKey()).addArg(locOperands.get(j).getKey());
+ }
+ ((DynamicConstraintKey) this.getKey()).addArg(operator.getKey());
+
+ for (int j = 0; j < N; j++) {
+ locOperands.remove(locOperands.size()-1);
+ }
+ locOperands.add(operator);
+
+
+ operator.combine();
+ evalMap.put(operator.getKey(),operator);
+ operator.addObserver(this);
+
this.combine();
this.setChanged();
this.notifyObservers(null);
+
+
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Evaluation.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -58,12 +58,13 @@
public Evaluation(int id, ConstraintKey key, Set<String> deps, IDegree evalDeg, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
this(id,key,deps,mergeStrat,nullStrat);
- this.addDegree(Evaluation.EVAL,evalDeg,1);
+ this.addDegree(Evaluation.EVAL,evalDeg,1,true);
+
}
public Evaluation(int id, ConstraintKey key, Set<String> deps, IDegree evalDeg, String source, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
this(id,key,deps,mergeStrat,nullStrat);
- this.addDegree(source,evalDeg,1);
+ this.addDegree(source,evalDeg,1,true);
}
@@ -101,7 +102,8 @@
System.out.println("Trying to merge degrees for source "+ source + "+1");
IDegree evalDeg = moreDegrees.get(source);
if (evalDeg != null) {
-
+
+ /*
confidence.put(source, conf.get(source));
if (getDegreeBit(source) == null) {
@@ -110,36 +112,53 @@
} else {
this.degrees.put(source,evalDeg);
}
-
+ */
+ newContrib = newContrib || this.addDegree(source, evalDeg, conf.get(source),false);
+
}
}
- update(newContrib);
+ if (newContrib) {
+ aggDegree = mergeDegrees();
+ this.setChanged();
+ this.notifyObservers();
+ }
+
}
- public void addDegree(String source, IDegree evalDeg, float wgt) {
-
+ public boolean addDegree(String source, IDegree evalDeg, float wgt, boolean immediateUpdate) {
boolean newContrib = false;
+ boolean rateIncr = false;
if (evalDeg == null) {
- newContrib = clearDegree(source);
+ /*
+ newContrib = clearDegree(source);
+ rateIncr = true;
+ */
} else {
+ Float prevConf = confidence.get(source);
+ confidence.put(source, wgt);
+ rateIncr = prevConf == null ? true : prevConf.floatValue() < wgt;
- confidence.put(source, wgt);
-
- if (getDegreeBit(source) == null) {
+ 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);
newContrib = true;
} else {
- System.out.println(this.key+" UPDATED degree for source "+ source + " with wgt "+wgt);
- this.degrees.put(source,evalDeg);
- newContrib = true;
+ if (oldVal.equals(evalDeg)) {
+ System.out.println(this.key+" No news for source "+ source + " with wgt "+wgt);
+ newContrib = false;
+ } else {
+ System.out.println(this.key+" UPDATED degree for source "+ source + " with wgt "+wgt);
+ this.degrees.put(source,evalDeg);
+ newContrib = true;
+ }
}
// if (getDegreeBit(source) == null) {
@@ -153,9 +172,19 @@
}
+ System.out.println(this.getKey()+"\n\t\tAdd degree status immUpd = "+immediateUpdate + " , newcontr = "+newContrib+ " , rateincr ="+ rateIncr);
- update(newContrib);
+ if (immediateUpdate && newContrib)
+ aggDegree = mergeDegrees();
+
+ if (immediateUpdate && (newContrib || rateIncr)) {
+ this.setChanged();
+ this.notifyObservers();
+ }
+
+ return (newContrib || rateIncr);
+
}
protected void incInfo(String source, float delta) {
@@ -163,11 +192,11 @@
}
-
- protected void update(boolean newContrib) {
+ /*
+ protected void update(boolean rateIncreased) {
IDegree newDeg = mergeDegrees();
- if ((this.countObservers() > 0) && ((! newDeg.equals(aggDegree)) || newContrib)) {
+ if ((this.countObservers() > 0) && ((! newDeg.equals(aggDegree)) || rateIncreased)) {
aggDegree = newDeg;
this.setChanged();
this.notifyObservers(newDeg);
@@ -176,6 +205,7 @@
}
}
+ */
public boolean clearDegree(String source) {
boolean cleared = false;
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -16,6 +16,7 @@
package org.drools.reteoo;
+import org.drools.RuntimeDroolsException;
import org.drools.common.BetaConstraints;
import org.drools.common.ImperfectFactHandle;
import org.drools.common.InternalFactHandle;
@@ -398,21 +399,32 @@
return NodeTypeEnums.ExistsNode;
}
+
+
+
+ public void assertLeftTuple(ImperfectLeftTuple leftTuple,
+ PropagationContext context, InternalWorkingMemory workingMemory,
+ IDegreeFactory factory) {
+ throw new RuntimeDroolsException("Imperfect Exists is handled by specific subclass");
+ }
+
public void assertObject(ImperfectFactHandle factHandle,
PropagationContext propagationContext,
InternalWorkingMemory workingMemory, IDegreeFactory factory,
EvalRecord record) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Imperfect exist will be supported soon");
+ throw new RuntimeDroolsException("Imperfect Exists is handled by specific subclass");
}
+
+
+ public ConstraintKey[] getConstraintKeys() {
+ throw new RuntimeDroolsException("CRISP Exist should not be asked for CK");
+
+ }
+
+
+
+
- public void assertLeftTuple(ImperfectLeftTuple leftTuple,
- PropagationContext context, InternalWorkingMemory workingMemory,
- IDegreeFactory factory) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("Imperfect exist will be supported soon");
- }
-
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/FromNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -6,6 +6,7 @@
import java.io.Serializable;
import org.drools.RuleBaseConfiguration;
+import org.drools.RuntimeDroolsException;
import org.drools.common.BaseNode;
import org.drools.common.BetaConstraints;
import org.drools.common.EmptyBetaConstraints;
@@ -340,5 +341,14 @@
}
}
+ public ConstraintKey[] getConstraintKeys() {
+ throw new RuntimeDroolsException("CRISP FROM should not be asked for CK");
+
+ }
+
+ public LeftTupleSource getParentSource() {
+ return this.tupleSource;
+ }
+
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -1,12 +1,18 @@
package org.drools.reteoo;
+import org.drools.FactException;
+import org.drools.FactHandle;
import org.drools.RuleBaseConfiguration;
+import org.drools.common.DefaultFactHandle;
+import org.drools.common.ImperfectFactHandle;
+import org.drools.common.InternalWorkingMemory;
import org.drools.common.RuleBasePartitionId;
import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.factory.SimpleDegreeFactory;
import org.drools.degrees.factory.SimpleFuzzyDegreeFactory;
import org.drools.rule.EntryPoint;
import org.drools.spi.FactHandleFactory;
+import org.drools.spi.PropagationContext;
public class ImperfectRuleBase extends ReteooRuleBase {
@@ -124,5 +130,25 @@
public IDegreeFactory getDegreeFactory() {
return degreeFactory;
}
+
+
+
+ public void assertObject(final FactHandle handle,
+ final Object object,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) throws FactException {
+
+ IDegreeFactory factory = this.getDegreeFactory();
+ EvalRecord record = new EvalRecord(EvalRecord.INITIAL_ID,
+ getDegreeFactory().getAndOperator(),
+ getDegreeFactory().getMergeStrategy(),
+ getDegreeFactory().getNullHandlingStrategy());
+
+ getRete().assertObject( (ImperfectFactHandle) handle,
+ context,
+ workingMemory,
+ factory,
+ record);
+ }
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/InitialFactHandle.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/InitialFactHandle.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/InitialFactHandle.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -1,6 +1,7 @@
package org.drools.reteoo;
import org.drools.common.DefaultFactHandle;
+import org.drools.common.ImperfectFactHandle;
import org.drools.common.InternalFactHandle;
/*
@@ -19,7 +20,7 @@
* limitations under the License.
*/
-public class InitialFactHandle extends DefaultFactHandle {
+public class InitialFactHandle extends ImperfectFactHandle {
/**
*
*/
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -20,6 +20,7 @@
import java.util.Observable;
import java.util.Observer;
+import org.drools.RuntimeDroolsException;
import org.drools.common.BetaConstraints;
import org.drools.common.ImperfectFactHandle;
import org.drools.common.InternalFactHandle;
@@ -636,7 +637,10 @@
-
+ public ConstraintKey[] getConstraintKeys() {
+ return this.constraints.getConstraintKeys();
+
+ }
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -326,5 +326,13 @@
}
+ @Override
+ public ConstraintKey[] getConstraintKeys() {
+ return new ConstraintKey[] {this.objectSource.getConstraintKey()};
+ }
+
+ public LeftTupleSource getParentSource() {
+ return null;
+ }
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/LeftTupleSource.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/LeftTupleSource.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/LeftTupleSource.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -157,4 +157,8 @@
public boolean isInUse() {
return this.sink.size() > 0;
}
+
+ public abstract ConstraintKey[] getConstraintKeys();
+
+ public abstract LeftTupleSource getParentSource();
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -77,7 +77,7 @@
- EvalRecord premiseRecord = leftTuple.getRecord().clone();
+ EvalRecord premiseRecord = leftTuple.getRecord();
Evaluation implEval = this.constraints.isSatisfiedCachedRight( memory.getContext(),
leftTuple,
@@ -94,7 +94,9 @@
EvalRecord mpRecord = new EvalRecord(this.id,factory.getModusPonensOp(),factory.getMergeStrategy(),factory.getNullHandlingStrategy());
- mpRecord.addEvaluation(premiseRecord.getOperands()[0]);
+ Evaluation core = premiseRecord.getOperands().iterator().next();
+ core.deleteObserver(premiseRecord);
+ mpRecord.addEvaluation(core);
mpRecord.addEvaluation(implEval);
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NotNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NotNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NotNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import org.drools.RuntimeDroolsException;
import org.drools.common.BetaConstraints;
import org.drools.common.ImperfectFactHandle;
import org.drools.common.InternalFactHandle;
@@ -330,4 +331,9 @@
// TODO Auto-generated method stub
}
+
+
+ public ConstraintKey[] getConstraintKeys() {
+ throw new RuntimeDroolsException("Crisp NOT should not be asked for CKs");
+ }
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -192,4 +192,7 @@
public boolean isInUse() {
return this.sink.size() > 0;
}
+
+
+ public abstract ConstraintKey getConstraintKey();
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -513,7 +513,7 @@
- protected ConstraintKey getConstraintKey() {
+ public ConstraintKey getConstraintKey() {
return new ConstraintKey("class","==",((ClassObjectType) this.objectType).getClassName() );
}
@@ -552,4 +552,6 @@
}
+
+
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/OperatorInstaller.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -4,6 +4,9 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Vector;
import org.drools.RuntimeDroolsException;
@@ -39,15 +42,16 @@
}
public EvaluationTemplate buildEvaluationTemplate(IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {
+
template = new CompositeEvaluationTemplate( this.getId(),
- new DynamicConstraintKey(operator.getName()),
+ new DynamicConstraintKey(operator.getName()),
null,
getArity(),
operator,
mergeStrat,
nullStrat
);
-
+
return template;
}
@@ -136,11 +140,12 @@
PropagationContext context, InternalWorkingMemory workingMemory,
IDegreeFactory factory) {
EvalRecord record = leftTuple.getRecord();
- int M = record.getOperands().length;
+ int M = record.getOperands().size();
int N = getArity();
record.replace((CompositeEvaluation) getTemplate().spawn(N),N);
+
this.getSinkPropagator().propagateAssertLeftTuple(
leftTuple,
@@ -177,5 +182,12 @@
}
+ public ConstraintKey[] getConstraintKeys() {
+ return new ConstraintKey[] {template.getConstraintKey()};
+ }
+ public LeftTupleSource getParentSource() {
+ return this.source;
+ }
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -408,4 +408,15 @@
}
+
+
+
+
+
+
+ public ConstraintKey getConstraintKey() {
+ return new ConstraintKey("PROPQUEUE");
+ }
+
+
}
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/Rete.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -282,6 +282,11 @@
public IGammaNode getNode(ConstraintKey key) {
return this.constraintIndex.get(key);
}
+
+ public ConstraintKey getConstraintKey() {
+ return new ConstraintKey("RETE");
+ }
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -283,10 +283,13 @@
this.leftTuple,
this.factHandle );
ReteooRuleBase ruleBase = (ReteooRuleBase) workingMemory.getRuleBase();
- ruleBase.assertObject( this.factHandle,
+
+
+ ruleBase.assertObject( this.factHandle,
this.factHandle.getObject(),
context,
workingMemory );
+
}
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -342,6 +342,19 @@
}
+
+
+
+ public ConstraintKey[] getConstraintKeys() {
+ return tupleSource.getConstraintKeys();
+ }
+
+ public ConstraintKey getConstraintKey() {
+ return getConstraintKeys()[0];
+ }
+
+
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/RightTupleMemory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/RightTupleMemory.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/RightTupleMemory.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -2,7 +2,7 @@
import org.drools.util.Iterator;
-public interface RightTupleMemory {
+public interface RightTupleMemory extends IOperandSet {
public RightTuple getFirst(LeftTuple leftTuple);
public RightTuple getLast(LeftTuple leftTuple);
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-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ImperfectGroupElementBuilder.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -9,11 +9,13 @@
import org.drools.RuntimeDroolsException;
import org.drools.common.BetaConstraints;
+import org.drools.common.EmptyBetaConstraints;
import org.drools.common.TupleStartEqualsConstraint;
import org.drools.degrees.factory.IDegreeFactory;
import org.drools.degrees.operators.IDegreeCombiner;
import org.drools.reteoo.AndOperatorInstaller;
import org.drools.reteoo.ExistsNode;
+import org.drools.reteoo.ImperfectExistsNode;
import org.drools.reteoo.ImperfectRuleBase;
import org.drools.reteoo.JoinNode;
import org.drools.reteoo.LeftInputAdapterNode;
@@ -379,7 +381,7 @@
}
final BetaConstraints betaConstraints = utils.createBetaNodeConstraint( context,
- context.getBetaconstraints(),
+ context.getBetaconstraints(),
false );
Behavior[] behaviors = createBehaviorArray( context );
@@ -388,7 +390,7 @@
// or as subnetwork join node as the context was set appropriatelly
// in each case
context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
- new ExistsNode( context.getNextId(),
+ new ImperfectExistsNode( context.getNextId(),
context.getTupleSource(),
context.getObjectSource(),
betaConstraints,
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ImperfectReteooRuleBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ImperfectReteooRuleBuilder.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ImperfectReteooRuleBuilder.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -50,7 +50,7 @@
this.getUtils().addBuilder( Accumulate.class,
new AccumulateBuilder() );
this.getUtils().addBuilder( Forall.class,
- new ImperfectForallBuilder() );
+ new ForallBuilder() );
this.getUtils().addBuilder( EntryPoint.class,
new EntryPointBuilder() );
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -306,6 +306,20 @@
return this.entry;
}
+
+ public boolean hasNext() {
+ if (this.entry != null && this.entry.getNext() != null)
+ return true;
+
+ int row = this.row;
+ while ( this.table[++row] == null ) {
+ if ( this.row == this.length ) {
+ return false;
+ }
+
+ }
+ return true;
+ }
// /* (non-Javadoc)
// * @see org.drools.util.Iterator#next()
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/Iterator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/Iterator.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/Iterator.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -6,4 +6,5 @@
extends
Serializable {
public Object next();
+ public boolean hasNext();
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LeftTupleIndexHashTable.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LeftTupleIndexHashTable.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LeftTupleIndexHashTable.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -164,6 +164,22 @@
this.row = -1;
this.entry = null;
}
+
+ //TODO: test...
+ public boolean hasNext() {
+ if (this.entry != null && this.entry.getNext() != null)
+ return true;
+
+ int row = this.row;
+ while ( this.table[++row] == null ) {
+ if ( this.row == this.length ) {
+ return false;
+ }
+
+ }
+ return true;
+ }
+
}
public LeftTuple[] toArray() {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LeftTupleList.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LeftTupleList.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LeftTupleList.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -139,6 +139,10 @@
return null;
}
}
+
+ public boolean hasNext() {
+ return this.current != null;
+ }
public void remove() {
// do nothing
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LinkedList.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LinkedList.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/LinkedList.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -303,6 +303,10 @@
return node;
}
+ public boolean hasNext() {
+ return this.current != null;
+ }
+
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
list = (LinkedList)in.readObject();
current = (LinkedListNode)in.readObject();
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/RightTupleIndexHashTable.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/RightTupleIndexHashTable.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/RightTupleIndexHashTable.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -6,7 +6,11 @@
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.util.Collection;
+import java.util.LinkedList;
+import org.drools.reteoo.Evaluation;
+import org.drools.reteoo.ImperfectRightTuple;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.RightTuple;
import org.drools.reteoo.RightTupleMemory;
@@ -37,7 +41,7 @@
index );
}
- public RightTupleIndexHashTable(final int capacity,
+ public RightTupleIndexHashTable(final int capacity,
final float loadFactor,
final FieldIndex[] index) {
super( capacity,
@@ -174,6 +178,20 @@
this.row = -1;
this.entry = null;
}
+
+ public boolean hasNext() {
+ if (this.entry != null && this.entry.getNext() != null)
+ return true;
+
+ int row = this.row;
+ while ( this.table[++row] == null ) {
+ if ( this.row == this.length ) {
+ return false;
+ }
+
+ }
+ return true;
+ }
}
public Entry[] toArray() {
@@ -354,4 +372,17 @@
return builder.toString();
}
+
+
+
+ public Collection<Evaluation> getArgs() {
+ LinkedList<Evaluation> ans = new LinkedList<Evaluation>();
+ Iterator iter = this.iterator();
+ while (iter.hasNext()) {
+ RightTuple rt = (RightTuple) iter.next();
+ if (rt instanceof ImperfectRightTuple)
+ ans.add(((ImperfectRightTuple) rt).getRecord());
+ }
+ return ans;
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/RightTupleList.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/RightTupleList.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/util/RightTupleList.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -3,7 +3,12 @@
*/
package org.drools.util;
+import java.util.Collection;
+import java.util.LinkedList;
+
import org.drools.common.InternalFactHandle;
+import org.drools.reteoo.Evaluation;
+import org.drools.reteoo.ImperfectRightTuple;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.RightTuple;
import org.drools.reteoo.RightTupleMemory;
@@ -150,6 +155,10 @@
return null;
}
}
+
+ public boolean hasNext() {
+ return this.current != null;
+ }
public void remove() {
// do nothing
@@ -206,4 +215,15 @@
return builder.toString();
}
+
+ public Collection<Evaluation> getArgs() {
+ LinkedList<Evaluation> ans = new LinkedList<Evaluation>();
+ Iterator iter = this.iterator();
+ while (iter.hasNext()) {
+ RightTuple rt = (RightTuple) iter.next();
+ if (rt instanceof ImperfectRightTuple)
+ ans.add(((ImperfectRightTuple) rt).getRecord());
+ }
+ return ans;
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/CompositeObjectSinkAdapterTest.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -9,6 +9,7 @@
import org.drools.Cheese;
import org.drools.RuleBaseFactory;
+import org.drools.RuntimeDroolsException;
import org.drools.base.ClassFieldAccessorCache;
import org.drools.base.ClassFieldAccessorStore;
import org.drools.base.ValueType;
@@ -621,5 +622,15 @@
// TODO Auto-generated method stub
}
+
+ public ConstraintKey getConstraintKey() {
+ return new ConstraintKey("MOCK");
+
+ }
+
+ @Override
+ public ConstraintKey[] getConstraintKeys() {
+ return new ConstraintKey[] {new ConstraintKey("MOCK")};
+ }
}
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockLeftTupleSink.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockLeftTupleSink.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockLeftTupleSink.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -182,7 +182,14 @@
}
+ public ConstraintKey[] getConstraintKeys() {
+ return new ConstraintKey[] {new ConstraintKey("MOCK")};
+ }
+ public LeftTupleSource getParentSource() {
+ return null;
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockObjectSource.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockObjectSource.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockObjectSource.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -103,4 +103,9 @@
}
+
+ public ConstraintKey getConstraintKey() {
+ return new ConstraintKey("MOCK");
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/test/java/org/drools/reteoo/MockTupleSource.java 2009-04-20 23:16:43 UTC (rev 26163)
@@ -70,5 +70,13 @@
// TODO Auto-generated method stub
}
+
+ public ConstraintKey[] getConstraintKeys() {
+ return new ConstraintKey[] {new ConstraintKey("MOCK")};
+ }
+
+ public LeftTupleSource getParentSource() {
+ return null;
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/branches/DroolsChance/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/chance/FuzzyTest1.drl
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/chance/FuzzyTest1.drl 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/chance/FuzzyTest1.drl 2009-04-20 23:16:43 UTC (rev 26163)
@@ -24,6 +24,8 @@
drools.inject(new Fan(),"org.drools.examples.chance.Fan.speed","seems","stop");
end
+
+
rule "Hot"
when
$r : Room( temperature hot[] 0)
@@ -35,6 +37,10 @@
+
+
+
+
rule "Fan1"
when
$f : Fan( speed seems[] "fast")
@@ -43,6 +49,7 @@
writer.write("\n\n ********** Set speed to fast ****** \n\n" + drools.getConsequenceDegree());
end
+
rule "Fan2"
when
$f : Fan( speed seems[] "slow")
@@ -51,6 +58,8 @@
writer.write("\n\n ********** Set speed to slow ****** \n\n" + drools.getConsequenceDegree());
end
+
+
rule "Fan3"
when
$f : Fan( speed seems[] "stop")
Modified: labs/jbossrules/branches/DroolsChance/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/chance/HelloWorld.drl
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/chance/HelloWorld.drl 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/chance/HelloWorld.drl 2009-04-20 23:16:43 UTC (rev 26163)
@@ -16,7 +16,7 @@
Trigger();
then
writer.write("\n A Message with status = HELLO will hold the message Hello!");
- drools.inject(new Message(Message.HELLO),"org.drools.examples.Test$Message.message","String ==","Hello!");
+ drools.inject(new Message(Message.HELLO),"org.drools.examples.chance.Test$Message.message","String ==","Hello!");
end
@@ -35,7 +35,7 @@
//FIXME Until lexical analysis is done properly, args must be defined in two steps
Object[] args = new Object[] { p , b };
- drools.inject(args,"org.drools.examples.Test$Book.owner","Object ==","$p");
+ drools.inject(args,"org.drools.examples.chance.Test$Book.owner","Object ==","$p");
end
Modified: labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt 2009-04-20 18:27:03 UTC (rev 26162)
+++ labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt 2009-04-20 23:16:43 UTC (rev 26163)
@@ -1 +1 @@
-5.0.0.SNAPSHOT 25662:26123
\ No newline at end of file
+5.0.0.SNAPSHOT 26142
\ No newline at end of file
More information about the jboss-svn-commits
mailing list