[jboss-svn-commits] JBL Code SVN: r13744 - in labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main: rules/org/drools/examples and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jul 23 23:26:30 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-07-23 23:26:30 -0400 (Mon, 23 Jul 2007)
New Revision: 13744
Added:
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Customer.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Discount.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Product.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Purchase.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ShoppingDiscount.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/Shopping.drl
Log:
-Added simple shopping discount that demonstrates logical assertions and accumulate functions
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Customer.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Customer.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Customer.java 2007-07-24 03:26:30 UTC (rev 13744)
@@ -0,0 +1,30 @@
+package org.drools.examples;
+
+public class Customer {
+ private String name;
+
+ private int discount;
+
+
+
+ public Customer(String name,
+ int discount) {
+ this.name = name;
+ this.discount = discount;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(int discount) {
+ this.discount = discount;
+ }
+
+
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Discount.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Discount.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Discount.java 2007-07-24 03:26:30 UTC (rev 13744)
@@ -0,0 +1,23 @@
+package org.drools.examples;
+
+public class Discount {
+ private Customer customer;
+ private int amount;
+
+ public Discount(Customer customer,
+ int amount) {
+ this.customer = customer;
+ this.amount = amount;
+ }
+
+ public Customer getCustomer() {
+ return customer;
+ }
+
+ public int getAmount() {
+ return amount;
+ }
+
+
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Product.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Product.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Product.java 2007-07-24 03:26:30 UTC (rev 13744)
@@ -0,0 +1,22 @@
+package org.drools.examples;
+
+public class Product {
+ private String name;
+ private float price;
+
+ public Product(String name,
+ float price) {
+ this.name = name;
+ this.price = price;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public float getPrice() {
+ return price;
+ }
+
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Purchase.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Purchase.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/Purchase.java 2007-07-24 03:26:30 UTC (rev 13744)
@@ -0,0 +1,20 @@
+package org.drools.examples;
+
+public class Purchase {
+ private Customer customer;
+ private Product product;
+
+ public Purchase(Customer customer,
+ Product product) {
+ this.customer = customer;
+ this.product = product;
+ }
+
+ public Customer getCustomer() {
+ return customer;
+ }
+
+ public Product getProduct() {
+ return product;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ShoppingDiscount.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ShoppingDiscount.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ShoppingDiscount.java 2007-07-24 03:26:30 UTC (rev 13744)
@@ -0,0 +1,49 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.drools.FactHandle;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.WorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+public class ShoppingDiscount {
+
+ public static final void main(String[] args) throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( ShoppingDiscount.class.getResourceAsStream( "Shopping.drl" ) ) );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ Customer mark = new Customer( "mark",
+ 0 );
+ session.insert( mark );
+
+ Product shoes = new Product( "shoes",
+ 60 );
+ session.insert( shoes );
+
+ Product hat = new Product( "hat",
+ 60 );
+ session.insert( hat );
+
+ session.insert( new Purchase( mark,
+ shoes ) );
+ FactHandle hatPurchaseHandle = session.insert( new Purchase( mark,
+ hat ) );
+
+ session.fireAllRules();
+
+ session.retract( hatPurchaseHandle );
+ System.out.println( "Customer mark has returned the hat" );
+ session.fireAllRules();
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/Shopping.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/Shopping.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/Shopping.drl 2007-07-24 03:26:30 UTC (rev 13744)
@@ -0,0 +1,39 @@
+package org.drools.examples
+
+rule "Purchase notification"
+ salience 10
+ when
+ $c : Customer()
+ $p : Purchase( customer == $c)
+ then
+ System.out.println( "Customer " + $c.getName() + " just purchased " + $p.getProduct().getName() );
+end
+
+rule "Discount removed notification"
+ when
+ $c : Customer()
+ not Discount( customer == $c )
+ then
+ $c.setDiscount( 0 );
+ System.out.println( "Customer " + $c.getName() + " now has a discount of " + $c.getDiscount() );
+end
+
+rule "Discount awarded notification"
+ when
+ $c : Customer()
+ $d : Discount( customer == $c )
+ then
+ System.out.println( "Customer " + $c.getName() + " now has a discount of " + $d.getAmount() );
+end
+
+rule "Apply 10% discount if total purcahses is over 100"
+ no-loop true
+ when
+ $c : Customer()
+ $i : Double(doubleValue > 100) from accumulate ( Purchase( customer == $c, $price : product.price ),
+ sum( $price ) )
+ then
+ $c.setDiscount( 10 );
+ insertLogical( new Discount($c, 10) );
+ System.out.println( "Customer " + $c.getName() + " now has a shopping total of " + $i );
+end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list