[jboss-svn-commits] JBL Code SVN: r25080 - in labs/jbossesb/trunk/product: samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 3 13:41:48 EST 2009
Author: beve
Date: 2009-02-03 13:41:48 -0500 (Tue, 03 Feb 2009)
New Revision: 25080
Added:
labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/Original.drl
Modified:
labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/readme.txt
labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/package/org.jboss.soa.esb.services.rules.pkg
labs/jbossesb/trunk/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java
labs/jbossesb/trunk/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java
labs/jbossesb/trunk/product/services/jbrules/src/test/resources/testrules.pkg
Log:
Work for https://jira.jboss.org/jira/browse/JBESB-2332 "business_ruleservice_ruleAgent quickstart error"
Modified: labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/readme.txt
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/readme.txt 2009-02-03 17:53:49 UTC (rev 25079)
+++ labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/readme.txt 2009-02-03 18:41:48 UTC (rev 25080)
@@ -21,6 +21,7 @@
the location of the rule package. It can specify a fully qualified file name,
or just the directory (if there is only one package file in it). Modify one
of these to match the path of your ESB installation.
+ The original drl that is located in the ruleAgent folder and named Original.drl.
To Run standalone mode:
=======================
@@ -52,4 +53,4 @@
rules. The console will show the resulting price of the policy that is calculated
from the rules.
-
\ No newline at end of file
+
Added: labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/Original.drl
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/Original.drl (rev 0)
+++ labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/Original.drl 2009-02-03 18:41:48 UTC (rev 25080)
@@ -0,0 +1,60 @@
+package org.jboss.soa.esb.services.rules
+
+#list any import classes here.
+import org.jboss.soa.esb.services.rules.Driver;
+import org.jboss.soa.esb.services.rules.Policy;
+
+#declare any global variables here
+global org.jboss.soa.esb.message.Message message;
+
+rule "Safe Youth"
+
+ when
+ #conditions
+ Driver(age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims == 0)
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ #actions
+ policy.setBasePrice(450);
+ System.out.println("Safe Youth - pay 450");
+
+end
+
+rule "Risky Youth"
+
+ when
+ #conditions
+ Driver(age >= 18, age <= 24, locationRiskProfile == "LOW", priorClaims >= 1)
+ policy : Policy(type == "COMPREHENSIVE")
+ then
+ #actions
+ policy.setBasePrice(700);
+ System.out.println("Risky Youth - pay 700");
+
+end
+
+rule "Safe Adult"
+
+ when
+ #conditions
+ Driver(age > 24, locationRiskProfile == "LOW", priorClaims == 0)
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ #actions
+ policy.setBasePrice(120);
+ System.out.println("Safe adult - pay 120");
+
+end
+
+rule "Risky Adult"
+
+ when
+ #conditions
+ Driver(age > 24, locationRiskProfile == "LOW", priorClaims >= 1)
+ policy: Policy(type == "COMPREHENSIVE")
+ then
+ #actions
+ policy.setBasePrice(300);
+ System.out.println("Risky adult - pay 300");
+
+end
Modified: labs/jbossesb/trunk/product/samples/quickstarts/business_ruleservice_ruleAgent/ruleAgent/package/org.jboss.soa.esb.services.rules.pkg
===================================================================
(Binary files differ)
Modified: labs/jbossesb/trunk/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java 2009-02-03 17:53:49 UTC (rev 25079)
+++ labs/jbossesb/trunk/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleBaseHelperUnitTest.java 2009-02-03 18:41:48 UTC (rev 25080)
@@ -24,11 +24,29 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.StringReader;
+import java.net.URL;
+import java.util.Properties;
import junit.framework.JUnit4TestAdapter;
+
import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.agent.AgentEventListener;
+import org.drools.agent.RuleAgent;
+import org.drools.common.DroolsObjectOutputStream;
import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+import org.jboss.internal.soa.esb.util.StreamUtils;
+import org.jboss.soa.esb.ConfigurationException;
+import org.junit.Ignore;
import org.junit.Test;
/**
@@ -98,24 +116,90 @@
assertNotNull( spreadSheetAsString );
}
- /*
- This test is currently disabled as the file property that exists in RuleBaseHelper.properties
- accesses a file on the local file system. This causes problems with the integration build as
- the working dir is not the same and when run from eclipse or ant in this modules directory.
- The issue here could be fixed by using the dir property in base-build.xml, but that caused
- the other modules to fail. Leaving this for now as v5.0 will clean this up./Daniel
@Test
- */
- public void loadRuleBaseFromRuleAgent() throws Exception
+ public void verifyRuleAgentPkgFile() throws DroolsParserException, RuleServiceBuilderException, IOException, RuleServiceException
{
- RuleBase ruleBase = helper.loadRuleBaseFromRuleAgent( "RuleBaseHelper.properties" );
- assertNotNull( ruleBase );
- assertEquals( "org.jboss.internal.soa.esb.rules", ruleBase.getPackages()[0].getName());
+ final Properties properties = new Properties();
+ URL pkgUrl = getClass().getResource("/testrules.pkg");
+
+ properties.setProperty("newInstance", "true");
+ properties.setProperty("file", pkgUrl.getFile());
+ properties.setProperty("poll", "20");
+ properties.setProperty("name", "MyConfig");
+
+ // note that the is an exception occurs TestAgentEventListeners exception
+ // method will be called an this test will fail.
+ RuleAgent ruleAgent = RuleAgent.newRuleAgent(properties, new TestAgentEventListener());
+ Package pkg = ruleAgent.getRuleBase().getPackage("org.jboss.internal.soa.esb.rules");
+ System.out.println(pkg);
+ assertNotNull(pkg);
}
+ /**
+ * This method can be used to generate .pkg file for a .drl.
+ */
+ @Test
+ @Ignore
+ public void generatePackageFromDrl() throws DroolsParserException, ConfigurationException, IOException
+ {
+ createPackageFile("/RuleAgentQuickstart.drl", "ruleAgent.pkg");
+ }
+
+ private static void createPackageFile(final String drlFile, final String pkgFile) throws DroolsParserException, IOException, ConfigurationException
+ {
+ final PackageBuilder builder = new PackageBuilder();
+ final String drl = StreamUtils.getResourceAsString(drlFile, "UTF-8");
+ builder.addPackageFromDrl(new StringReader(drl));
+
+ // gets the package
+ org.drools.rule.Package pkg = builder.getPackage();
+
+ // creates the rulebase
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+
+ // adds the package
+ ruleBase.addPackage(pkg);
+
+ serializeObject(pkg, pkgFile);
+ }
+
+ private static void serializeObject(Object object, final String toFile) throws FileNotFoundException, IOException
+ {
+ ObjectOutputStream outstream = null;
+ try
+ {
+ outstream = new DroolsObjectOutputStream(new FileOutputStream(toFile));
+ outstream.writeObject(object);
+ }
+ finally
+ {
+ if (outstream != null)
+ {
+ outstream.close();
+ }
+ }
+ }
+
public static junit.framework.Test suite()
{
return new JUnit4TestAdapter( DroolsRuleBaseHelperUnitTest.class );
}
+ private class TestAgentEventListener implements AgentEventListener
+ {
+ public void exception(Exception e)
+ {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+
+ public void setAgentName(String name) { }
+ public void debug(String message) { }
+ public void debug(String message, Object object) { }
+ public void info(String message) { }
+ public void info(String message, Object object) { }
+ public void warning(String message) { }
+ public void warning(String message, Object object) { }
+ }
+
}
Modified: labs/jbossesb/trunk/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java 2009-02-03 17:53:49 UTC (rev 25079)
+++ labs/jbossesb/trunk/product/services/jbrules/src/test/java/org/jboss/internal/soa/esb/services/rules/DroolsRuleServiceUnitTest.java 2009-02-03 18:41:48 UTC (rev 25080)
@@ -211,54 +211,6 @@
assertEquals( 2 , counter.getCounter() );
}
- /*
- This test is currently disabled as the file property that exists in RuleBaseHelper.properties
- accesses a file on the local file system. This causes problems with the integration build as
- the working dir is not the same and when run from eclipse or ant in this modules directory.
- The issue here could be fixed by using the dir property in base-build.xml, but that caused
- the other modules to fail. Leaving this for now as v5.0 will clean this up./Daniel
- @Test
- */
- public void executeStatefulRulesFromRuleAgent() throws RuleServiceException
- {
- Map<String,Object> globals = getGlobalsWithDest();
-
- message = ruleService.executeStatefulRulesFromRuleAgent( "RuleBaseHelper.properties", message , globals, null );
-
- ArrayList<String> destinations = getDistinations( globals );
- assertTrue( destinations.size() == 1 );
-
- message = ruleService.executeStatefulRules( ruleBase, true, message , globals, null );
- assertTrue( destinations.size() == 2 );
- }
-
- /*
- Commented out for the same reason as the previous test.
- @Test
- */
- public void executeStatefulRulesCheckCached() throws RuleServiceException, LifecycleResourceException
- {
- ruleService.getCachedRuleBases().clear();
- final String ruleAgentProperites = "RuleBaseHelper.properties";
- Map<String,Object> globals = getGlobalsWithDest();
- ruleService.executeStatefulRulesFromRuleAgent( ruleAgentProperites, message , globals, null );
-
- Map<String, RuleAgent> ruleAgents = ruleService.getCachedRuleAgents();
- assertEquals( 1, ruleAgents.size() );
- RuleAgent ruleAgent = ruleAgents.get( ruleAgentProperites );
- assertNotNull( ruleAgent );
-
- RuleBase rBase = ruleAgent.getRuleBase();
- assertEquals ( rBase, ruleService.getCachedRuleBases().get( ruleAgentProperites ) );
-
- for ( int i = 0 ; i < 10 ; i++ )
- ruleService.executeStatefulRulesFromRuleAgent( ruleAgentProperites, message , globals, null );
-
- assertEquals( 1, ruleAgents.size() );
- assertEquals( 1, ruleService.getCachedRuleBases().size() );
- assertEquals ( rBase, ruleService.getCachedRuleBases().get( ruleAgentProperites ) );
- }
-
// Test setup methods
@Before
Modified: labs/jbossesb/trunk/product/services/jbrules/src/test/resources/testrules.pkg
===================================================================
(Binary files differ)
More information about the jboss-svn-commits
mailing list