[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