[jboss-svn-commits] JBL Code SVN: r23895 - in labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools: benchmark/waltz and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Nov 17 10:07:59 EST 2008
Author: Rikkola
Date: 2008-11-17 10:07:59 -0500 (Mon, 17 Nov 2008)
New Revision: 23895
Modified:
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/NumberGuessExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ruleflow/WorkItemExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsSudokuGridModel.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsUtil.java
Log:
Second part of drools-examples that use drools-api
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java 2008-11-17 14:39:30 UTC (rev 23894)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java 2008-11-17 15:07:59 UTC (rev 23895)
@@ -7,18 +7,22 @@
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.StringTokenizer;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.PackageBuilderConfiguration;
-import org.drools.rule.Package;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.definition.KnowledgePackage;
+import org.drools.runtime.StatefulKnowledgeSession;
+
public class MannersBenchmark {
/** Number of guests at the dinner (default: 16). */
private int numGuests = 16;
@@ -33,18 +37,18 @@
private int maxHobbies = 3;
public static void main(final String[] args) throws Exception {
- PackageBuilderConfiguration config = new PackageBuilderConfiguration();
+ KnowledgeBuilderConfiguration config= KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
- PackageBuilder builder = new PackageBuilder(config);
- builder.addPackageFromDrl(new InputStreamReader(MannersBenchmark.class
- .getResourceAsStream("manners.drl")));
- Package pkg = builder.getPackage();
+ KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(config);
+ builder.addResource( new InputStreamReader(MannersBenchmark.class
+ .getResourceAsStream("manners.drl")), KnowledgeType.DRL);
+ Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
// add the package to a rulebase
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage(pkg);
+ final KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
+ knowledgeBase.addKnowledgePackages( pkgs );
- StatefulSession session = ruleBase.newStatefulSession();
+ StatefulKnowledgeSession session = knowledgeBase.newStatefulKnowledgeSession();
String filename;
if (args.length != 0) {
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java 2008-11-17 14:39:30 UTC (rev 23894)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java 2008-11-17 15:07:59 UTC (rev 23895)
@@ -1,4 +1,5 @@
package org.drools.benchmark.waltz;
+
/*
* Copyright 2005 JBoss Inc
*
@@ -15,75 +16,79 @@
* limitations under the License.
*/
-
-
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.drools.RuleBase;
-import org.drools.RuleBaseConfiguration;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.WorkingMemory;
-import org.drools.compiler.PackageBuilder;
-import org.drools.rule.Package;
-
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.definition.KnowledgePackage;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.rule.WorkingMemory;
+
/**
* This is a sample file to launch a rule package from a rule source file.
*/
public abstract class WaltzBenchmark {
public static void main(final String[] args) throws Exception {
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( WaltzBenchmark.class.getResourceAsStream( "waltz.drl" ) ) );
- Package pkg = builder.getPackage();
- //add the package to a rulebase
- RuleBaseConfiguration conf = new RuleBaseConfiguration();
- //conf.setAlphaMemory( true );
-// conf.setShadowProxy( false );
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase( conf );
- ruleBase.addPackage( pkg );
-
- StatefulSession session = ruleBase.newStatefulSession();
-
- String filename;
- if ( args.length != 0 ) {
- String arg = args[0];
- filename = arg;
- } else {
- filename = "waltz12.dat";
- }
-
- loadLines( session, filename );
-
- Stage stage = new Stage(Stage.DUPLICATE);
- session.insert( stage );
-
- long start = System.currentTimeMillis();
- session.setGlobal( "time", start );
- session.fireAllRules();
- System.out.println( (System.currentTimeMillis() - start) / 1000 );
- session.dispose();
+ KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.addResource( new InputStreamReader( WaltzBenchmark.class.getResourceAsStream( "waltz.drl" ) ),
+ KnowledgeType.DRL );
+ Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
+ //add the package to a rulebase
+ KnowledgeBaseConfiguration conf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
+ //conf.setAlphaMemory( true );
+ // conf.setShadowProxy( false );
+ final KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase( conf );
+ knowledgeBase.addKnowledgePackages( pkgs );
+
+ StatefulKnowledgeSession session = knowledgeBase.newStatefulKnowledgeSession();
+
+ String filename;
+ if ( args.length != 0 ) {
+ String arg = args[0];
+ filename = arg;
+ } else {
+ filename = "waltz12.dat";
+ }
+
+ loadLines( session,
+ filename );
+
+ Stage stage = new Stage( Stage.DUPLICATE );
+ session.insert( stage );
+
+ long start = System.currentTimeMillis();
+ session.setGlobal( "time",
+ start );
+ session.fireAllRules();
+ System.out.println( (System.currentTimeMillis() - start) / 1000 );
+ session.dispose();
}
-
- private static void loadLines(WorkingMemory wm, String filename) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader( WaltzBenchmark.class.getResourceAsStream( filename ) ));
+ private static void loadLines(WorkingMemory wm,
+ String filename) throws IOException {
+ BufferedReader reader = new BufferedReader( new InputStreamReader( WaltzBenchmark.class.getResourceAsStream( filename ) ) );
Pattern pat = Pattern.compile( ".*make line \\^p1 ([0-9]*) \\^p2 ([0-9]*).*" );
String line = reader.readLine();
- while(line != null) {
+ while ( line != null ) {
Matcher m = pat.matcher( line );
- if(m.matches()) {
- Line l = new Line(Integer.parseInt( m.group( 1 ) ),
- Integer.parseInt( m.group( 2 ) ) );
+ if ( m.matches() ) {
+ Line l = new Line( Integer.parseInt( m.group( 1 ) ),
+ Integer.parseInt( m.group( 2 ) ) );
wm.insert( l );
}
line = reader.readLine();
}
reader.close();
}
-
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java 2008-11-17 14:39:30 UTC (rev 23894)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java 2008-11-17 15:07:59 UTC (rev 23895)
@@ -1,85 +1,98 @@
package org.drools.benchmark.waltzdb;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.util.Collection;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.drools.RuleBase;
-import org.drools.RuleBaseConfiguration;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.compiler.PackageBuilder;
-import org.drools.rule.Package;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.definition.KnowledgePackage;
+import org.drools.runtime.StatefulKnowledgeSession;
+public class WaltzDbBenchmark {
+ public static void main(final String[] args) throws Exception {
+ KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.addResource( new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( "waltzdb.drl" ) ),
+ KnowledgeType.DRL );
+ Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
-public class WaltzDbBenchmark {
- public static void main(final String[] args) throws Exception {
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( "waltzdb.drl" ) ) );
- Package pkg = builder.getPackage();
-
- RuleBaseConfiguration conf = new RuleBaseConfiguration();
- conf.setRemoveIdentities( true );
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase(RuleBase.RETEOO, conf);
-
- ruleBase.addPackage( pkg );
-
- StatefulSession session = ruleBase.newStatefulSession();
-
- java.util.List lines = WaltzDbBenchmark.loadLines("waltzdb16.dat"); //12,8,4
- java.util.List labels = WaltzDbBenchmark.loadLabels("waltzdb16.dat"); //12,8,4
- long now = System.currentTimeMillis();
- Iterator iter =lines.iterator();
- while(iter.hasNext()){
- Line line = (Line)iter.next();
- session.insert(line);
- System.out.println(line.getP1() + " " + line.getP2());
- }
-
- iter =labels.iterator();
- while(iter.hasNext()){
- Label label = (Label)iter.next();
- session.insert(label);
- System.out.println(label.getId() + " " + label.getType());
- }
-
- Stage stage = new Stage(Stage.DUPLICATE);
- session.insert( stage );
- session.fireAllRules();
- System.out.println("Time: " + (System.currentTimeMillis() - now));
- session.dispose();
-
+ KnowledgeBaseConfiguration conf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
+ conf.setProperty( "drools.removeIdentities", "true" );
+
+ final KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase( conf );
+// final RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+// conf );
+
+ knowledgeBase.addKnowledgePackages( pkgs );
+
+ StatefulKnowledgeSession session = knowledgeBase.newStatefulKnowledgeSession();
+
+ java.util.List lines = WaltzDbBenchmark.loadLines( "waltzdb16.dat" ); //12,8,4
+ java.util.List labels = WaltzDbBenchmark.loadLabels( "waltzdb16.dat" ); //12,8,4
+ long now = System.currentTimeMillis();
+ Iterator iter = lines.iterator();
+ while ( iter.hasNext() ) {
+ Line line = (Line) iter.next();
+ session.insert( line );
+ System.out.println( line.getP1() + " " + line.getP2() );
+ }
+
+ iter = labels.iterator();
+ while ( iter.hasNext() ) {
+ Label label = (Label) iter.next();
+ session.insert( label );
+ System.out.println( label.getId() + " " + label.getType() );
+ }
+
+ Stage stage = new Stage( Stage.DUPLICATE );
+ session.insert( stage );
+ session.fireAllRules();
+ System.out.println( "Time: " + (System.currentTimeMillis() - now) );
+ session.dispose();
+
}
private static java.util.List loadLines(String filename) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( filename ) ));
+ BufferedReader reader = new BufferedReader( new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( filename ) ) );
Pattern pat = Pattern.compile( ".*make line \\^p1 ([0-9]*) \\^p2 ([0-9]*).*" );
String line = reader.readLine();
java.util.List result = new java.util.ArrayList();
- while(line != null) {
+ while ( line != null ) {
Matcher m = pat.matcher( line );
- if(m.matches()) {
- Line l = new Line(Integer.parseInt( m.group( 1 ) ),
- Integer.parseInt( m.group( 2 ) ) );
- result.add(l);
+ if ( m.matches() ) {
+ Line l = new Line( Integer.parseInt( m.group( 1 ) ),
+ Integer.parseInt( m.group( 2 ) ) );
+ result.add( l );
}
line = reader.readLine();
}
reader.close();
return result;
}
+
private static java.util.List loadLabels(String filename) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( filename ) ));
+ BufferedReader reader = new BufferedReader( new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( filename ) ) );
Pattern pat = Pattern.compile( ".*make label \\^type ([0-9a-z]*) \\^name ([0-9a-zA-Z]*) \\^id ([0-9]*) \\^n1 ([B+-]*) \\^n2 ([B+-]*)( \\^n3 ([B+-]*))?.*" );
String line = reader.readLine();
java.util.List result = new java.util.ArrayList();
- while(line != null) {
+ while ( line != null ) {
Matcher m = pat.matcher( line );
- if(m.matches()) {
- Label l = new Label(m.group( 1 ),m.group( 2 ), m.group(3) , m.group(4), m.group(5), m.group(6) );
- result.add(l);
+ if ( m.matches() ) {
+ Label l = new Label( m.group( 1 ),
+ m.group( 2 ),
+ m.group( 3 ),
+ m.group( 4 ),
+ m.group( 5 ),
+ m.group( 6 ) );
+ result.add( l );
}
line = reader.readLine();
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java 2008-11-17 14:39:30 UTC (rev 23894)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java 2008-11-17 15:07:59 UTC (rev 23895)
@@ -4,10 +4,6 @@
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.audit.WorkingMemoryFileLogger;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.KnowledgeType;
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java 2008-11-17 14:39:30 UTC (rev 23894)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java 2008-11-17 15:07:59 UTC (rev 23895)
@@ -3,19 +3,16 @@
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.audit.WorkingMemoryFileLogger;
-import org.drools.common.DefaultAgenda;
-import org.drools.compiler.PackageBuilder;
-import org.drools.event.DebugAgendaEventListener;
-import org.drools.event.DebugWorkingMemoryEventListener;
-import org.drools.event.DefaultAgendaEventListener;
-import org.drools.event.DefaultWorkingMemoryEventListener;
-import org.drools.rule.Package;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.definition.KnowledgePackage;
+import org.drools.runtime.StatefulKnowledgeSession;
/**
* This is a sample file to launch a rule package from a rule source file.
@@ -26,32 +23,34 @@
//read in the source
final Reader source = new InputStreamReader( HelloWorldExample.class.getResourceAsStream( "HelloWorld.drl" ) );
- final PackageBuilder builder = new PackageBuilder();
+ final KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
//this will parse and compile in one step
- builder.addPackageFromDrl( source );
-
+ builder.addResource( source,
+ KnowledgeType.DRL );
+
// Check the builder for errors
if ( builder.hasErrors() ) {
System.out.println( builder.getErrors().toString() );
- throw new RuntimeException( "Unable to compile \"HelloWorld.drl\".");
+ throw new RuntimeException( "Unable to compile \"HelloWorld.drl\"." );
}
//get the compiled package (which is serializable)
- final Package pkg = builder.getPackage();
+ final Collection<KnowledgePackage> pkgs = builder.getKnowledgePackages();
//add the package to a rulebase (deploy the rule package).
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
+ final KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
+ knowledgeBase.addKnowledgePackages( pkgs );
- final StatefulSession session = ruleBase.newStatefulSession();
- session.setGlobal( "list", new ArrayList() );
+ final StatefulKnowledgeSession session = knowledgeBase.newStatefulKnowledgeSession();
+ session.setGlobal( "list",
+ new ArrayList() );
+
+// session.addEventListener( new DebugAgendaEventListener() );
+// session.addEventListener( new DebugWorkingMemoryEventListener() );
- session.addEventListener( new DebugAgendaEventListener() );
- session.addEventListener( new DebugWorkingMemoryEventListener() );
-
- final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
- logger.setFileName( "log/helloworld" );
+// final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+// logger.setFileName( "log/helloworld" );
final Message message = new Message();
message.setMessage( "Hello World" );
@@ -60,7 +59,7 @@
session.fireAllRules();
- logger.writeToDisk();
+// logger.writeToDisk();
session.dispose();
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/NumberGuessExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/NumberGuessExample.java 2008-11-17 14:39:30 UTC (rev 23894)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/NumberGuessExample.java 2008-11-17 15:07:59 UTC (rev 23895)
@@ -3,31 +3,29 @@
import java.io.InputStreamReader;
import java.util.Random;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.WorkingMemory;
-import org.drools.audit.WorkingMemoryFileLogger;
-import org.drools.compiler.PackageBuilder;
-import org.drools.event.DefaultRuleFlowEventListener;
-import org.drools.event.RuleFlowEventListener;
-import org.drools.event.RuleFlowGroupDeactivatedEvent;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.runtime.StatefulKnowledgeSession;
public class NumberGuessExample {
public static final void main(String[] args) throws Exception {
- final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( ShoppingExample.class.getResourceAsStream( "NumberGuess.drl" ) ) );
+ final KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.addResource( new InputStreamReader( ShoppingExample.class.getResourceAsStream( "NumberGuess.drl" ) ),
+ KnowledgeType.DRL );
+ builder.addResource( new InputStreamReader( ShoppingExample.class.getResourceAsStream( "NumberGuess.rf" ) ),
+ KnowledgeType.DRF );
- builder.addRuleFlow( new InputStreamReader( ShoppingExample.class.getResourceAsStream( "NumberGuess.rf" ) ) );
+ final KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
+ knowledgeBase.addKnowledgePackages( builder.getKnowledgePackages() );
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( builder.getPackage() );
+ final StatefulKnowledgeSession session = knowledgeBase.newStatefulKnowledgeSession();
- final StatefulSession session = ruleBase.newStatefulSession();
-
- final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
- logger.setFileName( "log/numberguess" );
+// final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+// logger.setFileName( "log/numberguess" );
session.insert( new GameRules( 100,
5 ) );
@@ -36,9 +34,9 @@
session.startProcess( "Number Guess" );
session.fireAllRules();
-
- logger.writeToDisk();
+// logger.writeToDisk();
+
session.dispose();
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ruleflow/WorkItemExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ruleflow/WorkItemExample.java 2008-11-17 14:39:30 UTC (rev 23894)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/ruleflow/WorkItemExample.java 2008-11-17 15:07:59 UTC (rev 23895)
@@ -3,47 +3,52 @@
import java.io.InputStreamReader;
import java.io.Reader;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
-import org.drools.compiler.PackageBuilder;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
import org.drools.process.instance.impl.demo.SystemOutWorkItemHandler;
import org.drools.process.instance.impl.demo.UIWorkItemHandler;
-import org.drools.rule.Package;
+import org.drools.runtime.StatefulKnowledgeSession;
public class WorkItemExample {
public static final void main(String[] args) {
try {
- RuleBase ruleBase = readRule();
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
+ KnowledgeBase knowledgeBase = readRule();
+ StatefulKnowledgeSession workingMemory = knowledgeBase.newStatefulKnowledgeSession();
+
// logging all work items to sysout
SystemOutWorkItemHandler handler = new SystemOutWorkItemHandler();
- workingMemory.getWorkItemManager().registerWorkItemHandler("Email", handler);
- workingMemory.getWorkItemManager().registerWorkItemHandler("Log", handler);
-
+ workingMemory.getWorkItemManager().registerWorkItemHandler( "Email",
+ handler );
+ workingMemory.getWorkItemManager().registerWorkItemHandler( "Log",
+ handler );
+
// using a dialog to show all work items
UIWorkItemHandler handler2 = new UIWorkItemHandler();
//workingMemory.getWorkItemManager().registerWorkItemHandler("Email", handler2);
//workingMemory.getWorkItemManager().registerWorkItemHandler("Log", handler2);
//handler2.setVisible(true);
-
- workingMemory.startProcess("com.sample.ruleflow");
+
+ workingMemory.startProcess( "com.sample.ruleflow" );
workingMemory.fireAllRules();
- } catch (Throwable t) {
+ } catch ( Throwable t ) {
t.printStackTrace();
}
}
- private static RuleBase readRule() throws Exception {
- PackageBuilder builder = new PackageBuilder();
- Reader source = new InputStreamReader( WorkItemExample.class.getResourceAsStream( "/org/drools/examples/ruleflow/workitems.rf" ) );
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- return ruleBase;
- }
-
+ private static KnowledgeBase readRule() throws Exception {
+ KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ Reader source = new InputStreamReader( WorkItemExample.class.getResourceAsStream( "/org/drools/examples/ruleflow/workitems.rf" ) );
+ builder.addResource( source,
+ KnowledgeType.DRF );
+
+ KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
+ knowledgeBase.addKnowledgePackages( builder.getKnowledgePackages() );
+
+ return knowledgeBase;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsSudokuGridModel.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsSudokuGridModel.java 2008-11-17 14:39:30 UTC (rev 23894)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsSudokuGridModel.java 2008-11-17 15:07:59 UTC (rev 23895)
@@ -10,15 +10,16 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import org.drools.RuleBase;
-import org.drools.StatefulSession;
-import org.drools.event.ObjectInsertedEvent;
-import org.drools.event.ObjectRetractedEvent;
-import org.drools.event.ObjectUpdatedEvent;
-import org.drools.event.WorkingMemoryEventListener;
+
+import org.drools.KnowledgeBase;
+import org.drools.event.rule.ObjectInsertedEvent;
+import org.drools.event.rule.ObjectRetractedEvent;
+import org.drools.event.rule.ObjectUpdatedEvent;
+import org.drools.event.rule.WorkingMemoryEventListener;
import org.drools.examples.sudoku.swing.AbstractSudokuGridModel;
import org.drools.examples.sudoku.swing.SudokuGridEvent;
import org.drools.examples.sudoku.swing.SudokuGridModel;
+import org.drools.runtime.StatefulKnowledgeSession;
/**
* An implementation of the SudokuGridModel interface which is backed by the Drools engine.
@@ -33,329 +34,302 @@
* @version $Revision: 1.1 $
*/
@SuppressWarnings("unchecked")
-public class DroolsSudokuGridModel
- extends AbstractSudokuGridModel
- implements SudokuGridModel
-{
- /**
- * The location of the DRL file which defines the rule base for solving a Sudoku grid
- */
- public final static String SUDOKU_SOLVER_DRL = "../sudokuSolver.drl";
-
- /**
- * The location of the DRL file which defines the rule base for validating the content of a Sudoku grid
- */
- public final static String SUDOKU_VALIDATOR_DRL = "../sudokuValidator.drl";
-
- /** A set of AbtractCellValues capturing the current state of the grid */
- private Set<AbstractCellValue> allCellValues
- = new HashSet<AbstractCellValue>();
-
- /** A index into the AbstractCellValues based on row and column */
- private Set<Integer>[][] cellValuesByRowAndCol
- = new HashSet[SudokuGridModel.NUM_ROWS][SudokuGridModel.NUM_COLS];
+public class DroolsSudokuGridModel extends AbstractSudokuGridModel
+ implements
+ SudokuGridModel {
+ /**
+ * The location of the DRL file which defines the rule base for solving a Sudoku grid
+ */
+ public final static String SUDOKU_SOLVER_DRL = "../sudokuSolver.drl";
- /** The solver rule base */
- private RuleBase solverRuleBase;
-
- /** The stateful session working memory for the solver rule base */
- private StatefulSession solverStatefulSession;
+ /**
+ * The location of the DRL file which defines the rule base for validating the content of a Sudoku grid
+ */
+ public final static String SUDOKU_VALIDATOR_DRL = "../sudokuValidator.drl";
- /** An inner class implementation listening to working memory events */
- private SudokuWorkingMemoryListener workingMemoryListener = new SudokuWorkingMemoryListener();
-
- /**
- * Create a new DroolsSudokuGridModel with an empty grid.
- */
- public DroolsSudokuGridModel()
- {
-
- }
+ /** A set of AbtractCellValues capturing the current state of the grid */
+ private Set<AbstractCellValue> allCellValues = new HashSet<AbstractCellValue>();
- /**
- * Create a new DroolsSudokuGridModel with the specified values.
- *
- * @param cellValues a two dimensional grid of Integer values for cells, a null means the value is not yet resolved
- */
- public DroolsSudokuGridModel(Integer[][] cellValues)
- {
- this();
- setCellValues(cellValues);
- }
-
- /**
- * Set the state of the Grid based on a two dimensional array of Integers.
- *
- * @param cellValues a two dimensional grid of Integer values for cells, a null means the value is not yet resolved
- */
- public void setCellValues(Integer[][] cellValues)
- {
- long startTime = System.currentTimeMillis();
- if (solverRuleBase == null)
- {
- try
- {
- solverRuleBase = DroolsUtil.getInstance().readRuleBase(SUDOKU_SOLVER_DRL);
- }
- catch(Exception ex)
- {
- ex.printStackTrace();
- throw new RuntimeException("Error Reading RuleBase for Solver");
- }
- }
-
- if (solverStatefulSession != null)
- {
- solverStatefulSession.removeEventListener(workingMemoryListener);
- }
-
- solverStatefulSession = solverRuleBase.newStatefulSession();
- solverStatefulSession.addEventListener(workingMemoryListener);
-
- for(int row=0; row<cellValues.length; row++)
- {
- for (int col=0; col<cellValues[row].length; col++)
- {
- cellValuesByRowAndCol[row][col] = new HashSet<Integer>();
-
- if(cellValues[row][col] == null)
- {
- for(int value=1; value<10; value++)
- {
- PossibleCellValue cellValue = new PossibleCellValue(value, row, col);
- addCellValue(cellValue);
- allCellValues.add(cellValue);
- }
+ /** A index into the AbstractCellValues based on row and column */
+ private Set<Integer>[][] cellValuesByRowAndCol = new HashSet[SudokuGridModel.NUM_ROWS][SudokuGridModel.NUM_COLS];
+
+ /** The solver rule base */
+ private KnowledgeBase solverRuleBase;
+
+ /** The stateful session working memory for the solver rule base */
+ private StatefulKnowledgeSession solverStatefulSession;
+
+ /** An inner class implementation listening to working memory events */
+ private SudokuWorkingMemoryListener workingMemoryListener = new SudokuWorkingMemoryListener();
+
+ /**
+ * Create a new DroolsSudokuGridModel with an empty grid.
+ */
+ public DroolsSudokuGridModel() {
+
+ }
+
+ /**
+ * Create a new DroolsSudokuGridModel with the specified values.
+ *
+ * @param cellValues a two dimensional grid of Integer values for cells, a null means the value is not yet resolved
+ */
+ public DroolsSudokuGridModel(Integer[][] cellValues) {
+ this();
+ setCellValues( cellValues );
+ }
+
+ /**
+ * Set the state of the Grid based on a two dimensional array of Integers.
+ *
+ * @param cellValues a two dimensional grid of Integer values for cells, a null means the value is not yet resolved
+ */
+ public void setCellValues(Integer[][] cellValues) {
+ long startTime = System.currentTimeMillis();
+ if ( solverRuleBase == null ) {
+ try {
+ solverRuleBase = DroolsUtil.getInstance().readRuleBase( SUDOKU_SOLVER_DRL );
+ } catch ( Exception ex ) {
+ ex.printStackTrace();
+ throw new RuntimeException( "Error Reading RuleBase for Solver" );
}
- else
- {
- ResolvedCellValue cellValue = new ResolvedCellValue(cellValues[row][col], row, col);
- addCellValue(cellValue);
+ }
+
+ if ( solverStatefulSession != null ) {
+ solverStatefulSession.removeEventListener( workingMemoryListener );
+ }
+
+ solverStatefulSession = solverRuleBase.newStatefulKnowledgeSession();
+ solverStatefulSession.addEventListener( workingMemoryListener );
+
+ for ( int row = 0; row < cellValues.length; row++ ) {
+ for ( int col = 0; col < cellValues[row].length; col++ ) {
+ cellValuesByRowAndCol[row][col] = new HashSet<Integer>();
+
+ if ( cellValues[row][col] == null ) {
+ for ( int value = 1; value < 10; value++ ) {
+ PossibleCellValue cellValue = new PossibleCellValue( value,
+ row,
+ col );
+ addCellValue( cellValue );
+ allCellValues.add( cellValue );
+ }
+ } else {
+ ResolvedCellValue cellValue = new ResolvedCellValue( cellValues[row][col],
+ row,
+ col );
+ addCellValue( cellValue );
+ }
}
- }
- }
-
- insertAllCellValues(solverStatefulSession);
- System.out.println("Setting up working memory and inserting all cell value POJOs took "+(System.currentTimeMillis()-startTime)+"ms.");
- }
-
- /**
- * Determines whether a given cell is editable from another class.
- *
- * @param row the row in the grid for the cell
- * @param col the column in the grid for the cell
- * @return is the specified cell editable
- */
- public boolean isCellEditable(int row, int col)
- {
- return false;
- }
+ }
- /**
- * Determines whether a given cell has been solved.
- *
- * @param row the row in the grid for the cell
- * @param col the column in the grid for the cell
- * @return is the specified cell solved
- */
- public boolean isCellResolved(int row, int col)
- {
- return getPossibleCellValues(row, col).size() == 1;
- }
-
- /**
- * Evaluates the current state of the Grid against the
- * validation rules determined in the SUDOKU_VALIDATOR_DRL
- * and indicates if the grid is currently solved or not.
- *
- * @return true if the current state represents a completely filled out
- * and valid Sudoku solution, false otherwise
- */
- public boolean isGridSolved()
- {
- boolean solved = true;
-
- // TODO: move this logic into SUDOKU_VALIDATOR_DRL and out of Java code
- for(int row=0; row<NUM_ROWS; row++)
- {
- for (int col=0; col<NUM_COLS; col++)
- {
- if(!isCellResolved(row, col))
- {
- System.out.print("("+row+","+col+") has not been resolved but has been narrowed down to ");
- for (Integer possibleInt : getPossibleCellValues(row, col))
- {
- System.out.print(possibleInt+" ");
- }
- System.out.println();
- solved=false;
+ insertAllCellValues( solverStatefulSession );
+ System.out.println( "Setting up working memory and inserting all cell value POJOs took " + (System.currentTimeMillis() - startTime) + "ms." );
+ }
+
+ /**
+ * Determines whether a given cell is editable from another class.
+ *
+ * @param row the row in the grid for the cell
+ * @param col the column in the grid for the cell
+ * @return is the specified cell editable
+ */
+ public boolean isCellEditable(int row,
+ int col) {
+ return false;
+ }
+
+ /**
+ * Determines whether a given cell has been solved.
+ *
+ * @param row the row in the grid for the cell
+ * @param col the column in the grid for the cell
+ * @return is the specified cell solved
+ */
+ public boolean isCellResolved(int row,
+ int col) {
+ return getPossibleCellValues( row,
+ col ).size() == 1;
+ }
+
+ /**
+ * Evaluates the current state of the Grid against the
+ * validation rules determined in the SUDOKU_VALIDATOR_DRL
+ * and indicates if the grid is currently solved or not.
+ *
+ * @return true if the current state represents a completely filled out
+ * and valid Sudoku solution, false otherwise
+ */
+ public boolean isGridSolved() {
+ boolean solved = true;
+
+ // TODO: move this logic into SUDOKU_VALIDATOR_DRL and out of Java code
+ for ( int row = 0; row < NUM_ROWS; row++ ) {
+ for ( int col = 0; col < NUM_COLS; col++ ) {
+ if ( !isCellResolved( row,
+ col ) ) {
+ System.out.print( "(" + row + "," + col + ") has not been resolved but has been narrowed down to " );
+ for ( Integer possibleInt : getPossibleCellValues( row,
+ col ) ) {
+ System.out.print( possibleInt + " " );
+ }
+ System.out.println();
+ solved = false;
+ }
}
- }
- }
-
- if (solved)
- {
- try
- {
- RuleBase validatorRuleBase = DroolsUtil.getInstance().readRuleBase(SUDOKU_VALIDATOR_DRL);
-
- StatefulSession validatorStatefulSession = validatorRuleBase.newStatefulSession();
- List issues = new ArrayList();
- validatorStatefulSession.setGlobal("issues", issues);
- insertAllCellValues(validatorStatefulSession);
- validatorStatefulSession.fireAllRules();
-
- if (issues.isEmpty())
- {
- System.out.println("Sucessfully Validated Solution");
+ }
+
+ if ( solved ) {
+ try {
+ KnowledgeBase validatorRuleBase = DroolsUtil.getInstance().readRuleBase( SUDOKU_VALIDATOR_DRL );
+
+ StatefulKnowledgeSession validatorStatefulSession = validatorRuleBase.newStatefulKnowledgeSession();
+ List issues = new ArrayList();
+ validatorStatefulSession.setGlobal( "issues",
+ issues );
+ insertAllCellValues( validatorStatefulSession );
+ validatorStatefulSession.fireAllRules();
+
+ if ( issues.isEmpty() ) {
+ System.out.println( "Sucessfully Validated Solution" );
+ } else {
+ solved = false;
+ for ( Object issue : issues ) {
+ System.out.println( issue );
+ }
+ }
+ } catch ( Exception ex ) {
+ ex.printStackTrace();
+ throw new RuntimeException();
}
- else
- {
- solved = false;
- for (Object issue : issues)
- {
- System.out.println(issue);
- }
+ }
+
+ return solved;
+ }
+
+ /**
+ * Returns the possible values of the cell at a specific
+ * row and column in the Grid.
+ *
+ * @param row the row in the Grid
+ * @param col the column in the Grid
+ * @return the Set of possible Integer values this cell can have, if
+ * the Set is of size one then this is the value this cell
+ * must have, otherwise it is a list of the possibilities
+ */
+ public Set<Integer> getPossibleCellValues(int row,
+ int col) {
+ return cellValuesByRowAndCol[row][col];
+ }
+
+ /**
+ * Attempt to solve the Sudoku puzzle from its current state by
+ * firing all of the rules in SUDOKU_SOLVER_DRL against the
+ * current state of the Grid then validate if we have solved the
+ * Grid after this.
+ *
+ * @return true if the state after firing all rules
+ * represents a completely filled out
+ * and valid Sudoku solution, false otherwise
+ */
+ public boolean solve() {
+ solverStatefulSession.fireAllRules();
+
+ return isGridSolved();
+ }
+
+ /**
+ * Fire the next rule on the agenda and return
+ *
+ * @return true if the state after firing the single rule
+ * represents a completely filled out
+ * and valid Sudoku solution, false otherwise
+ */
+ public boolean step() {
+ // TODO: I am not sure where the fireAllRules(int) method has gone
+ // should be solverStatefulSession.fireAllRules(1)
+ solverStatefulSession.fireAllRules();
+
+ return isGridSolved();
+ }
+
+ /**
+ * Inserts all of the current state of the Grid as represented
+ * by the set of AbstractCellValues this class is maintaining
+ * into the specified StatefulSession working memory.
+ *
+ * @param statefulSession the target StatefulSession
+ */
+ private void insertAllCellValues(StatefulKnowledgeSession statefulSession) {
+ for ( AbstractCellValue cellValue : allCellValues ) {
+ statefulSession.insert( cellValue );
+ }
+ }
+
+ /**
+ * Adds the specified AbstractCellValue into the set of
+ * AbstractCellValues that this class is maintaining.
+ *
+ * @param cellValue the AbstractCellValue to add
+ */
+ private void addCellValue(AbstractCellValue cellValue) {
+ allCellValues.add( cellValue );
+ cellValuesByRowAndCol[cellValue.getRow()][cellValue.getCol()].add( cellValue.getValue() );
+ }
+
+ /**
+ * Removes the specified AbstractCellValue from the set of
+ * AbstractCellValues that this class is maintaining.
+ *
+ * @param cellValue the AbstractCellValue to remove
+ */
+ private void removeCellValue(AbstractCellValue cellValue) {
+ allCellValues.remove( cellValue );
+ cellValuesByRowAndCol[cellValue.getRow()][cellValue.getCol()].remove( cellValue.getValue() );
+ }
+
+ class SudokuWorkingMemoryListener
+ implements
+ WorkingMemoryEventListener {
+
+ public void objectInserted(ObjectInsertedEvent ev) {
+ if ( ev.getObject() instanceof AbstractCellValue ) {
+ addCellValue( ((AbstractCellValue) ev.getObject()) );
}
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- throw new RuntimeException();
- }
- }
-
- return solved;
- }
-
- /**
- * Returns the possible values of the cell at a specific
- * row and column in the Grid.
- *
- * @param row the row in the Grid
- * @param col the column in the Grid
- * @return the Set of possible Integer values this cell can have, if
- * the Set is of size one then this is the value this cell
- * must have, otherwise it is a list of the possibilities
- */
- public Set<Integer> getPossibleCellValues(int row, int col)
- {
- return cellValuesByRowAndCol[row][col];
- }
-
- /**
- * Attempt to solve the Sudoku puzzle from its current state by
- * firing all of the rules in SUDOKU_SOLVER_DRL against the
- * current state of the Grid then validate if we have solved the
- * Grid after this.
- *
- * @return true if the state after firing all rules
- * represents a completely filled out
- * and valid Sudoku solution, false otherwise
- */
- public boolean solve()
- {
- solverStatefulSession.fireAllRules();
-
- return isGridSolved();
- }
-
- /**
- * Fire the next rule on the agenda and return
- *
- * @return true if the state after firing the single rule
- * represents a completely filled out
- * and valid Sudoku solution, false otherwise
- */
- public boolean step()
- {
- // TODO: I am not sure where the fireAllRules(int) method has gone
- // should be solverStatefulSession.fireAllRules(1)
- solverStatefulSession.fireAllRules();
-
- return isGridSolved();
- }
-
- /**
- * Inserts all of the current state of the Grid as represented
- * by the set of AbstractCellValues this class is maintaining
- * into the specified StatefulSession working memory.
- *
- * @param statefulSession the target StatefulSession
- */
- private void insertAllCellValues(StatefulSession statefulSession)
- {
- for (AbstractCellValue cellValue : allCellValues)
- {
- statefulSession.insert(cellValue);
- }
- }
- /**
- * Adds the specified AbstractCellValue into the set of
- * AbstractCellValues that this class is maintaining.
- *
- * @param cellValue the AbstractCellValue to add
- */
- private void addCellValue(AbstractCellValue cellValue)
- {
- allCellValues.add(cellValue);
- cellValuesByRowAndCol[cellValue.getRow()][cellValue.getCol()].add(cellValue.getValue());
- }
+ if ( ev.getObject() instanceof ResolvedCellValue ) {
+ ResolvedCellValue cellValue = (ResolvedCellValue) ev.getObject();
+ fireCellResolvedEvent( new SudokuGridEvent( this,
+ cellValue.getRow(),
+ cellValue.getCol(),
+ cellValue.getValue() ) );
+ }
- /**
- * Removes the specified AbstractCellValue from the set of
- * AbstractCellValues that this class is maintaining.
- *
- * @param cellValue the AbstractCellValue to remove
- */
- private void removeCellValue(AbstractCellValue cellValue)
- {
- allCellValues.remove(cellValue);
- cellValuesByRowAndCol[cellValue.getRow()][cellValue.getCol()].remove(cellValue.getValue());
- }
-
+ if ( ev.getObject() instanceof String ) {
+ System.out.println( ev.getObject() );
+ }
+ }
- class SudokuWorkingMemoryListener
- implements WorkingMemoryEventListener
- {
- public void objectInserted(ObjectInsertedEvent ev)
- {
- if (ev.getObject() instanceof AbstractCellValue)
- {
- addCellValue(((AbstractCellValue) ev.getObject()));
- }
-
- if (ev.getObject() instanceof ResolvedCellValue)
- {
- ResolvedCellValue cellValue = (ResolvedCellValue) ev.getObject();
- fireCellResolvedEvent(new SudokuGridEvent(this, cellValue.getRow(), cellValue.getCol(), cellValue.getValue()));
- }
-
- if (ev.getObject() instanceof String)
- {
- System.out.println(ev.getObject());
- }
- }
-
- public void objectRetracted(ObjectRetractedEvent ev)
- {
- if (ev.getOldObject() instanceof AbstractCellValue)
- {
- AbstractCellValue cellValue = (AbstractCellValue) ev.getOldObject();
-
- removeCellValue(cellValue);
- fireCellUpdatedEvent(new SudokuGridEvent(this, cellValue.getRow(), cellValue.getCol(), cellValue.getValue()));
- }
- }
-
- public void objectUpdated(ObjectUpdatedEvent ev)
- {
- if (ev.getObject() instanceof ResolvedCellValue)
- {
- ResolvedCellValue cellValue = (ResolvedCellValue) ev.getObject();
- fireCellUpdatedEvent(new SudokuGridEvent(this, cellValue.getRow(), cellValue.getCol(), cellValue.getValue()));
- }
- }
- }
+ public void objectRetracted(ObjectRetractedEvent ev) {
+ if ( ev.getOldObject() instanceof AbstractCellValue ) {
+ AbstractCellValue cellValue = (AbstractCellValue) ev.getOldObject();
+
+ removeCellValue( cellValue );
+ fireCellUpdatedEvent( new SudokuGridEvent( this,
+ cellValue.getRow(),
+ cellValue.getCol(),
+ cellValue.getValue() ) );
+ }
+ }
+
+ public void objectUpdated(ObjectUpdatedEvent ev) {
+ if ( ev.getObject() instanceof ResolvedCellValue ) {
+ ResolvedCellValue cellValue = (ResolvedCellValue) ev.getObject();
+ fireCellUpdatedEvent( new SudokuGridEvent( this,
+ cellValue.getRow(),
+ cellValue.getCol(),
+ cellValue.getValue() ) );
+ }
+ }
+ }
}
Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsUtil.java 2008-11-17 14:39:30 UTC (rev 23894)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/rules/DroolsUtil.java 2008-11-17 15:07:59 UTC (rev 23895)
@@ -9,61 +9,57 @@
import java.io.InputStreamReader;
import java.io.Reader;
-import org.drools.RuleBase;
-import org.drools.RuleBaseConfiguration;
-import org.drools.RuleBaseFactory;
-import org.drools.compiler.PackageBuilder;
-import org.drools.rule.Package;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.definition.KnowledgePackage;
-public class DroolsUtil
-{
- private static DroolsUtil INSTANCE;
-
- private DroolsUtil()
- {
-
- }
-
- public static DroolsUtil getInstance()
- {
- if (INSTANCE == null)
- {
- INSTANCE = new DroolsUtil();
- }
-
- return INSTANCE;
- }
-
- public RuleBase readRuleBase(String drlFileName)
- throws Exception
- {
- //read in the source
- Reader source = new InputStreamReader( DroolsSudokuGridModel.class.getResourceAsStream(drlFileName) );
-
- //optionally read in the DSL (if you are using it).
- //Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/mylang.dsl" ) );
-
- //Use package builder to build up a rule package.
- //An alternative lower level class called "DrlParser" can also be used...
-
- PackageBuilder builder = new PackageBuilder();
-
- //this will parse and compile in one step
- //NOTE: There are 2 methods here, the one argument one is for normal DRL.
- builder.addPackageFromDrl( source );
-
- //Use the following instead of above if you are using a DSL:
- //builder.addPackageFromDrl( source, dsl );
-
- //get the compiled package (which is serializable)
- Package pkg = builder.getPackage();
-
- //add the package to a rulebase (deploy the rule package).
- RuleBaseConfiguration conf = new RuleBaseConfiguration();
- conf.setRemoveIdentities( true );
- RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
- conf );
- ruleBase.addPackage( pkg );
- return ruleBase;
- }
+public class DroolsUtil {
+ private static DroolsUtil INSTANCE;
+
+ private DroolsUtil() {
+
+ }
+
+ public static DroolsUtil getInstance() {
+ if ( INSTANCE == null ) {
+ INSTANCE = new DroolsUtil();
+ }
+
+ return INSTANCE;
+ }
+
+ public KnowledgeBase readRuleBase(String drlFileName) throws Exception {
+ //read in the source
+ Reader source = new InputStreamReader( DroolsSudokuGridModel.class.getResourceAsStream( drlFileName ) );
+
+ //optionally read in the DSL (if you are using it).
+ //Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/mylang.dsl" ) );
+
+ //Use package builder to build up a rule package.
+ //An alternative lower level class called "DrlParser" can also be used...
+
+ KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+ //this will parse and compile in one step
+ builder.addResource( source,
+ KnowledgeType.DRL );
+
+ //Use the following instead of above if you are using a DSL:
+ //builder.addPackageFromDrl( source, dsl );
+
+ //add the package to a rulebase (deploy the rule package).
+ KnowledgeBaseConfiguration configuration = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
+ configuration.setProperty( "drools.removeIdentities",
+ "true" );
+
+ KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase( configuration );
+ // RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+ // conf );
+ knowledgeBase.addKnowledgePackages( builder.getKnowledgePackages() );
+ return knowledgeBase;
+ }
}
More information about the jboss-svn-commits
mailing list