[jboss-svn-commits] JBL Code SVN: r15249 - labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 19 23:23:45 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-09-19 23:23:45 -0400 (Wed, 19 Sep 2007)
New Revision: 15249
Modified:
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java
Log:
-just fleshed out helloworld with event outputs, audit logging and error checking
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 2007-09-20 01:27:24 UTC (rev 15248)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java 2007-09-20 03:23:45 UTC (rev 15249)
@@ -6,7 +6,13 @@
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;
/**
@@ -15,48 +21,45 @@
public class HelloWorldExample {
public static final void main(final String[] args) throws Exception {
- //load up the rulebase
- final RuleBase ruleBase = readRule();
- final StatefulSession session = ruleBase.newStatefulSession();
-
- //go !
- final Message message = new Message();
- message.setMessage( "Hello World" );
- message.setStatus( Message.HELLO );
- session.insert( message );
- session.fireAllRules();
- session.dispose();
- }
-
- /**
- * Please note that this is the "low level" rule assembly API.
- */
- private static RuleBase readRule() throws Exception {
//read in the source
final Reader source = new InputStreamReader( HelloWorldExample.class.getResourceAsStream( "HelloWorld.drl" ) );
- //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...
-
final PackageBuilder builder = new PackageBuilder();
//this wil parse and compile in one step
- //NOTE: There are 2 methods here, the one argument one is for normal DRL.
builder.addPackageFromDrl( source );
+
+ // Check the builder for errors
+ if ( builder.hasErrors() ) {
+ System.out.println( builder.getErrors().toString() );
+ throw new RuntimeException( "Unable to compile \"HelloWorld.drl\".");
+ }
- //Use the following instead of above if you are using a DSL:
- //builder.addPackageFromDrl( source, dsl );
-
//get the compiled package (which is serializable)
final Package pkg = builder.getPackage();
//add the package to a rulebase (deploy the rule package).
final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( pkg );
- return ruleBase;
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ session.addEventListener( new DebugAgendaEventListener() );
+ session.addEventListener( new DebugWorkingMemoryEventListener() );
+
+ final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+ logger.setFileName( "log/helloworld" );
+
+ final Message message = new Message();
+ message.setMessage( "Hello World" );
+ message.setStatus( Message.HELLO );
+ session.insert( message );
+
+ session.fireAllRules();
+
+ logger.writeToDisk();
+
+ session.dispose();
}
public static class Message {
@@ -68,9 +71,9 @@
private int status;
public Message() {
-
+
}
-
+
public String getMessage() {
return this.message;
}
More information about the jboss-svn-commits
mailing list