[jboss-svn-commits] JBL Code SVN: r23783 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/runtime/rule and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Nov 7 22:57:38 EST 2008


Author: mark.proctor at jboss.com
Date: 2008-11-07 22:57:37 -0500 (Fri, 07 Nov 2008)
New Revision: 23783

Added:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AgendaFilter.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseConfiguration.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/StatefulRuleSession.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/AgendaFilter.java
Log:
JBRULES-1734 Drools API 
-Now supports AgendaFilter
-Removed async methods, for now, and reverted unit test StatefulSessionTest that relied on them.

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseConfiguration.java	2008-11-07 20:45:29 UTC (rev 23782)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseConfiguration.java	2008-11-08 03:57:37 UTC (rev 23783)
@@ -1,5 +1,37 @@
 package org.drools;
 
+/**
+ * KnowledgeBaseConfiguration
+ *
+ * A class to store KnowledgeBase related configuration. It must be used at KnowledgeBase instantiation time
+ * or not used at all.
+ * This class will automatically load default values from system properties, so if you want to set
+ * a default configuration value for all your new KnowledgeBase, you can simply set the property as
+ * a System property.
+ *
+ * After the KnowledgeBase is created, it makes the configuration immutable and there is no way to make it
+ * mutable again. This is to avoid inconsistent behaviour inside KnowledgeBase.
+ *
+ */
+
+/**
+ * drools.maintainTms = <true|false>
+ * drools.assertBehaviour = <identity|equality>
+ * drools.logicalOverride = <discard|preserve>
+ * drools.sequential = <true|false>
+ * drools.sequential.agenda = <sequential|dynamic>
+ * drools.removeIdentities = <true|false>
+ * drools.shareAlphaNodes  = <true|false>
+ * drools.shareBetaNodes = <true|false>
+ * drools.alphaMemory <true/false>
+ * drools.alphaNodeHashingThreshold = <1...n>
+ * drools.compositeKeyDepth  =<1..3>
+ * drools.indexLeftBetaMemory = <true/false>
+ * drools.indexRightBetaMemory = <true/false>
+ * drools.consequenceExceptionHandler = <qualified class name>
+ * drools.knowledgeBaseUpdateHandler = <qualified class name>
+ * 
+ */
 public interface KnowledgeBaseConfiguration  extends PropertiesConfiguration  {
 
 }

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AgendaFilter.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AgendaFilter.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/AgendaFilter.java	2008-11-08 03:57:37 UTC (rev 23783)
@@ -0,0 +1,14 @@
+package org.drools.runtime.rule;
+
+public interface AgendaFilter {
+    
+    /**
+     * Determine if a given activation should be fired.
+     * 
+     * @param activation
+     *     The Activation that is requested to be fired
+     * @return
+     *     boolean value of "true" accepts the Activation for firing. 
+     */
+    boolean accept(Activation activation);
+}

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/StatefulRuleSession.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/StatefulRuleSession.java	2008-11-07 20:45:29 UTC (rev 23782)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/StatefulRuleSession.java	2008-11-08 03:57:37 UTC (rev 23783)
@@ -1,18 +1,45 @@
 package org.drools.runtime.rule;
 
