[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