[jboss-svn-commits] JBL Code SVN: r35318 - in labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src: main/java/org/jboss/soa/esb/services/rules and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Sep 27 17:57:54 EDT 2010
Author: dward
Date: 2010-09-27 17:57:54 -0400 (Mon, 27 Sep 2010)
New Revision: 35318
Modified:
labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleAgentHelper.java
labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java
labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleInfoBuilder.java
labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleInfoImpl.java
labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java
labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/StatefulRuleInfoImpl.java
labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleInfo.java
labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleServicePropertiesNames.java
labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/RuleInfoImplUnitTest.java
Log:
Fix for JBESB-3403 ( https://jira.jboss.org/browse/JBESB-3403 ).
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleAgentHelper.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleAgentHelper.java 2010-09-27 20:35:43 UTC (rev 35317)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleAgentHelper.java 2010-09-27 21:57:54 UTC (rev 35318)
@@ -54,6 +54,8 @@
import org.drools.builder.ResourceType;
import org.drools.builder.conf.ClassLoaderCacheOption;
import org.drools.conf.EventProcessingOption;
+import org.drools.conf.MaxThreadsOption;
+import org.drools.conf.MultithreadEvaluationOption;
import org.drools.xml.ChangeSetSemanticModule;
import org.drools.xml.SemanticModules;
import org.drools.xml.XmlChangeSetReader;
@@ -211,6 +213,16 @@
{
properties.setProperty(EventProcessingOption.PROPERTY_NAME, EventProcessingOption.CLOUD.getMode());
}
+ Boolean multithreadEvaluation = ruleInfo.getMultithreadEvaluation();
+ if (multithreadEvaluation != null) {
+ MultithreadEvaluationOption meo = multithreadEvaluation.booleanValue() ? MultithreadEvaluationOption.YES : MultithreadEvaluationOption.NO;
+ properties.setProperty(MultithreadEvaluationOption.PROPERTY_NAME, meo.name());
+ // only pertinent if multithreadEvaluation == true
+ Integer maxThreads = ruleInfo.getMaxThreads();
+ if (maxThreads != null) {
+ properties.setProperty(MaxThreadsOption.PROPERTY_NAME, maxThreads.toString());
+ }
+ }
// leftover properties
Enumeration<?> source_prop_names = source_props.propertyNames();
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java 2010-09-27 20:35:43 UTC (rev 35317)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelper.java 2010-09-27 21:57:54 UTC (rev 35318)
@@ -49,6 +49,8 @@
import org.drools.builder.conf.ClassLoaderCacheOption;
import org.drools.compiler.DroolsParserException;
import org.drools.conf.EventProcessingOption;
+import org.drools.conf.MaxThreadsOption;
+import org.drools.conf.MultithreadEvaluationOption;
import org.drools.io.ResourceFactory;
import org.jboss.internal.soa.esb.services.rules.util.RulesClassLoader;
import org.jboss.internal.soa.esb.util.StreamUtils;
@@ -282,6 +284,16 @@
{
kbaseConfig.setOption(EventProcessingOption.CLOUD);
}
+ Boolean multithreadEvaluation = ruleInfo.getMultithreadEvaluation();
+ if (multithreadEvaluation != null) {
+ MultithreadEvaluationOption meo = multithreadEvaluation.booleanValue() ? MultithreadEvaluationOption.YES : MultithreadEvaluationOption.NO;
+ kbaseConfig.setOption(meo);
+ // only pertinent if multithreadEvaluation == true
+ Integer maxThreads = ruleInfo.getMaxThreads();
+ if (maxThreads != null) {
+ kbaseConfig.setOption(MaxThreadsOption.get(maxThreads.intValue()));
+ }
+ }
KnowledgeBase ruleBase = KnowledgeBaseFactory.newKnowledgeBase(kbaseConfig);
try
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleInfoBuilder.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleInfoBuilder.java 2010-09-27 20:35:43 UTC (rev 35317)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleInfoBuilder.java 2010-09-27 21:57:54 UTC (rev 35318)
@@ -48,6 +48,8 @@
Integer auditInterval;
String clockType;
String eventProcessingType;
+ Boolean multithreadEvaluation;
+ Integer maxThreads;
Map<String,Channel> channels;
String ruleFireMethod;
@@ -118,6 +120,18 @@
return this;
}
+ public RuleInfoBuilder multithreadEvaluation(final Boolean multithreadEvaluation)
+ {
+ this.multithreadEvaluation = multithreadEvaluation;
+ return this;
+ }
+
+ public RuleInfoBuilder maxThreads(final Integer maxThreads)
+ {
+ this.maxThreads = maxThreads;
+ return this;
+ }
+
public RuleInfoBuilder channels(final Map<String,Channel> channels)
{
this.channels = channels;
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleInfoImpl.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleInfoImpl.java 2010-09-27 20:35:43 UTC (rev 35317)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleInfoImpl.java 2010-09-27 21:57:54 UTC (rev 35318)
@@ -78,6 +78,16 @@
private final String eventProcessingType;
/**
+ * If true, enable KnowledgeBase partitioning.
+ */
+ private final Boolean multithreadEvaluation;
+
+ /**
+ * The number of threads for KnowledgeBase partitioning.
+ */
+ private final Integer maxThreads;
+
+ /**
* The channels (exit points).
*/
private final Map<String,Channel> channels;
@@ -122,6 +132,8 @@
auditInterval = builder.auditInterval;
clockType = builder.clockType;
eventProcessingType = builder.eventProcessingType;
+ multithreadEvaluation = builder.multithreadEvaluation;
+ maxThreads = builder.maxThreads;
channels = builder.channels;
ruleFireMethod = builder.ruleFireMethod;
globals = builder.globals;
@@ -195,6 +207,22 @@
}
/* (non-Javadoc)
+ * @see org.jboss.soa.esb.services.rules.RuleInfo#getMultithreadEvaluation()
+ */
+ public Boolean getMultithreadEvaluation()
+ {
+ return multithreadEvaluation;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.soa.esb.services.rules.RuleInfo#getMaxThreads()
+ */
+ public Integer getMaxThreads()
+ {
+ return maxThreads;
+ }
+
+ /* (non-Javadoc)
* @see org.jboss.soa.esb.services.rules.RuleInfo#getChannels()
*/
public Map<String,Channel> getChannels()
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java 2010-09-27 20:35:43 UTC (rev 35317)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java 2010-09-27 21:57:54 UTC (rev 35318)
@@ -33,6 +33,8 @@
import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.RULE_CLOCK_TYPE;
import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.RULE_EVENT_PROCESSING_TYPE;
import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.RULE_FIRE_METHOD;
+import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.RULE_MAX_THREADS;
+import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.RULE_MULTITHREAD_EVALUATION;
import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.STATEFUL;
import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.StringValue.FIRE_ALL_RULES;
import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.StringValue.FIRE_UNTIL_HALT;
@@ -125,6 +127,8 @@
// clock and event processing parameters
private String clockType;
private String eventProcessingType;
+ private Boolean multithreadEvaluation;
+ private Integer maxThreads;
// channels (exit points)
private Map<String,Channel> channels;
@@ -161,6 +165,10 @@
clockType = config.getAttribute( RULE_CLOCK_TYPE.getName() );
eventProcessingType = config.getAttribute( RULE_EVENT_PROCESSING_TYPE.getName() );
+ String rme = config.getAttribute( RULE_MULTITHREAD_EVALUATION.getName() );
+ multithreadEvaluation = (rme != null) ? Boolean.valueOf(rme) : null;
+ String rmt = config.getAttribute( RULE_MAX_THREADS.getName() );
+ maxThreads = (rmt != null) ? Integer.valueOf(rmt) : null;
channels = getChannels(config);
@@ -408,6 +416,16 @@
return eventProcessingType;
}
+ public Boolean getMultithreadEvaluation()
+ {
+ return multithreadEvaluation;
+ }
+
+ public Integer getMaxThreads()
+ {
+ return maxThreads;
+ }
+
public Map<String,Channel> getChannels()
{
return channels;
@@ -428,6 +446,8 @@
builder.auditInterval(auditInterval);
builder.clockType(clockType);
builder.eventProcessingType(eventProcessingType);
+ builder.multithreadEvaluation(multithreadEvaluation);
+ builder.maxThreads(maxThreads);
builder.channels(channels);
builder.ruleFireMethod(ruleFireMethod);
return builder;
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/StatefulRuleInfoImpl.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/StatefulRuleInfoImpl.java 2010-09-27 20:35:43 UTC (rev 35317)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/StatefulRuleInfoImpl.java 2010-09-27 21:57:54 UTC (rev 35318)
@@ -118,6 +118,16 @@
return ruleInfo.getEventProcessingType();
}
+ public Boolean getMultithreadEvaluation()
+ {
+ return ruleInfo.getMultithreadEvaluation();
+ }
+
+ public Integer getMaxThreads()
+ {
+ return ruleInfo.getMaxThreads();
+ }
+
public Map<String,Channel> getChannels()
{
return ruleInfo.getChannels();
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleInfo.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleInfo.java 2010-09-27 20:35:43 UTC (rev 35317)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleInfo.java 2010-09-27 21:57:54 UTC (rev 35318)
@@ -93,6 +93,20 @@
String getEventProcessingType();
/**
+ * If true, enable KnowledgeBase partitioning.
+ *
+ * @return {@code Boolean} If KnowledgeBase partitioning should be enabled.
+ */
+ public Boolean getMultithreadEvaluation();
+
+ /**
+ * The number of threads for KnowledgeBase partitioning.
+ *
+ * @return {@code Integer} The number of threads for KnowledgeBase partitioning.
+ */
+ public Integer getMaxThreads();
+
+ /**
* The channels (exit points)
*
* @return {@code String} The channels (exit points).
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleServicePropertiesNames.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleServicePropertiesNames.java 2010-09-27 20:35:43 UTC (rev 35317)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/main/java/org/jboss/soa/esb/services/rules/RuleServicePropertiesNames.java 2010-09-27 21:57:54 UTC (rev 35318)
@@ -19,15 +19,14 @@
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
+package org.jboss.soa.esb.services.rules;
-package org.jboss.soa.esb.services.rules;
/**
* This enum contains properties specific for a RuleService.
* <p/>
*
* @author <a href="mailto:dbevenius at redhat.com">Daniel Bevenius</a>
* @author dward at jboss.org
- *
*/
public enum RuleServicePropertiesNames {
@@ -40,6 +39,8 @@
RULE_CLOCK_TYPE ( "ruleClockType", new StringValue[]{StringValue.REALTIME, StringValue.PSEUDO}),
RULE_EVENT_PROCESSING_TYPE ( "ruleEventProcessingType", new StringValue[]{StringValue.STREAM, StringValue.CLOUD}),
RULE_FIRE_METHOD ( "ruleFireMethod", new StringValue[]{StringValue.FIRE_ALL_RULES, StringValue.FIRE_UNTIL_HALT} ),
+ RULE_MAX_THREADS ( "ruleMaxThreads", null ),
+ RULE_MULTITHREAD_EVALUATION ( "ruleMultithreadEvaluation", new BooleanValue[]{BooleanValue.TRUE, BooleanValue.FALSE} ),
DISPOSE ( "dispose", new BooleanValue[]{BooleanValue.TRUE, BooleanValue.FALSE} ),
CONTINUE ( "continue", new BooleanValue[]{BooleanValue.TRUE, BooleanValue.FALSE} ),
STATEFUL ( "stateful", new BooleanValue[]{BooleanValue.TRUE, BooleanValue.FALSE}) ;
Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/RuleInfoImplUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/RuleInfoImplUnitTest.java 2010-09-27 20:35:43 UTC (rev 35317)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/RuleInfoImplUnitTest.java 2010-09-27 21:57:54 UTC (rev 35318)
@@ -20,10 +20,10 @@
*/
package org.jboss.internal.soa.esb.services.rules;
+import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.StringValue.FIRE_UNTIL_HALT;
import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.StringValue.REALTIME;
import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.StringValue.STREAM;
import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.StringValue.THREADED_FILE;
-import static org.jboss.soa.esb.services.rules.RuleServicePropertiesNames.StringValue.FIRE_UNTIL_HALT;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -123,10 +123,14 @@
final RuleInfo ruleInfo = new RuleInfoBuilder("dummy.drl")
.clockType(REALTIME.name())
.eventProcessingType(STREAM.name())
+ .multithreadEvaluation(Boolean.TRUE)
+ .maxThreads(Integer.valueOf(14))
.ruleFireMethod(FIRE_UNTIL_HALT.name())
.build();
assertEquals(REALTIME.name(), ruleInfo.getClockType());
assertEquals(STREAM.name(), ruleInfo.getEventProcessingType());
+ assertEquals(Boolean.TRUE, ruleInfo.getMultithreadEvaluation());
+ assertEquals(Integer.valueOf(14), ruleInfo.getMaxThreads());
assertEquals(FIRE_UNTIL_HALT.name(), ruleInfo.getRuleFireMethod());
}
More information about the jboss-svn-commits
mailing list