[jboss-svn-commits] JBL Code SVN: r24668 - in labs/jbossrules/trunk/drools-pipeline: drools-messenger-jms and 21 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jan 13 04:58:03 EST 2009
Author: mark.proctor at jboss.com
Date: 2009-01-13 04:58:03 -0500 (Tue, 13 Jan 2009)
New Revision: 24668
Added:
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.project
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/pom.xml
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessenger.java
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessengerProviderImpl.java
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapMessageObject.java
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapText.java
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/JaxbSimpleJmsMessengerTest.java
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleConsumer.java
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleJmsMessengerTest.java
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleProducer.java
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xml
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xsd
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl
Modified:
labs/jbossrules/trunk/drools-pipeline/pom.xml
Log:
JBRULES-1903 Pipeline support for DataLoaders and Feeders\n-added JMS Service
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry kind="src" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/activemq/activeio-core/3.1.0/activeio-core-3.1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/activemq/activemq-core/5.2.0/activemq-core-5.2.0.jar"/>
+ <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/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/backport-util-concurrent/backport-util-concurrent/2.1/backport-util-concurrent-2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/camel/camel-core/1.5.0/camel-core-1.5.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.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="src" path="/drools-api"/>
+ <classpathentry kind="src" path="/drools-compiler"/>
+ <classpathentry kind="src" path="/drools-core"/>
+ <classpathentry kind="src" path="/drools-transformer-jaxb"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0/geronimo-j2ee-management_1.0_spec-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.0.3/jaxb-impl-2.0.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-xjc/2.0.3/jaxb-xjc-2.0.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jsr173_api/1.0/jsr173_api-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.5/mvel2-2.0.5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/simple-jndi/simple-jndi/0.11.4/simple-jndi-0.11.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.project
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.project (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.project 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,18 @@
+<projectDescription>
+ <name>drools-messenger-jms</name>
+ <comment>A rule production system</comment>
+ <projects>
+ <project>drools-api</project>
+ <project>drools-compiler</project>
+ <project>drools-core</project>
+ <project>drools-transformer-jaxb</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/pom.xml (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/pom.xml 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.0.0.SNAPSHOT</version>
+ </parent>
+
+ <artifactId>drools-messenger-jms</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: Pipeline :: Messenger :: JMS</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-transformer-jaxb</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-core</artifactId>
+ <version>5.2.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>simple-jndi</groupId>
+ <artifactId>simple-jndi</artifactId>
+ <version>0.11.4</version>
+ </dependency>
+
+ </dependencies>
+
+ <repositories>
+ <repository>
+ <id>dist.codehaus.org</id>
+ <url>http://dist.codehaus.org</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ </repositories>
+</project>
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessenger.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessenger.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessenger.java 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,150 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Properties;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.Session;
+import javax.naming.InitialContext;
+
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.ResultHandlerFactory;
+import org.drools.runtime.pipeline.Service;
+import org.drools.runtime.pipeline.impl.BaseService;
+
+public class JmsMessenger extends BaseService
+ implements
+ Service {
+ private ConnectionFactory connectionFactory;
+ private Destination destination;
+ private MessageConsumer consumer;
+ private Connection connection;
+ private Session session;
+
+ private ResultHandlerFactory resultHandlerFactory;
+ private Pipeline pipeline;
+
+ private Thread thread;
+
+ private JmsMessengerRunner jmsFeederRunner;
+
+ public JmsMessenger(Pipeline pipeline,
+ Properties properties,
+ String destinationName,
+ ResultHandlerFactory resultHandlerFactory) {
+ super();
+ this.pipeline = pipeline;
+ this.resultHandlerFactory = resultHandlerFactory;
+
+ try {
+ InitialContext jndiContext = new InitialContext( properties );
+ this.connectionFactory = (ConnectionFactory) jndiContext.lookup( "ConnectionFactory" );
+ this.destination = (Destination) jndiContext.lookup( destinationName );
+ } catch ( Exception e ) {
+ throw new RuntimeException( "Unable to instantiate JmsFeeder",
+ e );
+ }
+ }
+
+ public void start() {
+ try {
+ this.connection = this.connectionFactory.createConnection();
+ this.session = this.connection.createSession( false,
+ Session.AUTO_ACKNOWLEDGE );
+ this.consumer = this.session.createConsumer( destination );
+
+ this.connection.start();
+ } catch ( Exception e ) {
+ handleException( this,
+ null,
+ e );
+ }
+ this.jmsFeederRunner = new JmsMessengerRunner( this,
+ this.consumer,
+ this.pipeline,
+ this.resultHandlerFactory );
+ this.jmsFeederRunner.setRun( true );
+ this.thread = new Thread( this.jmsFeederRunner );
+ this.thread.start();
+ }
+
+ public void stop() {
+ try {
+ this.jmsFeederRunner.setRun( false );
+ // this will interrupt the receive()
+ this.consumer.close();
+ this.connection.stop();
+ } catch ( JMSException e ) {
+ handleException( this,
+ null,
+ e );
+ }
+ }
+
+ // public void run() {
+ // while ( this.run ) {
+ // Message msg = null;
+ // try {
+ // msg = this.consumer.receive();
+ // System.out.println( "msg received : " + msg );
+ // // emit( msg,
+ // // new EntryPointPipelineContext( this.entryPoint ) );
+ // } catch ( JMSException e ) {
+ // handleException( this,
+ // msg,
+ // e );
+ // }
+ // }
+ // }
+
+ public static class JmsMessengerRunner
+ implements
+ Runnable {
+ private JmsMessenger feeder;
+ private MessageConsumer consumer;
+ private Pipeline pipeline;
+ private ResultHandlerFactory resultHandlerFactory;
+ private volatile boolean run;
+
+ public JmsMessengerRunner(JmsMessenger feeder,
+ MessageConsumer consumer,
+ Pipeline pipeline,
+ ResultHandlerFactory resultHandlerFactory) {
+ super();
+ this.feeder = feeder;
+ this.consumer = consumer;
+ this.pipeline = pipeline;
+ this.resultHandlerFactory = resultHandlerFactory;
+ }
+
+ public void run() {
+ while ( this.run ) {
+ Message msg = null;
+ try {
+ msg = this.consumer.receive();
+ if ( this.resultHandlerFactory != null ) {
+ pipeline.insert( msg,
+ this.resultHandlerFactory.newResultHandler() );
+ } else {
+ pipeline.insert( msg,
+ null );
+ }
+ System.out.println( "msg received : " + msg );
+ } catch ( JMSException e ) {
+ this.feeder.handleException( this.feeder,
+ msg,
+ e );
+ }
+ }
+ }
+
+ public void setRun(boolean run) {
+ this.run = run;
+ }
+
+ }
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessengerProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessengerProviderImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessengerProviderImpl.java 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,26 @@
+/**
+ *
+ */
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Properties;
+
+import org.drools.runtime.pipeline.JmsMessengerProvider;
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.ResultHandlerFactory;
+import org.drools.runtime.pipeline.Service;
+
+public class JmsMessengerProviderImpl
+ implements
+ JmsMessengerProvider {
+ public Service newJmsMessenger(Pipeline pipeline,
+ Properties properties,
+ String destinationName,
+ ResultHandlerFactory resultHandlerFactory) {
+ return new JmsMessenger( pipeline,
+ properties,
+ destinationName,
+ resultHandlerFactory );
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapMessageObject.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapMessageObject.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapMessageObject.java 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,24 @@
+package org.drools.runtime.pipeline.impl;
+
+import javax.jms.JMSException;
+import javax.jms.ObjectMessage;
+import javax.jms.TextMessage;
+
+import org.drools.runtime.pipeline.Emitter;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+
+public class JmsUnwrapMessageObject extends BaseEmitter implements Receiver, Emitter {
+
+ public void receive(Object object,
+ PipelineContext context) {
+ try {
+ Object result = ((ObjectMessage)object).getObject();
+ emit( result, context );
+ } catch ( JMSException e ) {
+ handleException( this, object, e );
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapText.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapText.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapText.java 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,23 @@
+package org.drools.runtime.pipeline.impl;
+
+import javax.jms.JMSException;
+import javax.jms.TextMessage;
+
+import org.drools.runtime.pipeline.Emitter;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+
+public class JmsUnwrapText extends BaseEmitter implements Receiver, Emitter {
+
+ public void receive(Object object,
+ PipelineContext context) {
+ try {
+ String string = ((TextMessage)object).getText();
+ emit( string, context );
+ } catch ( JMSException e ) {
+ handleException( this, object, e );
+ }
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/JaxbSimpleJmsMessengerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/JaxbSimpleJmsMessengerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/JaxbSimpleJmsMessengerTest.java 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,195 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.naming.Context;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
+import junit.framework.TestCase;
+
+import org.apache.activemq.broker.BrokerService;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.ResultHandlerFactory;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.impl.ExecuteResultHandler;
+import org.drools.runtime.pipeline.impl.JmsMessenger;
+import org.drools.runtime.pipeline.impl.JmsUnwrapMessageObject;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionInsertStage;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionPipelineImpl;
+import org.drools.runtime.pipeline.impl.JaxbFactTest.ResultHandlerImpl;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.util.StringUtils;
+
+import com.sun.tools.xjc.Language;
+import com.sun.tools.xjc.Options;
+
+public class JaxbSimpleJmsMessengerTest extends TestCase {
+
+ private SimpleProducer simpleProducer;
+ private BrokerService broker;
+ private String destinationName = "dynamicQueues/FOO.BAR";
+ private String url = "vm://localhost:61616";
+
+ private Properties props;
+
+ protected void setUp() {
+ try {
+ this.broker = new BrokerService();
+ // configure the broker
+ this.broker.setBrokerName( "consumer" );
+ this.broker.addConnector( url );
+ this.broker.start();
+
+ props = new Properties();
+ props.setProperty( Context.INITIAL_CONTEXT_FACTORY,
+ "org.apache.activemq.jndi.ActiveMQInitialContextFactory" );
+ props.setProperty( Context.PROVIDER_URL,
+ this.url );
+
+ this.simpleProducer = new SimpleProducer( props,
+ this.destinationName );
+ this.simpleProducer.start();
+ } catch ( Exception e ) {
+ throw new RuntimeException( e );
+ }
+ }
+
+ public void test1() throws Exception {
+ Options xjcOpts = new Options();
+ xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+ String[] classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "order.xsd",
+ getClass() ),
+ kbuilder,
+ xjcOpts,
+ "xsd" );
+
+ assertFalse( kbuilder.hasErrors() );
+
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_Jaxb.drl",
+ getClass() ),
+ ResourceType.DRL );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+
+ ExecuteResultHandler resultHandlerStage = new ExecuteResultHandler();
+
+ StatefulKnowledgeSessionInsertStage insertStage = new StatefulKnowledgeSessionInsertStage();
+ insertStage.setReceiver( resultHandlerStage );
+
+ JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
+ kbase );
+ Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
+ Transformer transformer = PipelineFactory.newJaxbFromXmlTransformer( unmarshaller );
+ transformer.setReceiver( insertStage );
+
+ JmsUnwrapMessageObject unwrapObjectStage = new JmsUnwrapMessageObject();
+ unwrapObjectStage.setReceiver( transformer );
+
+ Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+ pipeline.setReceiver( unwrapObjectStage );
+
+
+ ResultHandleFactoryImpl factory = new ResultHandleFactoryImpl();
+ JmsMessenger feeder = new JmsMessenger( pipeline,
+ props,
+ this.destinationName,
+ factory );
+ feeder.start();
+
+ String xml = StringUtils.readFileAsString( new InputStreamReader( getClass().getResourceAsStream( "order.xml" ) ) );
+
+ this.simpleProducer.sendObject( xml );
+
+
+ for ( int i = 0; i < 5; i++ ) {
+ // iterate and sleep 5 times, to give these messages time to complete.
+ if ( factory.list.size() == 1 ) {
+ break;
+ }
+ Thread.sleep( 500 );
+ }
+
+ FactHandle factHandle = (FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 0 )).getObject()).keySet().iterator().next();
+ assertNotNull( factHandle );
+
+ assertEquals( 1, factory.list.size() );
+
+ Action executeResult = PipelineFactory.newExecuteResultHandler();
+
+ Action assignAsResult = PipelineFactory.newAssignObjectAsResult();
+ assignAsResult.setReceiver( executeResult );
+
+ //transformer = PipelineFactory.newXStreamToXmlTransformer( xstream );
+ Marshaller marshaller = jaxbCtx.createMarshaller();
+ transformer = PipelineFactory.newJaxbToXmlTransformer( marshaller );
+ transformer.setReceiver( assignAsResult );
+
+ KnowledgeRuntimeCommand getObject = PipelineFactory.newStatefulKnowledgeSessionGetObject();
+ getObject.setReceiver( transformer );
+
+ pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+ pipeline.setReceiver( getObject );
+
+ ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+ pipeline.insert( factHandle,
+ resultHandler );
+
+ assertEqualsIgnoreWhitespace( xml,
+ (String) resultHandler.getObject() );
+
+ }
+
+ public static class ResultHandleFactoryImpl implements ResultHandlerFactory {
+ List list = new ArrayList();
+
+ public ResultHandler newResultHandler() {
+ ResultHandler handler = new ResultHandlerImpl();
+ list.add( handler );
+ return handler;
+ }
+
+ }
+
+ public static class ResultHandlerImpl implements ResultHandler {
+ Object object;
+ public void handleResult(Object object) {
+ this.object = object;
+ }
+ public Object getObject() {
+ return this.object;
+ }
+ }
+
+ private static void assertEqualsIgnoreWhitespace(final String expected,
+ final String actual) {
+ final String cleanExpected = expected.replaceAll( "\\s+",
+ "" );
+ final String cleanActual = actual.replaceAll( "\\s+",
+ "" );
+ assertEquals( cleanExpected,
+ cleanActual );
+ }
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleConsumer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleConsumer.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleConsumer.java 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,96 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Properties;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.apache.activemq.broker.BrokerService;
+
+public class SimpleConsumer {
+
+ public SimpleConsumer() {
+ super();
+ }
+
+ public static void main(String[] args) throws Exception {
+ BrokerService broker = new BrokerService();
+ // configure the broker
+ broker.setBrokerName("consumer");
+ broker.addConnector("tcp://localhost:61616");
+ broker.start();
+
+ Context jndiContext = null;
+ ConnectionFactory connectionFactory = null;
+ Connection connection = null;
+ Session session = null;
+ Destination destination = null;
+ MessageConsumer consumer = null;
+ TextMessage message = null;
+ String destinationName = "dynamicQueues/FOO.BAR";
+ final int NUM_MSGS = 50;
+
+ try {
+ Properties props = new Properties();
+ props.setProperty( Context.INITIAL_CONTEXT_FACTORY,
+ "org.apache.activemq.jndi.ActiveMQInitialContextFactory" );
+ props.setProperty( Context.PROVIDER_URL,
+ "tcp://localhost:61616" );
+ jndiContext = new InitialContext( props );
+ }
+
+ catch ( NamingException e ) {
+ System.out.println( "Could not create JNDI API context: " + e.toString() );
+ System.exit( 1 );
+ }
+
+ try {
+ connectionFactory = (ConnectionFactory) jndiContext.lookup( "ConnectionFactory" );
+ destination = (Destination) jndiContext.lookup( destinationName );
+ }
+
+ catch ( NamingException e ) {
+ e.printStackTrace();
+ System.out.println( "JNDI API lookup failed: " + e );
+ System.exit( 1 );
+ }
+
+ try {
+ connection = connectionFactory.createConnection();
+ session = connection.createSession( false,
+ Session.AUTO_ACKNOWLEDGE );
+
+ //producer = session.createProducer(destination);
+ consumer = session.createConsumer( destination );
+ connection.start();
+ //message = session.createTextMessage();
+
+ for ( int i = 0; i < NUM_MSGS; i++ ) {
+ Message msg = consumer.receive();
+ System.out.println( "received : " + msg );
+ if ( msg instanceof TextMessage ) {
+ message = (TextMessage) msg;
+ System.out.println( message.getText() );
+ }
+ }
+ } catch ( JMSException e ) {
+ System.out.println( "Exception occurred: " + e );
+ } finally {
+ if ( connection != null ) {
+ try {
+ connection.close();
+ } catch ( JMSException e ) {
+ }
+ }
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleJmsMessengerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleJmsMessengerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleJmsMessengerTest.java 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,124 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.naming.Context;
+
+import junit.framework.TestCase;
+
+import org.apache.activemq.broker.BrokerService;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.ResultHandlerFactory;
+import org.drools.runtime.pipeline.impl.ExecuteResultHandler;
+import org.drools.runtime.pipeline.impl.JmsMessenger;
+import org.drools.runtime.pipeline.impl.JmsUnwrapMessageObject;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionInsertStage;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionPipelineImpl;
+import org.drools.runtime.rule.FactHandle;
+
+public class SimpleJmsMessengerTest extends TestCase {
+
+ private SimpleProducer simpleProducer;
+ private BrokerService broker;
+ private String destinationName = "dynamicQueues/FOO.BAR";
+ private String url = "vm://localhost:61616";
+
+ private Properties props;
+
+ protected void setUp() {
+ try {
+ this.broker = new BrokerService();
+ // configure the broker
+ this.broker.setBrokerName( "consumer" );
+ this.broker.addConnector( url );
+ this.broker.start();
+
+ props = new Properties();
+ props.setProperty( Context.INITIAL_CONTEXT_FACTORY,
+ "org.apache.activemq.jndi.ActiveMQInitialContextFactory" );
+ props.setProperty( Context.PROVIDER_URL,
+ this.url );
+
+ this.simpleProducer = new SimpleProducer( props,
+ this.destinationName );
+ this.simpleProducer.start();
+ } catch ( Exception e ) {
+ throw new RuntimeException( e );
+ }
+ }
+
+ public void test1() throws Exception {
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ StatefulKnowledgeSessionPipelineImpl pipeline = new StatefulKnowledgeSessionPipelineImpl( ksession );
+
+ JmsUnwrapMessageObject unwrapObjectStage = new JmsUnwrapMessageObject();
+ StatefulKnowledgeSessionInsertStage insertStage = new StatefulKnowledgeSessionInsertStage();
+ unwrapObjectStage.setReceiver( insertStage );
+ ExecuteResultHandler resultHandlerStage = new ExecuteResultHandler();
+ insertStage.setReceiver( resultHandlerStage );
+ pipeline.setReceiver( unwrapObjectStage );
+
+ ResultHandleFactoryImpl factory = new ResultHandleFactoryImpl();
+ JmsMessenger feeder = new JmsMessenger( pipeline,
+ props,
+ this.destinationName,
+ factory );
+ feeder.start();
+ this.simpleProducer.sendObject( "hello" );
+ this.simpleProducer.sendObject( "hello1" );
+ this.simpleProducer.sendObject( "hello2" );
+ this.simpleProducer.sendObject( "hello3" );
+
+ for ( int i = 0; i < 5; i++ ) {
+ // iterate and sleep 5 times, to give these messages time to complete.
+ if ( factory.list.size() == 4 ) {
+ break;
+ }
+ Thread.sleep( 500 );
+ }
+
+ assertEquals( 4, factory.list.size() );
+
+ FactHandle factHandle = ( FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 0 )).getObject()).keySet().iterator().next();
+ assertEquals( "hello", ksession.getObject( factHandle ) );
+
+ factHandle = ( FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 1 )).getObject()).keySet().iterator().next();
+ assertEquals( "hello1", ksession.getObject( factHandle ) );
+
+ factHandle = ( FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 2 )).getObject()).keySet().iterator().next();
+ assertEquals( "hello2", ksession.getObject( factHandle ) );
+
+ factHandle = ( FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 3 )).getObject()).keySet().iterator().next();
+ assertEquals( "hello3", ksession.getObject( factHandle ) );
+
+ }
+
+ public static class ResultHandleFactoryImpl implements ResultHandlerFactory {
+ List list = new ArrayList();
+
+ public ResultHandler newResultHandler() {
+ ResultHandler handler = new ResultHandlerImpl();
+ list.add( handler );
+ return handler;
+ }
+
+ }
+
+ public static class ResultHandlerImpl implements ResultHandler {
+ Object object;
+ public void handleResult(Object object) {
+ this.object = object;
+ }
+ public Object getObject() {
+ return this.object;
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleProducer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleProducer.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleProducer.java 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,157 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.Serializable;
+import java.util.Properties;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.apache.activemq.command.ActiveMQObjectMessage;
+import org.apache.activemq.command.ActiveMQTextMessage;
+
+public class SimpleProducer {
+
+ private ConnectionFactory connectionFactory;
+ private Destination destination;
+ private MessageProducer producer;
+ private Connection connection;
+ private Session session;
+
+ public SimpleProducer(Properties properties,
+ String destinationName) {
+ try {
+ InitialContext jndiContext = new InitialContext( properties );
+ this.connectionFactory = (ConnectionFactory) jndiContext.lookup( "ConnectionFactory" );
+ this.destination = (Destination) jndiContext.lookup( destinationName );
+ } catch ( Exception e ) {
+ throw new RuntimeException( "Unable to instantiate JmsFeeder",
+ e );
+ }
+ }
+
+ public void start() {
+ try {
+ this.connection = this.connectionFactory.createConnection();
+ this.session = this.connection.createSession( false,
+ Session.AUTO_ACKNOWLEDGE );
+ this.producer = this.session.createProducer( destination );
+ this.connection.start();
+ } catch ( Exception e ) {
+ throw new RuntimeException( e );
+ }
+ }
+
+ public void setText(String text) {
+ ActiveMQTextMessage textMessage = new ActiveMQTextMessage();
+ try {
+ textMessage.setText( text );
+ this.producer.send( textMessage );
+ } catch ( JMSException e ) {
+ throw new RuntimeException( e );
+ }
+ }
+
+ public void sendObject(Serializable object) {
+ ActiveMQObjectMessage objectMessage = new ActiveMQObjectMessage();
+ try {
+ objectMessage.setObject( object );
+ this.producer.send( objectMessage );
+ } catch ( JMSException e ) {
+ throw new RuntimeException( e );
+ }
+ }
+
+ public void stop() {
+ try {
+ // this.run = false;
+ // this will interrupt the receive()
+ this.producer.close();
+ this.connection.stop();
+ } catch ( JMSException e ) {
+ throw new RuntimeException( e );
+ }
+ }
+
+ public void simpleProducer2() {
+ Context jndiContext = null;
+ ConnectionFactory connectionFactory = null;
+ Connection connection = null;
+ Session session = null;
+ Destination destination = null;
+ MessageProducer producer = null;
+ String destinationName = "dynamicQueues/FOO.BAR";
+ final int numMsgs = 50;
+
+ System.out.println( "Destination name is " + destinationName );
+ /*
+ * Create a JNDI API InitialContext object
+ */
+ try {
+ Properties props = new Properties();
+ props.setProperty( Context.INITIAL_CONTEXT_FACTORY,
+ "org.apache.activemq.jndi.ActiveMQInitialContextFactory" );
+ props.setProperty( Context.PROVIDER_URL,
+ "vm://localhost:61616" );
+ jndiContext = new InitialContext( props );
+ } catch ( NamingException e ) {
+ e.printStackTrace();
+ System.out.println( "Could not create JNDI API context: " + e.toString() );
+ System.exit( 1 );
+ }
+
+ /*
+ * Look up connection factory and destination.
+ */
+ try {
+ connectionFactory = (ConnectionFactory) jndiContext.lookup( "ConnectionFactory" );
+ destination = (Destination) jndiContext.lookup( destinationName );
+ } catch ( NamingException e ) {
+ e.printStackTrace();
+ //LOG.info("JNDI API lookup failed: " + e);
+ System.exit( 1 );
+ }
+
+ /*
+ * Create connection. Create session from connection; false means
+ * session is not transacted. Create sender and text message. Send
+ * messages, varying text slightly. Send end-of-messages message.
+ * Finally, close connection.
+ */
+ try {
+ connection = connectionFactory.createConnection();
+ session = connection.createSession( false,
+ Session.AUTO_ACKNOWLEDGE );
+ //session.createTopic( "" )
+ producer = session.createProducer( destination );
+ TextMessage message = session.createTextMessage();
+ for ( int i = 0; i < numMsgs; i++ ) {
+ message.setText( "This is message " + (i + 1) );
+ System.out.println( "Sending message: " + message.getText() );
+ producer.send( message );
+ }
+
+ /*
+ * Send a non-text control message indicating end of messages.
+ */
+ producer.send( session.createMessage() );
+ } catch ( JMSException e ) {
+ e.printStackTrace();
+ System.out.println( "Exception occurred: " + e );
+ } finally {
+ if ( connection != null ) {
+ try {
+ connection.close();
+ } catch ( JMSException e ) {
+ }
+ }
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xml (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xml 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<order xmlns="http://drools.org/model/order" >
+ <order-item>
+ <product-id>111</product-id>
+ <quantity>2</quantity>
+ <price>8.90</price>
+ </order-item>
+ <order-item>
+ <product-id>222</product-id>
+ <quantity>7</quantity>
+ <price>5.20</price>
+ </order-item>
+</order>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xsd
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xsd (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xsd 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,43 @@
+<xsd:schema xmlns:order="http://drools.org/model/order"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://drools.org/model/order"
+ elementFormDefault="qualified" >
+
+
+ <xsd:element name="order">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="order-item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="product-id" type="xsd:long" />
+ <xsd:element name="quantity" type="xsd:integer" />
+ <xsd:element name="price" type="xsd:decimal" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+<!--
+
+ <xsd:element name="order" type="order:OrderType" />
+
+ <xsd:complexType name="OrderType">
+ <xsd:sequence>
+ <xsd:element name="orderItem" type="order:orderItemType" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="orderItem">
+ <xsd:sequence>
+ <xsd:element name="product-id" type="xsd:long" />
+ <xsd:element name="quantity" type="xsd:integer" />
+ <xsd:element name="price" type="xsd:decimal" />
+ </xsd:sequence>
+ </xsd:complexType>
+-->
+
+</xsd:schema>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl 2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,31 @@
+package org.drools.xxx
+
+import org.drools.model.order.Order
+import org.drools.model.order.Order.OrderItem
+
+global java.util.List list1;
+global java.util.List list2;
+
+global org.drools.model.order.Order order
+
+
+rule orderRule
+when
+ $i : Order()
+then
+ list1.add( $i );
+end
+
+rule orderItemRule1
+when
+ $i : OrderItem( price > 6)
+then
+ list1.add( $i );
+end
+
+rule orderItemRule2
+when
+ $i : OrderItem( price < 6)
+then
+ list2.add( $i );
+end
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-pipeline/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/pom.xml 2009-01-13 09:39:09 UTC (rev 24667)
+++ labs/jbossrules/trunk/drools-pipeline/pom.xml 2009-01-13 09:58:03 UTC (rev 24668)
@@ -17,6 +17,7 @@
<module>drools-transformer-jaxb</module>
<module>drools-transformer-xstream</module>
<module>drools-transformer-jxls</module>
+ <module>drools-messenger-jms</module>
</modules>
</project>
More information about the jboss-svn-commits
mailing list