[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