[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