[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