[jboss-svn-commits] JBL Code SVN: r12882 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/common and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jun 27 01:06:07 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-06-27 01:06:06 -0400 (Wed, 27 Jun 2007)
New Revision: 12882
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LIANodePropagation.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TripleBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AddRemoveTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LogicalAssertionTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/PropertyChangeListenerTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteTest.java
Log:
JBRULES-948 urn off node memories and latch lianode
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -71,12 +71,13 @@
private ChainedProperties chainedProperties;
private boolean immutable;
+
+ private boolean sequential;
private boolean maintainTms;
private boolean removeIdentities;
private boolean shareAlphaNodes;
private boolean shareBetaNodes;
- private boolean objectTypeMemory;
private boolean alphaMemory;
private int alphaNodeHashingThreshold;
private int compositeKeyDepth;
@@ -107,6 +108,9 @@
if ( properties != null ) {
this.chainedProperties.addProperties( properties );
}
+
+ setSequential( Boolean.valueOf( this.chainedProperties.getProperty( "drools.sequential",
+ "false" ) ).booleanValue() );
setMaintainTms( Boolean.valueOf( this.chainedProperties.getProperty( "drools.maintainTms",
"true" ) ).booleanValue() );
@@ -114,9 +118,6 @@
setRemoveIdentities( Boolean.valueOf( this.chainedProperties.getProperty( "drools.removeIdentities",
"false" ) ).booleanValue() );
- setObjectTypeMemory( Boolean.valueOf( this.chainedProperties.getProperty( "drools.objectTypeMemory",
- "true" ) ).booleanValue() );
-
setAlphaMemory( Boolean.valueOf( this.chainedProperties.getProperty( "drools.alphaMemory",
"false" ) ).booleanValue() );
@@ -174,8 +175,16 @@
throw new UnsupportedOperationException( "Can't set a property after configuration becomes immutable" );
}
}
+
+ public void setSequential(boolean sequential) {
+ this.sequential = sequential;
+ }
+
+ public boolean isSequential() {
+ return this.sequential;
+ }
- public boolean getMaintainTms() {
+ public boolean isMaintainTms() {
return this.maintainTms;
}
@@ -193,15 +202,6 @@
this.removeIdentities = removeIdentities;
}
- public boolean isObjectTypeMemory() {
- return this.objectTypeMemory;
- }
-
- public void setObjectTypeMemory(final boolean objectTypeMemory) {
- checkCanChange(); // throws an exception if a change isn't possible;
- this.objectTypeMemory = objectTypeMemory;
- }
-
public boolean isAlphaMemory() {
return this.alphaMemory;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -48,6 +48,7 @@
import org.drools.event.RuleFlowEventSupport;
import org.drools.event.WorkingMemoryEventListener;
import org.drools.event.WorkingMemoryEventSupport;
+import org.drools.reteoo.LIANodePropagation;
import org.drools.rule.Rule;
import org.drools.ruleflow.common.core.Process;
import org.drools.ruleflow.common.instance.ProcessInstance;
@@ -137,6 +138,10 @@
protected long propagationIdCounter;
private final boolean maintainTms;
+
+ private final boolean sequential;
+
+ private List liaPropagations = Collections.EMPTY_LIST;
/** Flag to determine if a rule is currently being fired. */
protected boolean firing;
@@ -157,7 +162,8 @@
this.id = id;
this.ruleBase = ruleBase;
this.handleFactory = handleFactory;
- this.maintainTms = this.ruleBase.getConfiguration().getMaintainTms();
+ this.maintainTms = this.ruleBase.getConfiguration().isMaintainTms();
+ this.sequential = this.ruleBase.getConfiguration().isSequential();
if ( this.maintainTms ) {
this.tms = new TruthMaintenanceSystem( this );
@@ -185,11 +191,22 @@
// ------------------------------------------------------------
// Instance methods
- // ------------------------------------------------------------
-
+ // ------------------------------------------------------------
+
void setRuleBase(final InternalRuleBase ruleBase) {
this.ruleBase = ruleBase;
}
+
+ public boolean isSequential() {
+ return this.sequential;
+ }
+
+ public void addLIANodePropagation(LIANodePropagation liaNodePropagation) {
+ if ( this.liaPropagations == Collections.EMPTY_LIST ) {
+ this.liaPropagations = new ArrayList();
+ }
+ this.liaPropagations.add( liaNodePropagation );
+ }
public void addEventListener(final WorkingMemoryEventListener listener) {
try {
@@ -388,8 +405,14 @@
// If we're already firing a rule, then it'll pick up
// the firing for any other assertObject(..) that get
// nested inside, avoiding concurrent-modification
- // exceptions, depending on code paths of the actions.
+ // exceptions, depending on code paths of the actions.
+ if ( isSequential() ) {
+ for ( Iterator it = this.liaPropagations.iterator(); it.hasNext(); ) {
+ (( LIANodePropagation ) it.next()).doPropagation( this );
+ }
+ }
+
if ( !this.actionQueue.isEmpty() ) {
executeQueuedActions();
}
@@ -626,7 +649,15 @@
// you cannot assert a null object
return null;
}
+
InternalFactHandle handle = null;
+
+ if ( isSequential() ) {
+ handle = this.handleFactory.newFactHandle( object );
+ insert(handle, object, rule, activation);
+ return handle;
+ }
+
try {
this.lock.lock();
// check if the object already exists in the WM
@@ -761,31 +792,37 @@
if ( dynamic ) {
addPropertyChangeListener( object );
}
+
+ insert(handle, object, rule, activation);
- final PropagationContext propagationContext = new PropagationContextImpl( this.propagationIdCounter++,
- PropagationContext.ASSERTION,
- rule,
- activation,
- this.agenda.getActiveActivations(),
- this.agenda.getDormantActivations() );
- doInsert( handle,
- object,
- propagationContext );
-
- this.workingMemoryEventSupport.fireObjectInserted( propagationContext,
- handle,
- object );
-
- if ( !this.actionQueue.isEmpty() ) {
- executeQueuedActions();
- }
} finally {
this.lock.unlock();
}
return handle;
}
+
+ private void insert( InternalFactHandle handle, Object object, Rule rule, Activation activation) {
+ final PropagationContext propagationContext = new PropagationContextImpl( this.propagationIdCounter++,
+ PropagationContext.ASSERTION,
+ rule,
+ activation,
+ this.agenda.getActiveActivations(),
+ this.agenda.getDormantActivations() );
+ doInsert( handle,
+ object,
+ propagationContext );
+
+ this.workingMemoryEventSupport.fireObjectInserted( propagationContext,
+ handle,
+ object );
+
+ if ( !this.actionQueue.isEmpty() ) {
+ executeQueuedActions();
+ }
+ }
+
protected void addPropertyChangeListener(final Object object) {
try {
final Method method = object.getClass().getMethod( "addPropertyChangeListener",
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaConstraints.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaConstraints.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -2,6 +2,7 @@
import java.io.Serializable;
+import org.drools.RuleBaseConfiguration;
import org.drools.reteoo.BetaMemory;
import org.drools.reteoo.ReteTuple;
import org.drools.util.LinkedList;
@@ -26,5 +27,5 @@
public boolean isEmpty();
- public BetaMemory createBetaMemory();
+ public BetaMemory createBetaMemory(final RuleBaseConfiguration config);
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -191,7 +191,7 @@
return false;
}
- public BetaMemory createBetaMemory() {
+ public BetaMemory createBetaMemory(final RuleBaseConfiguration config) {
BetaMemory memory;
if ( this.indexed > 0 ) {
LinkedListEntry entry = (LinkedListEntry) this.constraints.getFirst();
@@ -221,10 +221,10 @@
} else {
factHandleMemory = new FactHashTable();
}
- memory = new BetaMemory( tupleMemory,
+ memory = new BetaMemory( config.isSequential() ? null : tupleMemory,
factHandleMemory );
} else {
- memory = new BetaMemory( new TupleHashTable(),
+ memory = new BetaMemory( config.isSequential() ? null : new TupleHashTable(),
new FactHashTable() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -159,7 +159,7 @@
return false;
}
- public BetaMemory createBetaMemory() {
+ public BetaMemory createBetaMemory(final RuleBaseConfiguration config) {
BetaMemory memory;
final List list = new ArrayList( 2 );
@@ -196,10 +196,10 @@
} else {
factHandleMemory = new FactHashTable();
}
- memory = new BetaMemory( tupleMemory,
+ memory = new BetaMemory( config.isSequential() ? null : tupleMemory,
factHandleMemory );
} else {
- memory = new BetaMemory( new TupleHashTable(),
+ memory = new BetaMemory( config.isSequential() ? null : new TupleHashTable(),
new FactHashTable() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -18,6 +18,7 @@
import java.io.Serializable;
+import org.drools.RuleBaseConfiguration;
import org.drools.reteoo.BetaMemory;
import org.drools.reteoo.ReteTuple;
import org.drools.util.FactHashTable;
@@ -79,8 +80,8 @@
return true;
}
- public BetaMemory createBetaMemory() {
- final BetaMemory memory = new BetaMemory( new TupleHashTable(),
+ public BetaMemory createBetaMemory(final RuleBaseConfiguration config) {
+ final BetaMemory memory = new BetaMemory( config.isSequential() ? null : new TupleHashTable(),
new FactHashTable() );
return memory;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -3,6 +3,7 @@
import org.drools.FactException;
import org.drools.FactHandle;
import org.drools.WorkingMemory;
+import org.drools.reteoo.LIANodePropagation;
import org.drools.rule.Rule;
import org.drools.spi.Activation;
import org.drools.spi.FactHandleFactory;
@@ -42,4 +43,8 @@
final Activation activation) throws FactException;
public Lock getLock();
+
+ public boolean isSequential();
+
+ public void addLIANodePropagation(LIANodePropagation liaNodePropagation);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -230,7 +230,7 @@
return false;
}
- public BetaMemory createBetaMemory() {
+ public BetaMemory createBetaMemory(final RuleBaseConfiguration config) {
BetaMemory memory;
@@ -283,10 +283,10 @@
} else {
factHandleMemory = new FactHashTable();
}
- memory = new BetaMemory( tupleMemory,
+ memory = new BetaMemory( config.isSequential() ? null : tupleMemory,
factHandleMemory );
} else {
- memory = new BetaMemory( new TupleHashTable(),
+ memory = new BetaMemory( config.isSequential() ? null : new TupleHashTable(),
new FactHashTable() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -119,7 +119,7 @@
return false;
}
- public BetaMemory createBetaMemory() {
+ public BetaMemory createBetaMemory(final RuleBaseConfiguration config) {
BetaMemory memory;
if ( this.indexed ) {
final VariableConstraint variableConstraint = (VariableConstraint) this.constraint;
@@ -139,10 +139,10 @@
} else {
factHandleMemory = new FactHashTable();
}
- memory = new BetaMemory( tupleMemory,
+ memory = new BetaMemory( config.isSequential() ? null : tupleMemory,
factHandleMemory );
} else {
- memory = new BetaMemory( new TupleHashTable(),
+ memory = new BetaMemory( config.isSequential() ? null : new TupleHashTable(),
new FactHashTable() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TripleBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TripleBetaConstraints.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TripleBetaConstraints.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -193,7 +193,7 @@
return false;
}
- public BetaMemory createBetaMemory() {
+ public BetaMemory createBetaMemory(final RuleBaseConfiguration config) {
BetaMemory memory;
@@ -238,10 +238,10 @@
} else {
factHandleMemory = new FactHashTable();
}
- memory = new BetaMemory( tupleMemory,
+ memory = new BetaMemory( config.isSequential() ? null : tupleMemory,
factHandleMemory );
} else {
- memory = new BetaMemory( new TupleHashTable(),
+ memory = new BetaMemory( config.isSequential() ? null : new TupleHashTable(),
new FactHashTable() );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -100,6 +100,7 @@
final ObjectSource rightInput,
final BetaConstraints constraints) {
super( id );
+ super.setHasMemory( true );
this.leftInput = leftInput;
this.rightInput = rightInput;
this.constraints = constraints;
@@ -230,7 +231,7 @@
* Creates a BetaMemory for the BetaNode's memory.
*/
public Object createMemory(final RuleBaseConfiguration config) {
- return this.constraints.createBetaMemory();
+ return this.constraints.createBetaMemory(config);
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -142,8 +142,10 @@
workingMemory );
if ( allowed ) {
- final TupleHashTable memory = (TupleHashTable) workingMemory.getNodeMemory( this );
- memory.add( tuple );
+ if ( !workingMemory.isSequential() ) {
+ final TupleHashTable memory = (TupleHashTable) workingMemory.getNodeMemory( this );
+ memory.add( tuple );
+ }
this.sink.propagateAssertTuple( tuple,
context,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -106,7 +106,10 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
- memory.getTupleMemory().add( leftTuple );
+
+ if ( !workingMemory.isSequential() ) {
+ memory.getTupleMemory().add( leftTuple );
+ }
final Iterator it = memory.getFactHandleMemory().iterator( leftTuple );
this.constraints.updateFromTuple( workingMemory,
@@ -146,6 +149,10 @@
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
memory.getFactHandleMemory().add( handle );
+ if ( workingMemory.isSequential() ) {
+ // do nothing here, as we know there are no left tuples at this stage in sequential mode.
+ return;
+ }
final Iterator it = memory.getTupleMemory().iterator( handle );
this.constraints.updateFromFactHandle( workingMemory,
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LIANodePropagation.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LIANodePropagation.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LIANodePropagation.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -0,0 +1,26 @@
+package org.drools.reteoo;
+
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.spi.PropagationContext;
+
+public class LIANodePropagation {
+ private final LeftInputAdapterNode node;
+ private final InternalFactHandle handle;
+ private final PropagationContext context;
+
+ public LIANodePropagation(final LeftInputAdapterNode node,
+ final InternalFactHandle handle,
+ final PropagationContext context ) {
+ super();
+ this.node = node;
+ this.handle = handle;
+ this.context = context;
+ }
+
+ public void doPropagation(InternalWorkingMemory workingMemory) {
+ node.getSinkPropagator().createAndPropagateAssertTuple( handle, context, workingMemory );
+ }
+
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -89,21 +89,6 @@
setHasMemory( false );
}
- // public AlphaNodeFieldConstraint[] getConstraints() {
- // // Sanity check
- // if ( this.constraints == null ) {
- // return null;
- // }
- // LinkedList constraints = this.constraints.getConstraints();
- //
- // AlphaNodeFieldConstraint[] array = new AlphaNodeFieldConstraint[constraints.size()];
- // int i = 0;
- // for ( LinkedListEntry entry = (LinkedListEntry) constraints.getFirst(); entry != null; entry = (LinkedListEntry) entry.getNext() ) {
- // array[i++] = (AlphaNodeFieldConstraint) entry.getObject();
- // }
- // return array;
- // }
-
/* (non-Javadoc)
* @see org.drools.reteoo.BaseNode#attach()
*/
@@ -141,14 +126,18 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- this.sink.createAndPropagateAssertTuple( handle,
- context,
- workingMemory );
+ if ( !workingMemory.isSequential() ) {
+ this.sink.createAndPropagateAssertTuple( handle,
+ context,
+ workingMemory );
- if ( this.hasMemory ) {
- final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
- memory.add( handle,
- false );
+ if ( this.hasMemory ) {
+ final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
+ memory.add( handle,
+ false );
+ }
+ } else {
+ workingMemory.addLIANodePropagation( new LIANodePropagation(this, handle, context) );
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -93,14 +93,13 @@
public ObjectTypeNode(final int id,
final ObjectType objectType,
final Rete rete,
- final boolean hasMemory,
final int alphaNodeHashingThreshold) {
super( id,
null,
alphaNodeHashingThreshold );
this.rete = rete;
this.objectType = objectType;
- setHasMemory( hasMemory );
+ setHasMemory( true );
}
// ------------------------------------------------------------
@@ -144,14 +143,13 @@
public void assertObject(final InternalFactHandle handle,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
- final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
-
if ( context.getType() == PropagationContext.MODIFICATION && this.skipOnModify && context.getDormantActivations() == 0 ) {
// we do this after the shadowproxy update, just so that its up to date for the future
return;
}
- if ( hasMemory() ) {
+ if ( !workingMemory.isSequential() ) {
+ final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
memory.add( handle,
false );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -179,7 +179,10 @@
agenda.scheduleItem( item );
tuple.setActivation( item );
- memory.getTupleMemory().add( tuple );
+
+ if ( !workingMemory.isSequential() ) {
+ memory.getTupleMemory().add( tuple );
+ }
item.setActivated( true );
((EventSupport) workingMemory).getAgendaEventSupport().fireActivationCreated( item,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -88,7 +88,6 @@
new ObjectTypeNode( context.getNextId(),
pattern.getObjectType(),
context.getRuleBase().getRete(),
- context.getRuleBase().getConfiguration().isObjectTypeMemory(),
context.getRuleBase().getConfiguration().getAlphaNodeHashingThreshold() ) ) );
final List betaConstraints = new ArrayList();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AddRemoveTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AddRemoveTest.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AddRemoveTest.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -33,7 +33,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 0,
new ClassObjectType( Object.class ),
rete,
- true,
1 );
objectTypeNode.attach();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LogicalAssertionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LogicalAssertionTest.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LogicalAssertionTest.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -47,7 +47,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( String.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink = new MockObjectSink();
@@ -149,7 +148,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 0,
new ClassObjectType( String.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink = new MockObjectSink();
@@ -240,7 +238,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 0,
new ClassObjectType( String.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink = new MockObjectSink();
@@ -378,7 +375,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 0,
new ClassObjectType( String.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink = new MockObjectSink();
@@ -466,7 +462,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 0,
new ClassObjectType( String.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink = new MockObjectSink();
@@ -565,7 +560,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( String.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink = new MockObjectSink();
@@ -693,8 +687,7 @@
final Rete rete = new Rete( (InternalRuleBase)ruleBase);
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 0,
new ClassObjectType( String.class ),
- rete,
- true,
+ rete,
3 );
objectTypeNode.attach();
final MockObjectSink sink = new MockObjectSink();
@@ -795,7 +788,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 0,
new ClassObjectType( String.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink = new MockObjectSink();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -48,7 +48,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
objectType,
source,
- true,
3 );
assertEquals( 1,
@@ -85,7 +84,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( String.class ),
source,
- true,
3 );
final MockObjectSink sink = new MockObjectSink();
@@ -123,7 +121,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( String.class ),
new Rete( (InternalRuleBase) ruleBase),
- true,
3 );
final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( objectTypeNode );
@@ -138,7 +135,6 @@
ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( String.class ),
source,
- true,
3 );
assertFalse( objectTypeNode.matches( new Object() ) );
@@ -148,7 +144,6 @@
objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( Object.class ),
source,
- true,
3 );
assertTrue( objectTypeNode.matches( new Object() ) );
@@ -172,7 +167,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( String.class ),
source,
- true,
3 );
final MockObjectSink sink = new MockObjectSink();
@@ -225,7 +219,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( String.class ),
source,
- true,
3 );
final MockObjectSink sink1 = new MockObjectSink();
@@ -297,7 +290,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( Cheese.class ),
source,
- true,
3 );
final MockObjectSink sink = new MockObjectSink();
@@ -344,7 +336,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( Person.class ),
source,
- true,
3 );
final MockObjectSink sink = new MockObjectSink();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/PropertyChangeListenerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/PropertyChangeListenerTest.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/PropertyChangeListenerTest.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -19,7 +19,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( State.class ),
rete,
- true,
3 );
objectTypeNode.attach();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -50,7 +50,6 @@
final ObjectTypeNode queryObjectTypeNode = new ObjectTypeNode( 1,
queryObjectType,
rete,
- true,
3 );
queryObjectTypeNode.attach();
@@ -80,7 +79,6 @@
final ObjectTypeNode cheeseObjectTypeNode = new ObjectTypeNode( 4,
cheeseObjectType,
rete,
- true,
3 );
cheeseObjectTypeNode.attach();
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteTest.java 2007-06-27 04:50:44 UTC (rev 12881)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteTest.java 2007-06-27 05:06:06 UTC (rev 12882)
@@ -1,4 +1,4 @@
-package org.drools.reteoo;
+ package org.drools.reteoo;
/*
* Copyright 2005 JBoss Inc
@@ -55,14 +55,12 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( Object.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final ObjectTypeNode stringTypeNode = new ObjectTypeNode( 2,
new ClassObjectType( String.class ),
rete,
- true,
3 );
stringTypeNode.attach();
@@ -93,7 +91,6 @@
ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( List.class ),
rete,
- true,
3 );
objectTypeNode.attach();
MockObjectSink sink = new MockObjectSink();
@@ -102,7 +99,6 @@
objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( Collection.class ),
rete,
- true,
3 );
objectTypeNode.attach();
sink = new MockObjectSink();
@@ -111,7 +107,6 @@
objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( ArrayList.class ),
rete,
- true,
3 );
objectTypeNode.attach();
sink = new MockObjectSink();
@@ -162,7 +157,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( List.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink1 = new MockObjectSink();
@@ -216,7 +210,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( List.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink1 = new MockObjectSink();
@@ -274,7 +267,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( Cheese.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink1 = new MockObjectSink();
@@ -313,7 +305,6 @@
final ObjectTypeNode objectTypeNode = new ObjectTypeNode( 1,
new ClassObjectType( Cheese.class ),
rete,
- true,
3 );
objectTypeNode.attach();
final MockObjectSink sink1 = new MockObjectSink();
More information about the jboss-svn-commits
mailing list