[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