[jboss-svn-commits] JBL Code SVN: r20549 - in labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src: main/java/org/jboss/internal/soa/esb/services/rules and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 17 02:42:58 EDT 2008


Author: beve
Date: 2008-06-17 02:42:58 -0400 (Tue, 17 Jun 2008)
New Revision: 20549

Added:
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/Counter.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/resources/JBossESBPricingRulesStateful.drl
Modified:
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouter.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/BusinessRulesProcessor.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/BusinessRulesProcessorUnitTest.java
Log:
Added stateful test to BusinessRuleProcessorUnitTest
Updated javadocs.


Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouter.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouter.java	2008-06-17 06:17:34 UTC (rev 20548)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/routing/cbr/JBossRulesRouter.java	2008-06-17 06:42:58 UTC (rev 20549)
@@ -120,7 +120,7 @@
     		Map<String,Object> globals = new HashMap<String,Object>();
     		List<String> destinations = new ArrayList<String>();
     		globals.put( "destinations", destinations );
-    		RuleServiceCallHelper.executeStateFulRulesService( ruleSet, ruleLanguage, ruleReload, message, objectList, globals, configTree );
+    		RuleServiceCallHelper.executeRulesService( ruleSet, ruleLanguage, ruleReload, message, objectList, globals, configTree );
     		return destinations;
 		} 
 		catch (final RuleServiceException e)

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java	2008-06-17 06:17:34 UTC (rev 20548)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/internal/soa/esb/services/rules/RuleServiceCallHelper.java	2008-06-17 06:42:58 UTC (rev 20549)
@@ -26,6 +26,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.log4j.Logger;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.services.rules.RuleService;
@@ -40,12 +41,14 @@
  */
 public class RuleServiceCallHelper
 {
+	private static Logger log = Logger.getLogger( RuleServiceCallHelper.class );
+	
 	private RuleServiceCallHelper() 
 	{
 		throw new AssertionError();
 	}
 	
-	public static void executeStateFulRulesService( 
+	public static void executeRulesService( 
 			final String ruleSet,
 			final String ruleLanguage,
 			final boolean ruleReload,
@@ -62,6 +65,8 @@
 		
 		boolean dispose = Boolean.valueOf( (String) message.getProperties().getProperty( DISPOSE.getTagName(), "true" ) );
     		
+		log.debug( "Stateful [" + stateful + "]" );
+		log.debug( "dispose [" + dispose + "]" );
 		if ( DroolsRuleService.isDecisionTable( ruleSet ) )
 		{
 			if ( stateful )

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/BusinessRulesProcessor.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/BusinessRulesProcessor.java	2008-06-17 06:17:34 UTC (rev 20548)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/main/java/org/jboss/soa/esb/actions/BusinessRulesProcessor.java	2008-06-17 06:42:58 UTC (rev 20549)
@@ -118,7 +118,7 @@
 	{
 		Map<String,Object> globals = new HashMap<String,Object>();
 		globals.put( "message", message );
-		RuleServiceCallHelper.executeStateFulRulesService(  _ruleSet,  _ruleLanguage,  _ruleReload,  message,  objectList,  globals,  configTree )  ;
+		RuleServiceCallHelper.executeRulesService(  _ruleSet,  _ruleLanguage,  _ruleReload,  message,  objectList,  globals,  configTree )  ;
 	}
     
 }

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/BusinessRulesProcessorUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/BusinessRulesProcessorUnitTest.java	2008-06-17 06:17:34 UTC (rev 20548)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/BusinessRulesProcessorUnitTest.java	2008-06-17 06:42:58 UTC (rev 20549)
@@ -39,9 +39,9 @@
 import org.jboss.soa.esb.message.mapping.ObjectMappingException;
 import org.jboss.soa.esb.services.registry.RegistryException;
 import org.jboss.soa.esb.services.routing.MessageRouterException;
+import org.jboss.soa.esb.services.rules.RuleServicePropertiesNames;
 import org.junit.Before;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -51,6 +51,7 @@
  */
 public class BusinessRulesProcessorUnitTest
 {
+	private static final String DROOLS_STATFUL_RULESET = "JBossESBPricingRulesStateful.drl";
 	private Order order;
 	private ArrayList<String> messagePathList;
 	
@@ -58,32 +59,42 @@
 	public void processDiscount() throws ObjectMappingException, ConfigurationException, RegistryException, MessageRouterException, ActionProcessingException
 	{
 		Message message = createMessageWithOrder( order );
+        ConfigTree configTree = new CBRConfigTreeBuilder( DROOLS_STATFUL_RULESET, "true" ).messagePaths(messagePathList).build();
+		BusinessRulesProcessor processor = new BusinessRulesProcessor( configTree );
 		
-        ConfigTree configTree = new CBRConfigTreeBuilder( "JBossESBPricingRules.drl", "true" ).messagePaths(messagePathList).build();
-        
-		BusinessRulesProcessor processor = new BusinessRulesProcessor( configTree );
 		processor.process( message );
 		
-        assertEquals( "Rules should have updated discount to 10.0", 10.0, order.getDiscount() );
-        assertEquals( "10%" ,message.getBody().get("DiscountObject"));
+        assertEquals( 20.0, order.getDiscount() );
+        assertEquals( "20%" ,message.getBody().get("DiscountObject"));
 	}
 	
 	@Test
-	@Ignore
 	public void processDiscountStateful() throws ObjectMappingException, ConfigurationException, RegistryException, MessageRouterException, ActionProcessingException
 	{
 		Message message = createMessageWithOrder( order );
+        ConfigTree configTree = new CBRConfigTreeBuilder( DROOLS_STATFUL_RULESET, "true" ).messagePaths(messagePathList).stateful( true ).build();
+		BusinessRulesProcessor processor = new BusinessRulesProcessor( configTree );
 		
-        ConfigTree configTree = new CBRConfigTreeBuilder( "JBossESBPricingRules.drl", "true" ).messagePaths(messagePathList).stateful( true ).build();
+		//	do not dispose of working memory
+        message.getProperties().setProperty( RuleServicePropertiesNames.DISPOSE.getTagName(), "false" );
         
-		BusinessRulesProcessor processor = new BusinessRulesProcessor( configTree );
+		// process message
 		processor.process( message );
+        assertEquals( 20.0, order.getDiscount() );
+        assertEquals( "20%" ,message.getBody().get("DiscountObject"));
+        
+        //	now dispose after this call
+        message.getProperties().setProperty( RuleServicePropertiesNames.DISPOSE.getTagName(), "true" );
+        
+        //	process message again which a counter instance 
+		message.getBody().add( "Counter", new Counter( 30 ) );
+		processor.process( message );
 		
-        assertEquals( "Rules should have updated discount to 10.0", 10.0, order.getDiscount() );
-        assertEquals( "10%" ,message.getBody().get("DiscountObject"));
+        assertEquals( 100 ,message.getBody().get("IntFromPriorityRuleHighQuantity") );
 	}
 	
-	public static junit.framework.Test suite() {
+	public static junit.framework.Test suite() 
+	{
 		return new JUnit4TestAdapter(BusinessRulesProcessorUnitTest.class);
 	}
 	
@@ -96,6 +107,7 @@
         
         messagePathList = new ArrayList<String>();
         messagePathList.add("body.Order");
+        messagePathList.add("body.Counter");
 	}
 	
 	@BeforeClass

Added: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/Counter.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/Counter.java	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/java/org/jboss/soa/esb/actions/Counter.java	2008-06-17 06:42:58 UTC (rev 20549)
@@ -0,0 +1,25 @@
+package org.jboss.soa.esb.actions;
+
+import java.io.Serializable;
+
+public class Counter implements Serializable
+{
+	private static final long serialVersionUID = 1L;
+	
+	int counter;
+	
+	public Counter() {}
+	public Counter(int counter) { this.counter = counter; }
+	
+	public int getCounter()
+	{
+		return counter;
+	}
+	public void setCounter( int counter )
+	{
+		this.counter = counter;
+	}
+	
+	
+
+}

Added: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/resources/JBossESBPricingRulesStateful.drl
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/resources/JBossESBPricingRulesStateful.drl	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/jbrules/src/test/resources/JBossESBPricingRulesStateful.drl	2008-06-17 06:42:58 UTC (rev 20549)
@@ -0,0 +1,46 @@
+package com.jboss.soa.esb.routing.cbr
+
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageType;
+import org.jboss.internal.soa.esb.services.routing.cbr.Order;
+import org.jboss.soa.esb.actions.Counter;
+
+global Message message;
+
+rule "Pricing Rule - low quantity"
+	
+	when
+	    m     : Message ()
+		order : Order( quantity < 10)
+	then
+		#System.out.println("low volume");
+		order.setDiscount(0);
+		m.getBody().add("DiscountObject","0%");
+end
+
+rule "Prioriting Rule - high quantity"
+	when
+	    m     : Message ()
+		order : Order( quantity >= 10)
+		Order( discount == 0 )
+	then 
+		#System.out.println("high volume");
+		order.setDiscount( 20 );
+		# set an integer to show that this will be stored in the
+		# working memory.
+		insert( new Integer(100) );
+		m.getBody().add("DiscountObject","20%");
+end
+
+rule "Continue Rule - high quantity"
+	when
+	    counter : Counter( counter == 30 )
+	    # if the previous rule was executed and this is a stateful
+	    # execution, and we havn't dispose of the working memory, the
+	    # Integer from the previous rule will be set to 100.
+	    $i : Number(intValue == 100)
+	    m     : Message ()
+	then 
+		#System.out.println("Continue high quantity. Int value == " + $i);
+		m.getBody().add( "IntFromPriorityRuleHighQuantity", $i );
+end
\ No newline at end of file




More information about the jboss-svn-commits mailing list