|
From: <jbo...@li...> - 2006-06-13 21:41:54
|
Author: mar...@jb...
Date: 2006-06-13 17:41:51 -0400 (Tue, 13 Jun 2006)
New Revision: 4757
Added:
labs/jbossrules/trunk/drools-examples/src/main/java/org/drools/examples/GolfingExample.java
labs/jbossrules/trunk/drools-examples/src/main/java/org/drools/examples/golf.drl
Log:
JBRULES-309 Convert over Jess golfing example
Added: labs/jbossrules/trunk/drools-examples/src/main/java/org/drools/examples/GolfingExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/src/main/java/org/drools/examples/GolfingExample.java 2006-06-13 18:02:30 UTC (rev 4756)
+++ labs/jbossrules/trunk/drools-examples/src/main/java/org/drools/examples/GolfingExample.java 2006-06-13 21:41:51 UTC (rev 4757)
@@ -0,0 +1,76 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.compiler.PackageBuilder;
+
+public class GolfingExample {
+
+ /**
+ * @param args
+ */
+ public static void main(final String[] args) throws Exception {
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( GolfingExample.class.getResourceAsStream( "golf.drl" ) ) );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
+
+ String[] names = new String[] { "Fred", "Joe", "Bob", "Tom" };
+ String[] colors = new String[] { "red", "blue", "plaid", "orange" };
+ int[] positions = new int[] { 1, 2, 3, 4 };
+
+ for ( int n = 0; n < names.length; n++ ) {
+ for ( int c = 0; c < colors.length; c++ ) {
+ for ( int p = 0; p < positions.length; p++ ) {
+ workingMemory.assertObject( new Golfer( names[n], colors[c], positions[p]) );
+ }
+ }
+ }
+
+ workingMemory.fireAllRules();
+ }
+
+
+ public static class Golfer {
+ private String name;
+ private String color;
+ private int position;
+
+ public Golfer(String name,
+ String color,
+ int position) {
+ super();
+ this.name = name;
+ this.color = color;
+ this.position = position;
+ }
+ /**
+ * @return the color
+ */
+ public String getColor() {
+ return this.color;
+ }
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ /**
+ * @return the name
+ */
+ public int getPosition() {
+ return this.position;
+ }
+
+ }
+}
+
Added: labs/jbossrules/trunk/drools-examples/src/main/java/org/drools/examples/golf.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/src/main/java/org/drools/examples/golf.drl 2006-06-13 18:02:30 UTC (rev 4756)
+++ labs/jbossrules/trunk/drools-examples/src/main/java/org/drools/examples/golf.drl 2006-06-13 21:41:51 UTC (rev 4757)
@@ -0,0 +1,55 @@
+package org.drools.examples;
+
+import org.drools.examples.GolfingExample.Golfer;
+
+rule "find solution"
+ when
+ // There is a golfer named Fred,
+ // Whose positions is $p1
+ Golfer( $fredsName : name == "Fred",
+ $fredsPosition : position,
+ $fredsColor : color )
+
+ // The golfer to Fred's immediate right
+ // is wearing blue pants
+ Golfer( $unknownsName : name != "Fred",
+ $unknownsPosition : position == ( new Integer( $fredsPosition.intValue() + 1 ) ),
+ $unknownsColor : color == "blue",
+ color != $fredsColor )
+
+ // Joe is in position 2
+ Golfer( $joesName : name == "Joe",
+ $joesPosition : position == 2,
+ position != $fredsPosition,
+ $joesColor : color != $fredsColor )
+
+ // Bob is wearing plaid pants
+ Golfer( $bobsName : name == "Bob",
+ name != $unknownsName,
+ $bobsPosition : position != $fredsPosition,
+ position != $unknownsPosition,
+ position != $joesPosition,
+ $bobsColor : color == "plaid",
+ color != $fredsColor,
+ color != $joesColor,
+ color != $unknownsColor )
+
+ // Tom isn't in position 1 or 4
+ // and isn't wearing orange
+ Golfer( $tomsName : name == "Tom",
+ $tomsPosition : position != 1,
+ position != 4,
+ position != $fredsPosition,
+ position != $joesPosition,
+ position != $bobsPosition,
+ $tomsColor : color != "orange",
+ color != "blue",
+ color != $fredsColor,
+ color != $joesColor,
+ color != $bobsColor )
+ then
+ System.out.println( "Fred " + $fredsPosition + " " + $fredsColor );
+ System.out.println( "Joe " + $joesPosition + " " + $joesColor );
+ System.out.println( "Bob " + $bobsPosition + " " + $bobsColor );
+ System.out.println( "Tom " + $tomsPosition + " " + $tomsColor );
+end
|