[jboss-svn-commits] JBL Code SVN: r26076 - in labs/jbossrules/trunk/drools-examples/drools-examples-fusion: src/main/java/org/drools/examples/broker and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Apr 16 20:49:39 EDT 2009


Author: tirelli
Date: 2009-04-16 20:49:39 -0400 (Thu, 16 Apr 2009)
New Revision: 26076

Added:
   labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/java/org/drools/examples/broker/ui/Utils.java
Modified:
   labs/jbossrules/trunk/drools-examples/drools-examples-fusion/.classpath
   labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/java/org/drools/examples/broker/Broker.java
   labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/rules/broker.drl
Log:
Fixing example

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-fusion/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-fusion/.classpath	2009-04-16 23:58:38 UTC (rev 26075)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-fusion/.classpath	2009-04-17 00:49:39 UTC (rev 26076)
@@ -6,18 +6,21 @@
 	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/drools/drools-api/5.0.0.SNAPSHOT/drools-api-5.0.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-api/5.0.0.SNAPSHOT/drools-api-5.0.0.SNAPSHOT-sources.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/5.0.0.SNAPSHOT/drools-compiler-5.0.0.SNAPSHOT.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.0.0.SNAPSHOT/drools-core-5.0.0.SNAPSHOT.jar"/>
 	<classpathentry kind="var" path="M2_REPO/com/jgoodies/forms/1.2.1/forms-1.2.1.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
 	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1-sources.jar"/>
 	<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar" sourcepath="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1-sources.jar"/>
-	<classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar" sourcepath="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
 	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
 	<classpathentry kind="var" path="M2_REPO/com/jgoodies/looks/2.2.0/looks-2.2.0.jar"/>
-	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.5/mvel2-2.0.5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-api"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/mvel"/>
 	<classpathentry kind="output" path="target/classes"/>
 </classpath>

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/java/org/drools/examples/broker/Broker.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/java/org/drools/examples/broker/Broker.java	2009-04-16 23:58:38 UTC (rev 26075)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/java/org/drools/examples/broker/Broker.java	2009-04-17 00:49:39 UTC (rev 26076)
@@ -19,10 +19,10 @@
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseConfiguration;
 import org.drools.KnowledgeBaseFactory;
-import org.drools.RuleBaseConfiguration;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.KnowledgeBuilderFactory;
 import org.drools.builder.ResourceType;
+import org.drools.conf.EventProcessingOption;
 import org.drools.examples.broker.events.Event;
 import org.drools.examples.broker.events.EventReceiver;
 import org.drools.examples.broker.model.Company;
@@ -30,8 +30,6 @@
 import org.drools.examples.broker.model.StockTick;
 import org.drools.examples.broker.ui.BrokerWindow;
 import org.drools.io.ResourceFactory;
-import org.drools.logger.KnowledgeRuntimeLogger;
-import org.drools.logger.KnowledgeRuntimeLoggerFactory;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.WorkingMemoryEntryPoint;
 
@@ -88,8 +86,12 @@
         } catch ( Exception e ) {
             e.printStackTrace();
         }
+        if( builder.hasErrors() ) {
+            System.err.println(builder.getErrors());
+            System.exit( 0 );
+        }
         KnowledgeBaseConfiguration conf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
-        conf.setProperty( "drools.eventProcessingMode", "stream" );
+        conf.setOption( EventProcessingOption.STREAM );
         //System.out.println(((RuleBaseConfiguration)conf).getEventProcessingMode());
         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( conf );
         kbase.addKnowledgePackages( builder.getKnowledgePackages() );

Added: labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/java/org/drools/examples/broker/ui/Utils.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/java/org/drools/examples/broker/ui/Utils.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/java/org/drools/examples/broker/ui/Utils.java	2009-04-17 00:49:39 UTC (rev 26076)
@@ -0,0 +1,10 @@
+package org.drools.examples.broker.ui;
+
+import java.text.DecimalFormat;
+
+public class Utils {
+    
+    public static String percent( double number ) {
+        return new DecimalFormat( "%0.00" ).format( number );
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/java/org/drools/examples/broker/ui/Utils.java
___________________________________________________________________
Name: svn:executable
   + *

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/rules/broker.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/rules/broker.drl	2009-04-16 23:58:38 UTC (rev 26075)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-fusion/src/main/rules/broker.drl	2009-04-17 00:49:39 UTC (rev 26076)
@@ -1,16 +1,19 @@
-package org.drools.examples.broker;
+package org.drools.examples.broker
 
 # importing classes
-import org.drools.examples.broker.model.Company;
-import org.drools.examples.broker.model.StockTick;
+import org.drools.examples.broker.model.Company
+import org.drools.examples.broker.model.StockTick
 
+# it is possible to import static methods as functions for usage in the rules
+import function org.drools.examples.broker.ui.Utils.percent
+
 # a common pattern is to expose services to rules through
 # a helper service class
 global org.drools.examples.broker.BrokerServices services
 
 # default dialect for the semantic code will be MVEL
 dialect "mvel"
-
+ 
 # tells the engine that a StockTick instance will assume the
 # role (semantics) of events and that the default retention 
 # policy will be 2 minutes 
@@ -41,36 +44,23 @@
 # present in the working memory
 rule "Update stock price"
     agenda-group "evaluation"
+    lock-on-active
 when
     $cp : Company( $sb : symbol )
     $st : StockTick( symbol == $sb, $pr : price ) from entry-point "StockTick stream"
 then
     // This shows an update on working memory facts with data from joined events
-    $cp.currentPrice = $pr;
+    modify( $cp ) { currentPrice = $pr }
     
     // Although events are considered immutable, a common pattern is to use a class
     // to represent an event and enrich that event instance with data derived from other facts/events.
     // Bellow we "enrich" the event instance with the percentual change in the price, 
     // based on the previous price
-    $st.delta = $cp.delta;
+    modify( $st ) { delta = $cp.delta }
 end
 
-rule "average over last minute"
-    agenda-group "evaluation"
-    lock-on-active
-when
-    $stat : Statistics( $symbol : symbol )
-    Number( $av : doubleValue ) from accumulate(
-         StockTick( symbol == $symbol, $p : price ) over window:time( 1m )
-                                                    from entry-point "StockTick stream",
-         average( $p ) )
-then
-    //System.out.println($symbol +": $"+$av );
-    modify( $stat ) {
-         average = $av
-    } 
-end
-
+# a low salience rule is used some times to change rule execution phases.
+# in this case, it moves processing from "evaluation" to "report" phase.
 rule "evaluation done"
     agenda-group "evaluation"
     salience -10
@@ -80,14 +70,14 @@
     drools.setFocus( "report" );
 end
 
+# this rule shows a trick to get the last available event as well as 
+# how to call global services from the consequence
 rule "sudden drop"
     agenda-group "report"
 when
-    $st : StockTick( $sb : symbol, $ts : timestamp, $pr : price ) from entry-point "StockTick stream"
+    $st : StockTick( $sb : symbol, $ts : timestamp, $pr : price, $dt : delta < -0.05 ) from entry-point "StockTick stream"
     not( StockTick( symbol == $sb, timestamp > $ts ) from entry-point "StockTick stream" )
-    Statistics( symbol == $sb, $av : average > ( $pr * 1.05 ) )
 then
-    System.out.println( "Drop +5%: "+$sb+" avg: $"+$av+" price: $"+$pr );
-    services.log( "Drop +5%: "+$sb+" avg: $"+$av+" price: $"+$pr );
+    services.log( "Drop >5%: "+$sb+" delta: $"+percent($dt)+" price: $"+$pr );
 end
 




More information about the jboss-svn-commits mailing list