[jboss-svn-commits] JBL Code SVN: r10965 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: reteoo and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Apr 13 08:03:22 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-04-13 08:03:22 -0400 (Fri, 13 Apr 2007)
New Revision: 10965
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/WorkingMemoryAction.java
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/InternalRuleFlowGroup.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/RuleFlowGroupImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
Log:
JBRULES-788 lock-on-activate rule attribute
-fixed the modify bug with ruleflow, the deactive is now queued
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-04-13 10:47:37 UTC (rev 10964)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-04-13 12:03:22 UTC (rev 10965)
@@ -724,11 +724,6 @@
this.agenda.getActiveActivations(),
this.agenda.getDormantActivations() );
- // this.ruleBase.assertObject( handle,
- // object,
- // propagationContext,
- // this );
-
doAssertObject( handle,
object,
propagationContext );
@@ -804,29 +799,6 @@
}
}
- // /**
- // * Associate an object with its handle.
- // *
- // * @param handle
- // * The handle.
- // * @param object
- // * The object.
- // */
- // public void putObject(InternalFactHandle handle,
- // Object object) {
- // this.assertMap.put( object,
- // handle );
- //
- // handle.setObject( object );
- // }
- //
- // public Object removeObject(InternalFactHandle handle) {
- // Object object = handle.getObject();
- //
- // this.assertMap.remove( object );
- //
- // return object;
- // }
public void retractObject(final FactHandle handle) throws FactException {
retractObject( handle,
@@ -1005,7 +977,7 @@
for ( final Iterator it = this.actionQueue.iterator(); it.hasNext(); ) {
final WorkingMemoryAction action = (WorkingMemoryAction) it.next();
it.remove();
- action.execute();
+ action.execute( this );
}
}
@@ -1014,18 +986,6 @@
this.actionQueue.add( action );
}
- public void queueRetractAction(final InternalFactHandle factHandle,
- final boolean removeLogical,
- final boolean updateEqualsMap,
- final Rule ruleOrigin,
- final Activation activationOrigin) {
- queueWorkingMemoryAction( new WorkingMemoryRetractAction( factHandle,
- false,
- true,
- ruleOrigin,
- activationOrigin ) );
- }
-
public void removeLogicalDependencies(final Activation activation,
final PropagationContext context,
final Rule rule) throws FactException {
@@ -1111,45 +1071,6 @@
return this.lock;
}
- public interface WorkingMemoryAction {
- public void execute();
- }
-
- public class WorkingMemoryRetractAction
- implements
- WorkingMemoryAction {
- private InternalFactHandle factHandle;
-
- private boolean removeLogical;
-
- private boolean updateEqualsMap;
-
- private Rule ruleOrigin;
-
- private Activation activationOrigin;
-
- public WorkingMemoryRetractAction(final InternalFactHandle factHandle,
- final boolean removeLogical,
- final boolean updateEqualsMap,
- final Rule ruleOrigin,
- final Activation activationOrigin) {
- super();
- this.factHandle = factHandle;
- this.removeLogical = removeLogical;
- this.updateEqualsMap = updateEqualsMap;
- this.ruleOrigin = ruleOrigin;
- this.activationOrigin = activationOrigin;
- }
-
- public void execute() {
- retractObject( this.factHandle,
- this.removeLogical,
- this.updateEqualsMap,
- this.ruleOrigin,
- this.activationOrigin );
- }
- }
-
public class RuleFlowDeactivateEvent {
public void propagate() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleFlowGroup.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleFlowGroup.java 2007-04-13 10:47:37 UTC (rev 10964)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleFlowGroup.java 2007-04-13 12:03:22 UTC (rev 10965)
@@ -1,5 +1,7 @@
package org.drools.common;
+import org.drools.ruleflow.instance.IRuleFlowNodeInstance;
+import org.drools.ruleflow.instance.IRuleFlowProcessInstance;
import org.drools.spi.Activation;
import org.drools.spi.RuleFlowGroup;
@@ -26,4 +28,8 @@
boolean isActive();
+ void triggerCompleted();
+
+ IRuleFlowProcessInstance getProcessInstance();
+
}
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-04-13 10:47:37 UTC (rev 10964)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2007-04-13 12:03:22 UTC (rev 10965)
@@ -1,8 +1,8 @@
package org.drools.common;
import org.drools.FactException;
+import org.drools.FactHandle;
import org.drools.WorkingMemory;
-import org.drools.common.AbstractWorkingMemory.WorkingMemoryAction;
import org.drools.event.AgendaEventSupport;
import org.drools.rule.Rule;
import org.drools.spi.Activation;
@@ -36,4 +36,10 @@
public void removeLogicalDependencies(final Activation activation,
final PropagationContext context,
final Rule rule) throws FactException;
+
+ void retractObject(final FactHandle factHandle,
+ final boolean removeLogical,
+ final boolean updateEqualsMap,
+ final Rule rule,
+ final Activation activation) throws FactException;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java 2007-04-13 10:47:37 UTC (rev 10964)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java 2007-04-13 12:03:22 UTC (rev 10965)
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import org.drools.common.AbstractWorkingMemory.WorkingMemoryAction;
import org.drools.ruleflow.instance.IRuleFlowNodeInstance;
import org.drools.ruleflow.instance.impl.RuleFlowSequenceNodeInstance;
import org.drools.spi.Activation;
@@ -174,23 +173,22 @@
setActive( true );
}
- public class DeactivateCallback implements WorkingMemoryAction {
- private InternalRuleFlowGroup ruleFlowGroup;
+ public static class DeactivateCallback implements WorkingMemoryAction {
+ private final InternalRuleFlowGroup ruleFlowGroup;
public DeactivateCallback(InternalRuleFlowGroup ruleFlowGroup) {
this.ruleFlowGroup = ruleFlowGroup;
}
- public void execute() {
+ public void execute(InternalWorkingMemory workingMemory) {
if ( this.ruleFlowGroup.isEmpty() ) {
this.ruleFlowGroup.setActive( false );
// only trigger next node if this RuleFlowGroup was
// triggered from inside a process instance
- if ( getProcessInstance() != null ) {
- triggerCompleted();
+ if ( this.ruleFlowGroup.getProcessInstance() != null ) {
+ this.ruleFlowGroup.triggerCompleted();
}
}
}
-
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java 2007-04-13 10:47:37 UTC (rev 10964)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java 2007-04-13 12:03:22 UTC (rev 10965)
@@ -27,6 +27,7 @@
import org.drools.spi.PropagationContext;
import org.drools.util.ObjectHashMap;
import org.drools.util.PrimitiveLongMap;
+import org.w3c.dom.views.AbstractView;
/**
* The Truth Maintenance System is responsible for tracking two things. Firstly
@@ -109,19 +110,44 @@
if ( set != null ) {
set.remove( node );
if ( set.isEmpty() ) {
- this.justifiedMap.remove( handle.getId() );
// this needs to be scheduled so we don't upset the current
- // working memory operation
- this.workingMemory.queueRetractAction( handle,
- false,
- true,
- context.getRuleOrigin(),
- context.getActivationOrigin() );
+ // working memory operation
+ WorkingMemoryAction action = new LogicalRetractCallback( this, set, handle, context );
+ workingMemory.queueWorkingMemoryAction( action );
}
}
}
}
+
+
+ public static class LogicalRetractCallback implements WorkingMemoryAction {
+ private final TruthMaintenanceSystem tms;
+ private final Set set;
+ private final InternalFactHandle handle;
+ private final PropagationContext context;
+
+ public LogicalRetractCallback(TruthMaintenanceSystem tms, Set set, InternalFactHandle handle, PropagationContext context) {
+ this.tms = tms;
+ this.set = set;
+ this.handle = handle;
+ this.context = context;
+ }
+
+ public void execute(InternalWorkingMemory workingMemory) {
+ if ( set.isEmpty() ) {
+ this.tms.getJustifiedMap().remove( handle.getId() );
+ // this needs to be scheduled so we don't upset the current
+ // working memory operation
+ workingMemory.retractObject( this.handle,
+ false,
+ true,
+ context.getRuleOrigin(),
+ context.getActivationOrigin() );
+ }
+ }
+ }
+
/**
* The FactHandle is being removed from the system so remove any logical dependencies
* between the justified FactHandle and its justifiers. Removes the FactHandle key
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/WorkingMemoryAction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/WorkingMemoryAction.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/WorkingMemoryAction.java 2007-04-13 12:03:22 UTC (rev 10965)
@@ -0,0 +1,8 @@
+/**
+ *
+ */
+package org.drools.common;
+
+public interface WorkingMemoryAction {
+ public void execute(InternalWorkingMemory workingMemory);
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2007-04-13 10:47:37 UTC (rev 10964)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2007-04-13 12:03:22 UTC (rev 10965)
@@ -28,7 +28,9 @@
import org.drools.common.DefaultAgenda;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalRuleBase;
+import org.drools.common.InternalWorkingMemory;
import org.drools.common.PropagationContextImpl;
+import org.drools.common.WorkingMemoryAction;
import org.drools.rule.Query;
import org.drools.rule.Rule;
import org.drools.spi.Activation;
@@ -148,7 +150,7 @@
this.activationOrigin = activationOrigin;
}
- public void execute() {
+ public void execute(InternalWorkingMemory workingMemory) {
final PropagationContext context = new PropagationContextImpl( ReteooWorkingMemory.this.propagationIdCounter++,
PropagationContext.ASSERTION,
More information about the jboss-svn-commits
mailing list