[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