[jboss-svn-commits] JBL Code SVN: r15633 - in labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main: java/org/drools/tutorials and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Oct 8 00:00:09 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-10-08 00:00:09 -0400 (Mon, 08 Oct 2007)
New Revision: 15633
Added:
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Account.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/AllocatedCashflow.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Cashflow.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example1.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example2.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example3.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example4.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example5.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example6.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/RuleRunner.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/SimpleDate.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/TypedCashflow.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example1.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example2.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example3.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example4.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example5.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example6.drl
Log:
JBRULES-1257 Banking Tutorial from John Dunning
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Account.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Account.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Account.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,33 @@
+package org.drools.tutorials.banking;
+
+public class Account {
+ private long accountNo;
+ private double balance = 0;
+
+ public Account() {
+ }
+
+ public Account(long accountNo) {
+ this.accountNo = accountNo;
+ }
+
+ public long getAccountNo() {
+ return accountNo;
+ }
+
+ public void setAccountNo(long accountNo) {
+ this.accountNo = accountNo;
+ }
+
+ public double getBalance() {
+ return balance;
+ }
+
+ public void setBalance(double balance) {
+ this.balance = balance;
+ }
+
+ public String toString() {
+ return "Account[" + "accountNo=" + accountNo + ",balance=" + balance + "]";
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/AllocatedCashflow.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/AllocatedCashflow.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/AllocatedCashflow.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,34 @@
+package org.drools.tutorials.banking;
+
+import java.util.Date;
+
+public class AllocatedCashflow extends TypedCashflow {
+ private Account account;
+
+ public AllocatedCashflow() {
+ }
+
+ public AllocatedCashflow(Account account,
+ Date date,
+ int type,
+ double amount) {
+ super( date,
+ type,
+ amount );
+ this.account = account;
+ }
+
+ public Account getAccount() {
+ return account;
+ }
+
+ public void setAccount(Account account) {
+ this.account = account;
+ }
+
+ public String toString() {
+ return "AllocatedCashflow[" + "account=" + account + ",date=" + getDate() +
+ ",type=" + (getType() == CREDIT ? "Credit" : "Debit") +
+ ",amount=" + getAmount() + "]";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Cashflow.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Cashflow.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Cashflow.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,39 @@
+package org.drools.tutorials.banking;
+
+import java.util.Date;
+
+public class Cashflow {
+
+ private Date date;
+
+ private double amount;
+
+ public Cashflow() {
+ }
+
+ public Cashflow(Date date,
+ double amount) {
+ this.date = date;
+ this.amount = amount;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public double getAmount() {
+ return amount;
+ }
+
+ public void setAmount(double amount) {
+ this.amount = amount;
+ }
+
+ public String toString() {
+ return "Cashflow[date=" + date + ",amount=" + amount + "]";
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example1.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example1.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example1.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,8 @@
+package org.drools.tutorials.banking;
+
+public class Example1 {
+ public static void main(String[] args) throws Exception {
+ new RuleRunner().runRules( new String[] { "Example1.drl" },
+ new Object[0] );
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example2.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example2.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example2.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,13 @@
+package org.drools.tutorials.banking;
+
+public class Example2 {
+ public static void main(String[] args) throws Exception {
+ Number[] numbers = new Number[] {wrap(3), wrap(1), wrap(4), wrap(1), wrap(5)};
+ new RuleRunner().runRules( new String[] { "Example2.drl" },
+ numbers );
+ }
+
+ private static Integer wrap(int i) {
+ return new Integer(i);
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example3.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example3.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example3.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,13 @@
+package org.drools.tutorials.banking;
+
+public class Example3 {
+ public static void main(String[] args) throws Exception {
+ Number[] numbers = new Number[] {wrap(3), wrap(1), wrap(4), wrap(1), wrap(5)};
+ new RuleRunner().runRules( new String[] { "Example3.drl" },
+ numbers );
+ }
+
+ private static Integer wrap(int i) {
+ return new Integer(i);
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example4.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example4.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example4.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,16 @@
+package org.drools.tutorials.banking;
+
+public class Example4 {
+ public static void main(String[] args) throws Exception {
+ Object[] cashflows = {
+ new Cashflow(new SimpleDate("01/01/2007"), 300.00),
+ new Cashflow(new SimpleDate("05/01/2007"), 100.00),
+ new Cashflow(new SimpleDate("11/01/2007"), 500.00),
+ new Cashflow(new SimpleDate("07/01/2007"), 800.00),
+ new Cashflow(new SimpleDate("02/01/2007"), 400.00),
+ };
+
+ new RuleRunner().runRules( new String[] { "Example4.drl" },
+ cashflows );
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example5.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example5.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example5.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,21 @@
+package org.drools.tutorials.banking;
+
+public class Example5 {
+ public static void main(String[] args) throws Exception {
+ Object[] cashflows = {
+ new TypedCashflow(new SimpleDate("01/01/2007"),
+ TypedCashflow.CREDIT, 300.00),
+ new TypedCashflow(new SimpleDate("05/01/2007"),
+ TypedCashflow.CREDIT, 100.00),
+ new TypedCashflow(new SimpleDate("11/01/2007"),
+ TypedCashflow.CREDIT, 500.00),
+ new TypedCashflow(new SimpleDate("07/01/2007"),
+ TypedCashflow.DEBIT, 800.00),
+ new TypedCashflow(new SimpleDate("02/01/2007"),
+ TypedCashflow.DEBIT, 400.00),
+ };
+
+ new RuleRunner().runRules( new String[] { "Example5.drl" },
+ cashflows );
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example6.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example6.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/Example6.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,34 @@
+package org.drools.tutorials.banking;
+
+public class Example6 {
+ public static void main(String[] args) throws Exception {
+ Account acc1 = new Account(1);
+ Account acc2 = new Account(2);
+
+ Object[] cashflows = {
+ new AllocatedCashflow(acc1,new SimpleDate("01/01/2007"),
+ TypedCashflow.CREDIT, 300.00),
+ new AllocatedCashflow(acc1,new SimpleDate("05/02/2007"),
+ TypedCashflow.CREDIT, 100.00),
+ new AllocatedCashflow(acc2,new SimpleDate("11/03/2007"),
+ TypedCashflow.CREDIT, 500.00),
+ new AllocatedCashflow(acc1,new SimpleDate("07/02/2007"),
+ TypedCashflow.DEBIT, 800.00),
+ new AllocatedCashflow(acc2,new SimpleDate("02/03/2007"),
+ TypedCashflow.DEBIT, 400.00),
+ new AllocatedCashflow(acc1,new SimpleDate("01/04/2007"),
+ TypedCashflow.CREDIT, 200.00),
+ new AllocatedCashflow(acc1,new SimpleDate("05/04/2007"),
+ TypedCashflow.CREDIT, 300.00),
+ new AllocatedCashflow(acc2,new SimpleDate("11/05/2007"),
+ TypedCashflow.CREDIT, 700.00),
+ new AllocatedCashflow(acc1,new SimpleDate("07/05/2007"),
+ TypedCashflow.DEBIT, 900.00),
+ new AllocatedCashflow(acc2,new SimpleDate("02/05/2007"),
+ TypedCashflow.DEBIT, 100.00)
+ };
+
+ new RuleRunner().runRules( new String[] { "Example6.drl" },
+ cashflows );
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/RuleRunner.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/RuleRunner.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/RuleRunner.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,40 @@
+package org.drools.tutorials.banking;
+
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+public class RuleRunner {
+
+ public RuleRunner() {
+ }
+
+ public void runRules(String[] rules,
+ Object[] facts) throws Exception {
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ PackageBuilder builder = new PackageBuilder();
+
+ for ( int i = 0; i < rules.length; i++ ) {
+ String ruleFile = rules[i];
+ System.out.println( "Loading file: " + ruleFile );
+ builder.addPackageFromDrl(new InputStreamReader( RuleRunner.class.getResourceAsStream( ruleFile ) ) );
+ }
+
+ Package pkg = builder.getPackage();
+ ruleBase.addPackage( pkg );
+ WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+ for ( int i = 0; i < facts.length; i++ ) {
+ Object fact = facts[i];
+ System.out.println( "Inserting fact: " + fact );
+ workingMemory.insert( fact );
+ }
+
+ workingMemory.fireAllRules();
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/SimpleDate.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/SimpleDate.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/SimpleDate.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,15 @@
+package org.drools.tutorials.banking;
+
+import java.text.SimpleDateFormat;
+
+import java.util.Date;
+
+
+public class SimpleDate extends Date {
+ private static final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
+
+ public SimpleDate(String datestr) throws Exception {
+ setTime(format.parse(datestr).getTime());
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/TypedCashflow.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/TypedCashflow.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/tutorials/banking/TypedCashflow.java 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,33 @@
+package org.drools.tutorials.banking;
+
+import java.util.Date;
+
+public class TypedCashflow extends Cashflow {
+ public static final int CREDIT = 0;
+ public static final int DEBIT = 1;
+
+ private int type;
+
+ public TypedCashflow() {
+ }
+
+ public TypedCashflow(Date date,
+ int type,
+ double amount) {
+ super( date,
+ amount );
+ this.type = type;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public void setType(int type) {
+ this.type = type;
+ }
+
+ public String toString() {
+ return "TypedCashflow[date=" + getDate() + ",type=" + (type == CREDIT ? "Credit" : "Debit") + ",amount=" + getAmount() + "]";
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example1.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example1.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example1.drl 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,9 @@
+package org.drools.tutorials.banking
+
+
+rule "Rule 01"
+ when
+ eval (1==1)
+ then
+ System.out.println("Rule 01 Works");
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example2.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example2.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example2.drl 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,8 @@
+package org.drools.tutorials.banking
+
+rule "Rule 01"
+ when
+ Number( $intValue : intValue )
+ then
+ System.out.println("Number found with value: " + $intValue);
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example3.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example3.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example3.drl 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,11 @@
+package org.drools.tutorials.banking
+
+
+rule "Rule 01"
+ when
+ $number : Number( )
+ not Number( intValue < $number.intValue )
+ then
+ System.out.println("Number found with value: " + $number.intValue() );
+ retract( $number );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example4.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example4.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example4.drl 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,11 @@
+package org.drools.tutorials.banking
+
+
+rule "Rule 01"
+ when
+ $cashflow : Cashflow( $date : date, $amount : amount )
+ not Cashflow( date < $date)
+ then
+ System.out.println("Cashflow: "+$date+" :: "+$amount);
+ retract($cashflow);
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example5.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example5.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example5.drl 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,13 @@
+package org.drools.tutorials.banking
+
+rule "Rule 01"
+ when
+ $cashflow : TypedCashflow( $date : date,
+ $amount : amount,
+ type == TypedCashflow.CREDIT )
+ not TypedCashflow( date < $date,
+ type == TypedCashflow.CREDIT )
+ then
+ System.out.println("Credit: "+$date+" :: "+$amount);
+ retract($cashflow);
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example6.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example6.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/tutorials/banking/Example6.drl 2007-10-08 04:00:09 UTC (rev 15633)
@@ -0,0 +1,29 @@
+package org.drools.tutorials.banking
+
+rule "Rule 06 - Credit"
+ when
+ $cashflow : AllocatedCashflow( $account : account,
+ $date : date, $amount : amount,
+ type==TypedCashflow.CREDIT )
+ not AllocatedCashflow( account == $account, date < $date)
+ then
+ System.out.println("Credit: " + $date + " :: " + $amount);
+ $account.setBalance($account.getBalance()+$amount);
+ System.out.println("Account: " + $account.getAccountNo() +
+ " - new balance: " + $account.getBalance());
+ retract($cashflow);
+end
+
+rule "Rule 06 - Debit"
+ when
+ $cashflow : AllocatedCashflow( $account : account,
+ $date : date, $amount : amount,
+ type==TypedCashflow.DEBIT )
+ not AllocatedCashflow( account == $account, date < $date)
+ then
+ System.out.println("Debit: " + $date + " :: " + $amount);
+ $account.setBalance($account.getBalance() - $amount);
+ System.out.println("Account: " + $account.getAccountNo() +
+ " - new balance: " + $account.getBalance());
+ retract($cashflow);
+end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list