[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