[jboss-svn-commits] JBL Code SVN: r26140 - in labs/jbossrules/branches/DroolsChance: drools-compiler/src/main/java/org/drools/compiler and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Apr 19 10:36:50 EDT 2009
Author: dsotty
Date: 2009-04-19 10:36:49 -0400 (Sun, 19 Apr 2009)
New Revision: 26140
Modified:
labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/ConstraintKey.java
labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/DynamicConstraintKey.java
labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.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/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/EvalRecord.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/NodeTypeEnums.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt
Log:
inter-pattern operators
Modified: labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/ConstraintKey.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/ConstraintKey.java 2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/ConstraintKey.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -22,10 +22,13 @@
}
-
+ protected String buildKey(String op, String arg) {
+ return op+"("+arg+")";
+ }
+
public ConstraintKey(String op, String arg) {
- this.key = op+"("+arg+")";
+ this.key = buildKey(op, arg);
}
public ConstraintKey(String key) {
Modified: labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/DynamicConstraintKey.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/DynamicConstraintKey.java 2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/DynamicConstraintKey.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -2,11 +2,18 @@
public class DynamicConstraintKey extends ConstraintKey {
+ private String op;
+
public DynamicConstraintKey(String op) {
super(op, "");
+ this.op = op;
}
+ public void reset() {
+ this.key = buildKey(op, "");
+ }
+
public void addArg(ConstraintKey arg) {
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-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -238,7 +238,9 @@
DroolsTree resultTree = (DroolsTree) parser.compilation_unit().getTree();
System.out.println(this.getClass().toString() + " HACKED TO GET DROOLSTREE");
- //System.out.println((((DroolsTree) resultTree.getChild(9)).toIndentedStringTree()));
+
+ //System.out.println((((DroolsTree) resultTree.getChild(8)).toStringTree()));
+ //System.out.println((((DroolsTree) resultTree.getChild(4)).toIndentedStringTree()));
//
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-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -256,11 +256,12 @@
record.setPropagationContext(propagationContext);
record.setWorkingMemory(workingMemory);
record.addObserver(this);
- //wait for more
+ //wait for more1
return;
case IFilterStrategy.PASS :
//go on
+ System.out.println("Alpha PASS ");
this.sink.propagateAssertObject(factHandle,
propagationContext,
workingMemory,
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-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -60,7 +60,8 @@
LeftTupleSinkNode,
ObjectSinkNode,
RightTupleSink,
- NodeMemory, IFilteringNode {
+ NodeMemory,
+ IFilteringNode {
// ------------------------------------------------------------
// Instance members
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-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -34,6 +34,18 @@
this.combine();
}
+ 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.operator = operator;
+ //Don't do combine as operands are not set!
+ //this.combine();
+ }
+
// public CompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
@@ -139,8 +151,13 @@
return operator;
}
+ protected void setOperator(IDegreeCombiner newOp) {
+ this.operator = newOp;
+ //combine();
+ }
+
public String toStringTree(int depth) {
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-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -52,7 +52,11 @@
return new CompositeEvaluation(id,key,deps,children.values().toArray(new Evaluation[children.values().size()]),operator,mergeStrat,nullStrat);
}
+ public Evaluation spawn(int N) {
+ return new CompositeEvaluation(id,key,deps,N,operator,mergeStrat,nullStrat);
+ }
+
protected IDegreeCombiner getOperator() {
return operator;
}
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-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -288,7 +288,43 @@
return rightTuple;
}
+ public void replace(CompositeEvaluation operator, int N) {
+
+ int M = this.getOperands().length;
+ for (int j = M-N; j < M; j++) {
+ Evaluation operand = getOperands()[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++) {
+ locOperands[j] = operands[j];
+ ((DynamicConstraintKey) this.getKey()).addArg(operands[j].getKey());
+ }
+ locOperands[M-N] = operator;
+ ((DynamicConstraintKey) this.getKey()).addArg(operator.getKey());
+
+ operands = locOperands;
+
+ 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/ImperfectRuleBase.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java 2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -1,9 +1,11 @@
package org.drools.reteoo;
import org.drools.RuleBaseConfiguration;
+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;
public class ImperfectRuleBase extends ReteooRuleBase {
@@ -94,22 +96,21 @@
setDegreeFactory(factory);
}
-// /**
-// * Construct.
-// *
-// * @param id
-// * The rete network.
-// */
-// public ImperfectRuleBase(final String id,
-// final RuleBaseConfiguration config,
-// final FactHandleFactory factHandleFactory,
-// final IDegreeFactory degreeFactory) {
-// super( id,
-// config,
-// factHandleFactory );
-// this.degreeFactory = degreeFactory;
-// }
+
+ protected void setupRete() {
+ setRete(new Rete( this ));
+ setReteooBuilder(new ImperfectReteooBuilder( this ));
+ // always add the default entry point
+ EntryPointNode epn = new EntryPointNode( this.getReteooBuilder().getIdGenerator().getNextId(),
+ RuleBasePartitionId.MAIN_PARTITION,
+ this.config.isMultithreadEvaluation(),
+ this.getRete(),
+ EntryPoint.DEFAULT );
+ epn.attach();
+ }
+
+
/**
* @param degreeFactory the degreeFactory to set
*/
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-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -238,7 +238,9 @@
switch (this.filterStrat.doTry(mainRecord)) {
- case IFilterStrategy.DROP : return;
+ case IFilterStrategy.DROP :
+ System.out.println("Beta FAIL at assertTuple: DROP record");
+ return;
case IFilterStrategy.HOLD : //TODO: HOLD
System.out.println("HOLD RULES @JOIN NODE"+this.getId());
@@ -254,6 +256,7 @@
break;
case IFilterStrategy.PASS :
+ System.out.println("Beta PASS at assertTuple: propagate record");
this.sink.propagateAssertLeftTuple( leftTuple,
rightTuple,
context,
@@ -428,7 +431,9 @@
System.out.println("Situation at join eval"+mainRecord.expand());
switch (this.filterStrat.doTry(mainRecord)) {
- case IFilterStrategy.DROP : return;
+ case IFilterStrategy.DROP :
+ System.out.println("Beta DROP at assertobject");
+ return;
case IFilterStrategy.HOLD : //TODO: HOLD
System.out.println("HOLD RULES @JOIN NODE"+this.getId());
@@ -444,6 +449,7 @@
break;
case IFilterStrategy.PASS :
+ System.out.println("Beta PASS at assertObjecf: propagate record");
this.sink.propagateAssertLeftTuple( leftTuple,
rightTuple,
context,
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-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -94,7 +94,7 @@
EvalRecord mpRecord = new EvalRecord(this.id,factory.getModusPonensOp(),factory.getMergeStrategy(),factory.getNullHandlingStrategy());
- mpRecord.addEvaluation(premiseRecord);
+ mpRecord.addEvaluation(premiseRecord.getOperands()[0]);
mpRecord.addEvaluation(implEval);
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java 2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -11,4 +11,6 @@
public static final short RightInputAdaterNode = 7;
public static final short QueryTerminalNode = 8;
public static final short RuleTerminalNode = 9;
+
+ public static final short Imperfect_OperatorNode = 105;
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java 2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -90,12 +90,12 @@
* network.
*/
ReteooBuilder(final InternalRuleBase ruleBase) {
- this.ruleBase = ruleBase;
- this.rules = new HashMap<Rule, BaseNode[]>();
+ this.setRuleBase(ruleBase);
+ this.setRules(new HashMap<Rule, BaseNode[]>());
//Set to 1 as Rete node is set to 0
- this.idGenerator = new IdGenerator( 1 );
- this.ruleBuilder = new ReteooRuleBuilder();
+ this.setIdGenerator(new IdGenerator( 1 ));
+ this.setRuleBuilder(new ReteooRuleBuilder());
}
// ------------------------------------------------------------
@@ -114,11 +114,11 @@
* @throws InvalidPatternException
*/
void addRule(final Rule rule) throws InvalidPatternException {
- final List<TerminalNode> terminals = this.ruleBuilder.addRule( rule,
- this.ruleBase,
- this.idGenerator );
+ final List<TerminalNode> terminals = this.getRuleBuilder().addRule( rule,
+ this.getRuleBase(),
+ this.getIdGenerator() );
- this.rules.put( rule,
+ this.getRules().put( rule,
terminals.toArray( new BaseNode[terminals.size()] ) );
}
@@ -137,7 +137,7 @@
}
Map map = new HashMap();
- for ( Iterator it = this.rules.values().iterator(); it.hasNext(); ) {
+ for ( Iterator it = this.getRules().values().iterator(); it.hasNext(); ) {
BaseNode[] nodes = (BaseNode[]) it.next();
for ( int i = 0; i < nodes.length; i++ ) {
if ( nodes[i] instanceof RuleTerminalNode ) {
@@ -170,7 +170,7 @@
node.setSequence( i++ );
}
- ruleBase.getAgendaGroupRuleTotals().put( agendaGroup,
+ getRuleBase().getAgendaGroupRuleTotals().put( agendaGroup,
new Integer( i ) );
}
ordered = true;
@@ -221,14 +221,14 @@
}
public BaseNode[] getTerminalNodes(final Rule rule) {
- return (BaseNode[]) this.rules.get( rule );
+ return (BaseNode[]) this.getRules().get( rule );
}
public void removeRule(final Rule rule) {
// reset working memories for potential propagation
- InternalWorkingMemory[] workingMemories = this.ruleBase.getWorkingMemories();
+ InternalWorkingMemory[] workingMemories = this.getRuleBase().getWorkingMemories();
- final Object object = this.rules.remove( rule );
+ final Object object = this.getRules().remove( rule );
final BaseNode[] nodes = (BaseNode[]) object;
final RuleRemovalContext context = new RuleRemovalContext();
@@ -301,8 +301,8 @@
bytes = new ByteArrayOutputStream();
droolsStream = new DroolsObjectOutputStream( bytes );
}
- droolsStream.writeObject( rules );
- droolsStream.writeObject( idGenerator );
+ droolsStream.writeObject( getRules() );
+ droolsStream.writeObject( getIdGenerator() );
droolsStream.writeBoolean( ordered );
if ( !isDrools ) {
bytes.close();
@@ -323,15 +323,64 @@
bytes = new ByteArrayInputStream( (byte[]) in.readObject() );
droolsStream = new DroolsObjectInputStream( bytes );
}
- this.rules = (Map<Rule, BaseNode[]>) in.readObject();
- this.idGenerator = (IdGenerator) in.readObject();
+ this.setRules((Map<Rule, BaseNode[]>) in.readObject());
+ this.setIdGenerator((IdGenerator) in.readObject());
this.ordered = in.readBoolean();
- this.ruleBase = droolsStream.getRuleBase();
+ this.setRuleBase(droolsStream.getRuleBase());
if ( !isDrools ) {
bytes.close();
}
- this.ruleBuilder = new ReteooRuleBuilder();
+ this.setRuleBuilder(new ReteooRuleBuilder());
}
+ /**
+ * @param idGenerator the idGenerator to set
+ */
+ public void setIdGenerator(IdGenerator idGenerator) {
+ this.idGenerator = idGenerator;
+ }
+
+ /**
+ * @param ruleBuilder the ruleBuilder to set
+ */
+ public void setRuleBuilder(ReteooRuleBuilder ruleBuilder) {
+ this.ruleBuilder = ruleBuilder;
+ }
+
+ /**
+ * @return the ruleBuilder
+ */
+ public ReteooRuleBuilder getRuleBuilder() {
+ return ruleBuilder;
+ }
+
+ /**
+ * @param ruleBase the ruleBase to set
+ */
+ public void setRuleBase(InternalRuleBase ruleBase) {
+ this.ruleBase = ruleBase;
+ }
+
+ /**
+ * @return the ruleBase
+ */
+ public InternalRuleBase getRuleBase() {
+ return ruleBase;
+ }
+
+ /**
+ * @param rules the rules to set
+ */
+ public void setRules(Map<Rule, BaseNode[]> rules) {
+ this.rules = rules;
+ }
+
+ /**
+ * @return the rules
+ */
+ public Map<Rule, BaseNode[]> getRules() {
+ return rules;
+ }
+
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -144,10 +144,10 @@
super( id,
config,
factHandleFactory );
- setupRete();
+ this.setupRete();
}
- private void setupRete() {
+ protected void setupRete() {
this.rete = new Rete( this );
this.reteooBuilder = new ReteooBuilder( this );
@@ -483,4 +483,12 @@
this.reteooBuilder.setOrdered( false );
}
}
+
+ protected void setReteooBuilder(ReteooBuilder reteooBuilder) {
+ this.reteooBuilder = reteooBuilder;
+ }
+
+ protected void setRete(Rete rete) {
+ this.rete = rete;
+ }
}
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -36,6 +36,7 @@
import org.drools.rule.Behavior;
import org.drools.rule.GroupElement;
import org.drools.rule.RuleConditionElement;
+import org.drools.rule.GroupElement.Type;
/**
* @author etirelli
@@ -45,16 +46,16 @@
implements
ReteooComponentBuilder {
- private final Map geBuilders = new HashMap();
+ private final Map<Type, ReteooComponentBuilder> geBuilders = new HashMap<Type, ReteooComponentBuilder>();
public GroupElementBuilder() {
- this.geBuilders.put( GroupElement.AND,
+ this.getGeBuilders().put( GroupElement.AND,
new AndBuilder() );
- this.geBuilders.put( GroupElement.OR,
+ this.getGeBuilders().put( GroupElement.OR,
new OrBuilder() );
- this.geBuilders.put( GroupElement.NOT,
+ this.getGeBuilders().put( GroupElement.NOT,
new NotBuilder() );
- this.geBuilders.put( GroupElement.EXISTS,
+ this.getGeBuilders().put( GroupElement.EXISTS,
new ExistsBuilder() );
}
@@ -66,7 +67,7 @@
final RuleConditionElement rce) {
final GroupElement ge = (GroupElement) rce;
- final ReteooComponentBuilder builder = (ReteooComponentBuilder) this.geBuilders.get( ge.getType() );
+ final ReteooComponentBuilder builder = (ReteooComponentBuilder) this.getGeBuilders().get( ge.getType() );
context.push( ge );
@@ -84,13 +85,13 @@
final RuleConditionElement rce) {
final GroupElement ge = (GroupElement) rce;
- final ReteooComponentBuilder builder = (ReteooComponentBuilder) this.geBuilders.get( ge.getType() );
+ final ReteooComponentBuilder builder = (ReteooComponentBuilder) this.getGeBuilders().get( ge.getType() );
return builder.requiresLeftActivation( utils,
rce );
}
- private static Behavior[] createBehaviorArray(final BuildContext context) {
+ protected static Behavior[] createBehaviorArray(final BuildContext context) {
Behavior[] behaviors = Behavior.EMPTY_BEHAVIOR_LIST;
if( ! context.getBehaviors().isEmpty() ) {
behaviors = (Behavior[]) context.getBehaviors().toArray( new Behavior[ context.getBehaviors().size() ]);
@@ -99,7 +100,14 @@
return behaviors;
}
- private static class AndBuilder
+ /**
+ * @return the geBuilders
+ */
+ public Map<Type, ReteooComponentBuilder> getGeBuilders() {
+ return geBuilders;
+ }
+
+ private static class AndBuilder
implements
ReteooComponentBuilder {
Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java 2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java 2009-04-19 14:36:49 UTC (rev 26140)
@@ -22,6 +22,7 @@
import org.drools.InitialFact;
import org.drools.RuleBase;
import org.drools.RuleIntegrationException;
+import org.drools.RuntimeDroolsException;
import org.drools.RuleBaseConfiguration.EventProcessingMode;
import org.drools.base.ClassObjectType;
import org.drools.common.BaseNode;
@@ -58,23 +59,23 @@
private BuildUtils utils;
public ReteooRuleBuilder() {
- this.utils = new BuildUtils();
+ this.setUtils(new BuildUtils());
- this.utils.addBuilder( GroupElement.class,
+ this.getUtils().addBuilder( GroupElement.class,
new GroupElementBuilder() );
- this.utils.addBuilder( Pattern.class,
+ this.getUtils().addBuilder( Pattern.class,
new PatternBuilder() );
- this.utils.addBuilder( EvalCondition.class,
+ this.getUtils().addBuilder( EvalCondition.class,
new EvalBuilder() );
- this.utils.addBuilder( From.class,
+ this.getUtils().addBuilder( From.class,
new FromBuilder() );
- this.utils.addBuilder( Collect.class,
+ this.getUtils().addBuilder( Collect.class,
new CollectBuilder() );
- this.utils.addBuilder( Accumulate.class,
+ this.getUtils().addBuilder( Accumulate.class,
new AccumulateBuilder() );
- this.utils.addBuilder( Forall.class,
+ this.getUtils().addBuilder( Forall.class,
new ForallBuilder() );
- this.utils.addBuilder( EntryPoint.class,
+ this.getUtils().addBuilder( EntryPoint.class,
new EntryPointBuilder() );
}
@@ -98,6 +99,8 @@
final InternalRuleBase rulebase,
final ReteooBuilder.IdGenerator idGenerator) throws InvalidPatternException {
+
+
// the list of terminal nodes
final List<TerminalNode> nodes = new ArrayList<TerminalNode>();
@@ -113,7 +116,7 @@
// if running in STREAM mode, calculate temporal distance for events
if( EventProcessingMode.STREAM.equals( rulebase.getConfiguration().getEventProcessingMode() ) ) {
- TemporalDependencyMatrix temporal = this.utils.calculateTemporalDistance( subrules[i] );
+ TemporalDependencyMatrix temporal = this.getUtils().calculateTemporalDistance( subrules[i] );
context.setTemporalDistance( temporal );
}
@@ -142,14 +145,14 @@
return nodes;
}
- private TerminalNode addSubRule(final BuildContext context,
+ protected TerminalNode addSubRule(final BuildContext context,
final GroupElement subrule,
final Rule rule) throws InvalidPatternException {
// gets the appropriate builder
- final ReteooComponentBuilder builder = this.utils.getBuilderFor( subrule );
+ final ReteooComponentBuilder builder = this.getUtils().getBuilderFor( subrule );
// checks if an initial-fact is needed
- if ( builder.requiresLeftActivation( this.utils,
+ if ( builder.requiresLeftActivation( this.getUtils(),
subrule ) ) {
this.addInitialFactPattern( context,
subrule,
@@ -158,7 +161,7 @@
// builds and attach
builder.build( context,
- this.utils,
+ this.getUtils(),
subrule );
TerminalNode terminal = null;
@@ -179,7 +182,7 @@
context);
}
- context.setTupleSource((ModusPonensNode) this.utils.attachNode(context, mpNode));
+ context.setTupleSource((ModusPonensNode) this.getUtils().attachNode(context, mpNode));
@@ -230,7 +233,7 @@
* @param subrule
* @param rule
*/
- private void addInitialFactPattern(final BuildContext context,
+ protected void addInitialFactPattern(final BuildContext context,
final GroupElement subrule,
final Rule rule) {
@@ -243,4 +246,18 @@
pattern );
}
+ /**
+ * @param utils the utils to set
+ */
+ public void setUtils(BuildUtils utils) {
+ this.utils = utils;
+ }
+
+ /**
+ * @return the utils
+ */
+ public BuildUtils getUtils() {
+ return utils;
+ }
+
}
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-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt 2009-04-19 14:36:49 UTC (rev 26140)
@@ -1 +1 @@
-5.0.0.SNAPSHOT 25662:25943M
\ No newline at end of file
+5.0.0.SNAPSHOT 25662:26123
\ No newline at end of file
More information about the jboss-svn-commits
mailing list