[jboss-svn-commits] JBL Code SVN: r10950 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/rule and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Apr 12 17:53:31 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-04-12 17:53:31 -0400 (Thu, 12 Apr 2007)
New Revision: 10950

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AgendaTest.java
Log:
JBRULES-788 lock-on-activate rule attribute
-re-fixed assert, modify is still b0rked for ruleflow.

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-04-12 21:40:07 UTC (rev 10949)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2007-04-12 21:53:31 UTC (rev 10950)
@@ -233,8 +233,12 @@
 
                 // do not add the activation if the rule is "lock-on-active" and the AgendaGroup is active
                 // we must check the context to determine if its a new tuple or an exist re-activated tuple as part of the retract                
-                if ( context.getType() == PropagationContext.MODIFICATION &&  this.rule.isLockOnActivate() && agendaGroup.isActivate() && context.removeRetractedTuple( this.rule, tuple ) == null ) {
-                    // This rule is locked and active, do not allow new tuples to activate 
+                if ( context.getType() == PropagationContext.MODIFICATION ) {
+                    if ( this.rule.isLockOnActive() && agendaGroup.isActivate() && context.removeRetractedTuple( this.rule, tuple ) == null ) {                
+                        // This rule is locked and active, do not allow new tuples to activate 
+                        return;
+                    }
+                } else if ( this.rule.isLockOnActive() && agendaGroup.isActivate() ) {
                     return;
                 }
                 
@@ -249,10 +253,14 @@
 
                 // do not add the activation if the rule is "lock-on-active" and the RuleFlowGroup is active
                 // we must check the context to determine if its a new tuple or an exist re-activated tuple as part of the retract 
-                if ( context.getType() == PropagationContext.MODIFICATION &&  this.rule.isLockOnActivate() &&  memory.getRuleFlowGroup().isActive() && context.removeRetractedTuple( this.rule, tuple ) == null ) {
-                    // This rule is locked and active, do not allow new tuples to activate 
+                if ( context.getType() == PropagationContext.MODIFICATION ) {
+                    if ( this.rule.isLockOnActive() &&  memory.getRuleFlowGroup().isActive() && context.removeRetractedTuple( this.rule, tuple ) == null ) {                
+                        // This rule is locked and active, do not allow new tuples to activate 
+                        return;
+                    }
+                }   else if ( this.rule.isLockOnActive() && memory.getRuleFlowGroup().isActive() ) {
                     return;
-                }                
+                }              
                 
                 ((InternalRuleFlowGroup) memory.getRuleFlowGroup()).addActivation( item );
                 
@@ -286,7 +294,7 @@
         
         final Activation activation = tuple.getActivation();
         if ( activation.isActivated() ) {
-            if ( this.rule.isLockOnActivate() && context.getType() == PropagationContext.MODIFICATION ) {
+            if ( this.rule.isLockOnActive() && context.getType() == PropagationContext.MODIFICATION ) {
                 context.addRetractedTuple( this.rule, tuple );
             }
             

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java	2007-04-12 21:40:07 UTC (rev 10949)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java	2007-04-12 21:53:31 UTC (rev 10950)
@@ -87,7 +87,7 @@
     
     private String		      ruleFlowGroup;
     
-    private boolean           lockOnActivate;
+    private boolean           lockOnActive;
 
     /** indicates that the rule is semantically correct. */
     private boolean           semanticallyValid;
@@ -321,12 +321,12 @@
     
     
 
-    public boolean isLockOnActivate() {
-        return lockOnActivate;
+    public boolean isLockOnActive() {
+        return lockOnActive;
     }
 
-    public void setLockOnActivate(boolean lockOnActive) {
-        this.lockOnActivate = lockOnActive;
+    public void setLockOnActive(boolean lockOnActive) {
+        this.lockOnActive = lockOnActive;
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AgendaTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AgendaTest.java	2007-04-12 21:40:07 UTC (rev 10949)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AgendaTest.java	2007-04-12 21:53:31 UTC (rev 10950)
@@ -522,7 +522,7 @@
                                                                        null );
 
         // When both the rule is lock-on-active and the agenda group is active, activations should be ignored
-        rule.setLockOnActivate( true );
+        rule.setLockOnActive( true );
         agendaGroup.setActive( true );        
         node.assertTuple( tuple,
                           context,
@@ -532,7 +532,7 @@
                       agendaGroup.size() );
 
         // lock-on-active is now false so activation should propagate
-        rule.setLockOnActivate( false );        
+        rule.setLockOnActive( false );        
         node.assertTuple( tuple,
                           context,
                           workingMemory );        
@@ -540,7 +540,7 @@
                       agendaGroup.size() );
         
         // even if lock-on-active is true, unless the agenda group is active the activation will still propagate
-        rule.setLockOnActivate( true );        
+        rule.setLockOnActive( true );        
         agendaGroup.setActive( false );        
         node.assertTuple( tuple,
                           context,
@@ -1304,7 +1304,7 @@
                                                                        null );
 
         // When both the rule is lock-on-active and the agenda group is active, activations should be ignored
-        rule.setLockOnActivate( true );
+        rule.setLockOnActive( true );
         ruleFlowGroup.setActive( true );        
         node.assertTuple( tuple,
                           context,
@@ -1314,7 +1314,7 @@
                       ruleFlowGroup.size() );
 
         // lock-on-active is now false so activation should propagate
-        rule.setLockOnActivate( false );        
+        rule.setLockOnActive( false );        
         node.assertTuple( tuple,
                           context,
                           workingMemory );        
@@ -1322,7 +1322,7 @@
                       ruleFlowGroup.size() );
         
         // even if lock-on-active is true, unless the agenda group is active the activation will still propagate
-        rule.setLockOnActivate( true );        
+        rule.setLockOnActive( true );        
         ruleFlowGroup.setActive( false );        
         node.assertTuple( tuple,
                           context,




More information about the jboss-svn-commits mailing list