[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