[jboss-svn-commits] JBL Code SVN: r5404 - in labs/jbossrules/branches/3.0.x/drools-examples/src/main: java/org/drools/examples java/org/drools/examples/decisiontable rules/org/drools/examples

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 2 07:52:51 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-08-02 07:52:45 -0400 (Wed, 02 Aug 2006)
New Revision: 5404

Added:
   labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/PricingRuleDTExample.java
   labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/
   labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Driver.java
   labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Policy.java
   labs/jbossrules/branches/3.0.x/drools-examples/src/main/rules/org/drools/examples/ExamplePolicyPricing.xls
Log:
example for new DT

Added: labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/PricingRuleDTExample.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/PricingRuleDTExample.java	2006-08-02 11:50:35 UTC (rev 5403)
+++ labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/PricingRuleDTExample.java	2006-08-02 11:52:45 UTC (rev 5404)
@@ -0,0 +1,77 @@
+package org.drools.examples;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+import org.drools.decisiontable.InputType;
+import org.drools.decisiontable.SpreadsheetCompiler;
+import org.drools.examples.decisiontable.Driver;
+import org.drools.examples.decisiontable.Policy;
+
+/**
+ * This shows off a decision table.
+ */
+public class PricingRuleDTExample {
+
+    public static final void main(String[] args) throws Exception {    	
+    	PricingRuleDTExample launcher = new PricingRuleDTExample();
+    	launcher.executeExample();
+    }
+    
+    public int executeExample() throws Exception {
+    	
+    	//first we compile the decision table into a whole lot of rules.
+    	SpreadsheetCompiler compiler = new SpreadsheetCompiler();
+    	String drl = compiler.compile(getSpreadsheetStream(), InputType.XLS);
+
+    	//UNCOMMENT ME TO SEE THE DRL THAT IS GENERATED
+    	//System.out.println(drl);
+
+    	RuleBase ruleBase = buildRuleBase(drl);
+    	
+		WorkingMemory wm = ruleBase.newWorkingMemory();
+		
+		//now create some test data
+		Driver driver = new Driver();
+		Policy policy = new Policy();
+		
+		wm.assertObject(driver);
+		wm.assertObject(policy);
+		
+		wm.fireAllRules();
+		
+		System.out.println("BASE PRICE IS: " + policy.getBasePrice());
+		System.out.println("DISCOUNT IS: " + policy.getDiscountPercent());
+		
+        return policy.getBasePrice();
+    	
+    }
+
+
+    /** Build the rule base from the generated DRL */
+	private RuleBase buildRuleBase(String drl) throws DroolsParserException, IOException, Exception {
+		//now we build the rule package and rulebase, as if they are normal rules
+		PackageBuilder builder = new PackageBuilder();
+		builder.addPackageFromDrl( new StringReader(drl) );
+		
+		//add the package to a rulebase (deploy the rule package).
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+		ruleBase.addPackage( builder.getPackage() );
+		return ruleBase;
+	}
+    
+
+    private InputStream getSpreadsheetStream() {
+    	return this.getClass().getResourceAsStream("ExamplePolicyPricing.xls");
+	}
+
+
+
+    
+}


Property changes on: labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/PricingRuleDTExample.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Driver.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Driver.java	2006-08-02 11:50:35 UTC (rev 5403)
+++ labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Driver.java	2006-08-02 11:52:45 UTC (rev 5404)
@@ -0,0 +1,41 @@
+package org.drools.examples.decisiontable;
+
+/**
+ * This represents obviously a driver who is applying for an insurance Policy.
+ * @author Michael Neale
+ *
+ */
+public class Driver {
+
+	private String name = "Mr Joe Blogs";
+	private Integer age = new Integer(30);
+	private Integer priorClaims = new Integer(0);	
+	private String  locationRiskProfile = "LOW";
+	
+	public Integer getAge() {
+		return age;
+	}
+	public void setAge(Integer age) {
+		this.age = age;
+	}
+	public String getLocationRiskProfile() {
+		return locationRiskProfile;
+	}
+	public void setLocationRiskProfile(String locationRiskProfile) {
+		this.locationRiskProfile = locationRiskProfile;
+	}
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public Integer getPriorClaims() {
+		return priorClaims;
+	}
+	public void setPriorClaims(Integer priorClaims) {
+		this.priorClaims = priorClaims;
+	}
+	
+	
+}


Property changes on: labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Driver.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Policy.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Policy.java	2006-08-02 11:50:35 UTC (rev 5403)
+++ labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Policy.java	2006-08-02 11:52:45 UTC (rev 5404)
@@ -0,0 +1,49 @@
+package org.drools.examples.decisiontable;
+
+/**
+ * This represents a policy that a driver is applying for. 
+ * 
+ * Obviously in the real world, there are actuaries to mess things up, but lets just pretend there is
+ * some simple base price and discount that we can calculate with relatively simple rules !
+ * 
+ * @author Michael Neale
+ */
+public class Policy {
+
+	private String type = "COMPREHENSIVE";
+	private boolean approved = false;
+	private int discountPercent = 0;
+	private int basePrice;
+	
+	public boolean isApproved() {
+		return approved;
+	}
+	public void setApproved(boolean approved) {
+		this.approved = approved;
+	}
+	public int getDiscountPercent() {
+		return discountPercent;
+	}
+	public void setDiscountPercent(int discountPercent) {
+		this.discountPercent = discountPercent;
+	}
+	
+	public String getType() {
+		return type;
+	}
+	
+	public void setType(String type) {
+		this.type = type;
+	}
+	
+	public void applyDiscount(int discount) {
+		discountPercent += discount;
+	}
+	public int getBasePrice() {
+		return basePrice;
+	}
+	public void setBasePrice(int basePrice) {
+		this.basePrice = basePrice;
+	}
+	
+}


Property changes on: labs/jbossrules/branches/3.0.x/drools-examples/src/main/java/org/drools/examples/decisiontable/Policy.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/3.0.x/drools-examples/src/main/rules/org/drools/examples/ExamplePolicyPricing.xls
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/branches/3.0.x/drools-examples/src/main/rules/org/drools/examples/ExamplePolicyPricing.xls
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-svn-commits mailing list