-import java.util.concurrent.Future;
-
-
 public interface StatefulRuleSession extends WorkingMemory {      
-
-    Future<Object> asyncInsert( Object object );    
     
-    Future<Object> asyncInsert( Object[] array );
+    /**
+     * Fire all Activations on the Agenda
+     * @return
+     *     returns the number of rules fired
+     */
+    int fireAllRules();   
     
-    Future<Object> asyncInsert( Iterable<?> iterable );
     
-    void fireAllRules();
+    /**
+     * Fire all Activations on the Agenda
+     * 
+     * @param agendaFilter
+     *      filters the activations that may fire
+     * @return
+     *      returns the number of rules fired
+     */
+    int fireAllRules(AgendaFilter agendaFilter);
     
-    Future<?> asyncFireAllRules();    
-      
+    /**
+     * Keeps firing activations until a halt is called. If in a given moment,
+     * there is no activation to fire, it will wait for an activation to be
+     * added to an active agenda group or rule flow group.
+     * 
+     * @throws IllegalStateException
+     *             if this method is called when running in sequential mode
+     */
+    public void fireUntilHalt();
+
+    /**
+     * Keeps firing activations until a halt is called. If in a given moment,
+     * there is no activation to fire, it will wait for an activation to be
+     * added to an active agenda group or rule flow group.
+     * 
+     * @param agendaFilter
+     *            filters the activations that may fire
+     * 
+     * @throws IllegalStateException
+     *             if this method is called when running in sequential mode
+     */
+    public void fireUntilHalt(final AgendaFilter agendaFilter);    
 }

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java	2008-11-07 20:45:29 UTC (rev 23782)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java	2008-11-08 03:57:37 UTC (rev 23783)
@@ -7,15 +7,9 @@
 import org.drools.time.SessionClock;
 
 public interface WorkingMemory extends WorkingMemoryEventManager, WorkingMemoryEntryPoint {
-    FactHandle insert(Object object);
     
-    void retract(FactHandle factHandle);
-    
-    void update(FactHandle factHandle);
-    
-    void update(FactHandle factHandle, Object object);
-    
     void halt();
+    
     /**
      * Returns the session clock instance associated with this session
      * @return

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	2008-11-07 20:45:29 UTC (rev 23782)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java	2008-11-08 03:57:37 UTC (rev 23783)
@@ -89,7 +89,6 @@
  * drools.consequenceExceptionHandler = <qualified class name>
  * drools.ruleBaseUpdateHandler = <qualified class name>
  * drools.sessionClock = <qualified class name>
- * drools.useStaticObjenesis = <false|true>
  * 
  */
 public class RuleBaseConfiguration

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2008-11-07 20:45:29 UTC (rev 23782)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2008-11-08 03:57:37 UTC (rev 23783)
@@ -48,8 +48,10 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
 import org.drools.runtime.process.WorkItemManager;
+import org.drools.runtime.rule.AgendaFilter;
 import org.drools.runtime.rule.FactHandle;
 import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+import org.drools.spi.Activation;
 import org.drools.time.SessionClock;
 
 public class StatefulKnowledgeSessionImpl
@@ -135,10 +137,22 @@
         return this.kbase;
     }
 
-    public void fireAllRules() {
-        this.session.fireAllRules();
+    public int fireAllRules() {
+        return this.session.fireAllRules();
     }
+    
+    public int fireAllRules(AgendaFilter agendaFilter) {
+        return this.session.fireAllRules( new AgendaFilterWrapper( agendaFilter ) );
+    }
 
+    public void fireUntilHalt() {
+        this.session.fireUntilHalt( );
+    }
+
+    public void fireUntilHalt(AgendaFilter agendaFilter) {
+        this.session.fireUntilHalt( new AgendaFilterWrapper( agendaFilter ) );
+    }    
+
     public SessionClock getSessionClock() {
         return this.session.getSessionClock();
     }
@@ -515,5 +529,19 @@
         }
 
     }
+    
+    public static class AgendaFilterWrapper implements org.drools.spi.AgendaFilter {
+        private AgendaFilter filter;        
+        
+        public AgendaFilterWrapper(AgendaFilter filter) {
+            this.filter = filter;
+        }
 
+        public boolean accept(Activation activation) {
+            return filter.accept( activation );
+        }               
+    }
+    
+    
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/AgendaFilter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/AgendaFilter.java	2008-11-07 20:45:29 UTC (rev 23782)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/AgendaFilter.java	2008-11-08 03:57:37 UTC (rev 23783)
@@ -16,9 +16,6 @@
 
 package org.drools.spi;
 
-/**
- * @author mproctor
- */
 public interface AgendaFilter {
     /**
      * Determine if a given activation should be fired.




More information about the jboss-svn-commits mailing list