[jboss-svn-commits] JBL Code SVN: r27378 - in labs/jbossrules/trunk/drools-process: drools-ode and 20 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 1 06:39:48 EDT 2009


Author: KrisVerlaenen
Date: 2009-07-01 06:39:47 -0400 (Wed, 01 Jul 2009)
New Revision: 27378

Added:
   labs/jbossrules/trunk/drools-process/drools-ode/
   labs/jbossrules/trunk/drools-process/drools-ode/.classpath
   labs/jbossrules/trunk/drools-process/drools-ode/.project
   labs/jbossrules/trunk/drools-process/drools-ode/pom.xml
   labs/jbossrules/trunk/drools-process/drools-ode/src/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/store/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/store/BPELResourceTypeBuilder.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/store/DroolsProcessStore.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/core/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/core/BPELNode.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/core/BPELProcess.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELEventListener.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELNodeInstance.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELProcessInstance.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELProcessInstanceFactory.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/EmbeddedBPELServer.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/META-INF/
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/META-INF/ODEProcessInstanceFactory.conf
   labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/META-INF/drools.rulebase.conf
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELGuvnorTest.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELTest.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELTest2.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/MockBPELServerTest.java
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/ChangeSet.xml
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3.bpel.jar
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/HelloWorld3.bpel
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/HelloWorld3.wsdl
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/deploy.xml
   labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/log4j.properties
Log:
JBRULES-2153: ODE integration
 - initial implementation

Added: labs/jbossrules/trunk/drools-process/drools-ode/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/.classpath	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/.classpath	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry excluding="**/*.java" including="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/bpel-runtime"/>
+	<classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/annogen/annogen/0.1.0/annogen-0.1.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/org/apache/ws/commons/axiom/axiom-api/1.2.5/axiom-api-1.2.5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ws/commons/axiom/axiom-dom/1.2.5/axiom-dom-1.2.5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ws/commons/axiom/axiom-impl/1.2.5/axiom-impl-1.2.5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/axis2/axis2-kernel/1.3/axis2-kernel-1.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/backport-util-concurrent/backport-util-concurrent/2.2/backport-util-concurrent-2.2.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/commons-codec/commons-codec/1.2/commons-codec-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.2.1/commons-fileupload-1.2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-httpclient/commons-httpclient/3.0.1/commons-httpclient-3.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.4/commons-io-1.4.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.3/commons-lang-2.3.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-pool/commons-pool/1.3/commons-pool-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/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/drools/drools-api/5.1.0.SNAPSHOT/drools-api-5.1.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-api/5.1.0.SNAPSHOT/drools-api-5.1.0.SNAPSHOT-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/5.1.0.SNAPSHOT/drools-compiler-5.1.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-compiler/5.1.0.SNAPSHOT/drools-compiler-5.1.0.SNAPSHOT-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.1.0.SNAPSHOT/drools-core-5.1.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-core/5.1.0.SNAPSHOT/drools-core-5.1.0.SNAPSHOT-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-j2ee-connector_1.5_spec/1.1.1/geronimo-j2ee-connector_1.5_spec-1.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1/geronimo-jms_1.1_spec-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-jpa_3.0_spec/1.0/geronimo-jpa_3.0_spec-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-jta_1.1_spec/1.1/geronimo-jta_1.1_spec-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/components/geronimo-transaction/2.0.1/geronimo-transaction-2.0.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/org/objectweb/howl/howl/1.0.1-1/howl-1.0.1-1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpcore/4.0-alpha5/httpcore-4.0-alpha5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpcore-nio/4.0-alpha5/httpcore-nio-4.0-alpha5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpcore-niossl/4.0-alpha5/httpcore-niossl-4.0-alpha5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/com/ibm/icu/icu4j/2.6.1/icu4j-2.6.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/jaxen/jaxen/1.1.1/jaxen-1.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/jdom/jdom/1.0/jdom-1.0.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/javax/transaction/jta/1.1/jta-1.1.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.14/log4j-1.2.14.jar"/>
+	<classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.10/mvel2-2.0.10.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/neethi/neethi/2.0.2/neethi-2.0.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-axis2/1.2/ode-axis2-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-bpel-api/1.2/ode-bpel-api-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-bpel-compiler/1.2/ode-bpel-compiler-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-bpel-dao/1.2/ode-bpel-dao-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-bpel-epr/1.2/ode-bpel-epr-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-bpel-obj/1.2/ode-bpel-obj-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-bpel-runtime/1.2/ode-bpel-runtime-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-bpel-schemas/1.2/ode-bpel-schemas-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-bpel-store/1.2/ode-bpel-store-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-dao-jpa/1.2/ode-dao-jpa-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-jacob/1.2/ode-jacob-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ode/ode-utils/1.2/ode-utils-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/openjpa/openjpa/1.1.0/openjpa-1.1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/net/sf/saxon/saxon/8.7/saxon-8.7.jar"/>
+	<classpathentry kind="var" path="M2_REPO/net/sf/saxon/saxon-dom/8.7/saxon-dom-8.7.jar"/>
+	<classpathentry kind="var" path="M2_REPO/net/sf/saxon/saxon-xpath/8.7/saxon-xpath-8.7.jar"/>
+	<classpathentry kind="var" path="M2_REPO/net/sourceforge/serp/serp/1.13.1/serp-1.13.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/woden/woden/1.0-incubating-M7b/woden-1.0-incubating-M7b.jar"/>
+	<classpathentry kind="var" path="M2_REPO/wsdl4j/wsdl4j/1.6.1/wsdl4j-1.6.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/codehaus/woodstox/wstx-asl/3.2.1/wstx-asl-3.2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xalan/xalan/2.7.0/xalan-2.7.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.0/xercesImpl-2.9.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/ws/commons/schema/XmlSchema/1.3.2/XmlSchema-1.3.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xom/xom/1.0/xom-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
+	<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: labs/jbossrules/trunk/drools-process/drools-ode/.project
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/.project	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/.project	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,13 @@
+<projectDescription>
+  <name>drools-ode</name>
+  <comment>A rule production system</comment>
+  <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-process/drools-ode/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/pom.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/pom.xml	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,191 @@
+<?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.1.0.SNAPSHOT</version>
+  </parent>
+
+  <artifactId>drools-ode</artifactId>
+  <packaging>jar</packaging>
+  <name>Drools :: Process :: ODE</name>
+
+  <build/>
+
+  <dependencies>
+  
+    <!-- Internal dependencies -->
+    <dependency>
+      <groupId>org.drools</groupId>
+      <artifactId>drools-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.drools</groupId>
+      <artifactId>drools-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.drools</groupId>
+      <artifactId>drools-compiler</artifactId>
+    </dependency>
+
+    <!-- External dependencies -->
+    <dependency>
+      <groupId>com.thoughtworks.xstream</groupId>
+      <artifactId>xstream</artifactId>
+    </dependency>    
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-bpel-api</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-bpel-compiler</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-bpel-runtime</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-bpel-api</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-bpel-dao</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-dao-jpa</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-bpel-epr</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-bpel-store</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-utils</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-utils</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-bpel-schemas</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-bpel-obj</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-jacob</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.ode</groupId>
+      <artifactId>ode-axis2</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.axis2</groupId>
+      <artifactId>axis2-kernel</artifactId>
+      <version>1.3</version>
+    </dependency>
+    <dependency>
+      <groupId>wsdl4j</groupId>
+      <artifactId>wsdl4j</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>javax.transaction</groupId>
+      <artifactId>jta</artifactId>
+      <version>1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>hsqldb</groupId>
+      <artifactId>hsqldb</artifactId>
+      <version>1.8.0.7</version>
+    </dependency>  
+
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.1</version>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>org.apache.geronimo.components</groupId>
+      <artifactId>geronimo-transaction</artifactId>
+      <version>2.0.1</version>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>org.apache.openjpa</groupId>
+      <artifactId>openjpa</artifactId>
+      <version>1.1.0</version>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>org.apache.xmlbeans</groupId>
+      <artifactId>xmlbeans</artifactId>
+      <version>2.3.0</version>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>xerces</groupId>
+      <artifactId>xercesImpl</artifactId>
+      <version>2.9.0</version>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>xalan</groupId>
+      <artifactId>xalan</artifactId>
+      <version>2.7.0</version>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>jaxen</groupId>
+      <artifactId>jaxen</artifactId>
+      <version>1.1.1</version>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>net.sf.saxon</groupId>
+      <artifactId>saxon</artifactId>
+      <version>8.7</version>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>net.sf.saxon</groupId>
+      <artifactId>saxon-dom</artifactId>
+      <version>8.7</version>
+      <scope>test</scope>
+    </dependency>  
+    <dependency>
+      <groupId>net.sf.saxon</groupId>
+      <artifactId>saxon-xpath</artifactId>
+      <version>8.7</version>
+      <scope>test</scope>
+    </dependency>  
+  </dependencies>
+
+</project>

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/store/BPELResourceTypeBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/store/BPELResourceTypeBuilder.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/store/BPELResourceTypeBuilder.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,217 @@
+package org.apache.ode.store;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.compiler.api.CompilationException;
+import org.apache.ode.bpel.dd.DeployDocument;
+import org.apache.ode.bpel.dd.TDeployment;
+import org.apache.ode.bpel.iapi.ContextException;
+import org.apache.ode.bpel.iapi.Endpoint;
+import org.apache.ode.bpel.iapi.EndpointReference;
+import org.apache.ode.bpel.iapi.EndpointReferenceContext;
+import org.apache.ode.bpel.iapi.ProcessConf;
+import org.apache.ode.bpel.iapi.ProcessState;
+import org.apache.ode.utils.DOMUtils;
+import org.drools.builder.ResourceConfiguration;
+import org.drools.builder.ResourceType;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.ResourceTypeBuilder;
+import org.drools.compiler.RuleFlowLoadError;
+import org.drools.io.InternalResource;
+import org.drools.io.Resource;
+import org.drools.ode.core.BPELProcess;
+import org.drools.util.StringUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class BPELResourceTypeBuilder implements ResourceTypeBuilder {
+
+	private PackageBuilder packageBuilder;
+	
+	public void addKnowledgeResource(Resource resource, ResourceType type, ResourceConfiguration configuration) {
+		try {
+			generatePackage();
+			System.out.println("Adding BPEL resource " + resource);
+			URL url = ((InternalResource) resource).getURL();
+			File file = null;
+            if ( "file".equals( url.getProtocol() ) ) {
+                file = new File( StringUtils.toURI( url.toString() ).getSchemeSpecificPart() );
+            } else {
+            	throw new IllegalArgumentException("ODE BPEL resource is not a file! " + resource);
+            }
+			if ( ((InternalResource) resource).isDirectory() ) {
+                List<BPELProcess> processes = readProcesses(file);
+                for (BPELProcess process: processes) {
+                	packageBuilder.getPackage().addProcess(process);
+                }
+                
+			} else {
+				List<BPELProcess> processes = readProcessesFromJar(resource.getInputStream(), file.getName());
+				byte[] bytes = getBytesFromFile(file);
+                for (BPELProcess process: processes) {
+                	process.setBPELJar(bytes);
+                	packageBuilder.getPackage().addProcess(process);
+                }
+			}
+			// TODO: handle exceptions
+			// throw new IllegalArgumentException("ODE BPEL resource is not a directory! " + resource);
+		} catch (Exception e) {
+			packageBuilder.getErrors().add(new RuleFlowLoadError("Exception while loading BPEL resource " + resource, e));
+		}
+	}
+	
+	private void generatePackage() {
+		try {
+			packageBuilder.addPackageFromDrl(new StringReader("package org.drools.ode"));
+		} catch (DroolsParserException e) {
+			// should never occur
+            e.printStackTrace( System.err );
+		} catch (IOException e) {
+			// should never occur
+            e.printStackTrace( System.err );
+		}
+	}
+	
+	public static List<BPELProcess> readProcessesFromJar(InputStream input, String name) throws IOException {
+		// unzip file in temp dir
+		ZipInputStream inputStream = new ZipInputStream(input);
+		ZipEntry ze = null;
+		String tmpDirName =
+			System.getProperty("java.io.tmpdir") + File.separator + 
+			"Drools_ODE" + File.separator + name + File.separator;
+		File tmpDir = new File(tmpDirName);
+		tmpDir.mkdirs();
+		List<File> tmpFiles = new ArrayList<File>();
+		while ((ze = inputStream.getNextEntry()) != null) {
+			String tmpFileName = ze.getName();
+			int index = tmpFileName.lastIndexOf(File.separator);
+			if (index != -1) {
+				tmpFileName = tmpFileName.substring(index + 1);
+			}
+			File tmpFile = new File(tmpDirName + tmpFileName);
+			tmpFile.createNewFile();
+			FileOutputStream fout = new FileOutputStream(tmpFile);
+			for (int c = inputStream.read(); c != -1; c = inputStream.read()) {
+				fout.write(c);
+			}
+			inputStream.closeEntry();
+			fout.close();
+			tmpFiles.add(tmpFile);
+		}
+		inputStream.close();
+		// parse processes
+		return readProcesses(tmpDir);
+	}
+	
+	private static List<BPELProcess> readProcesses(File dir) {
+        List<ProcessConf> processes = deploy(dir);
+        List<BPELProcess> result = new ArrayList<BPELProcess>();
+        for (ProcessConf ODEprocess: processes) {
+    		BPELProcess process = new BPELProcess();
+    		process.setId(ODEprocess.getProcessId().toString());
+    		for (Endpoint endpoint: ODEprocess.getProvideEndpoints().values()) {
+        		process.setName(endpoint.serviceName.toString());
+        		process.setPackageName(endpoint.serviceName.getNamespaceURI());
+    		}
+    		process.setProcessConf(ODEprocess);
+    		System.out.println("Adding process " + process.getId());
+    		result.add(process);
+        }
+        return result;
+	}
+
+	public void setPackageBuilder(PackageBuilder packageBuilder) {
+		this.packageBuilder = packageBuilder;
+	}
+
+	private static List<ProcessConf> deploy(File deploymentUnitDirectory) {
+		int version = 1;
+	    // Create the DU and compile/scan it before acquiring lock.
+	    final DeploymentUnitDir du = new DeploymentUnitDir(deploymentUnitDirectory);
+	    try {
+	        du.compile();
+	    } catch (CompilationException ce) {
+	        throw new ContextException("Deployment failed due to compile errors", ce);
+	    }
+	
+	    du.scan();
+	    final DeployDocument dd = du.getDeploymentDescriptor();
+	    final List<ProcessConf> processes = new ArrayList<ProcessConf>();
+	
+        for (TDeployment.Process processDD : dd.getDeploy().getProcessList()) {
+            QName pid = toPid(processDD.getName(), version);
+            ProcessConfImpl pconf = new ProcessConfImpl(
+        		pid, processDD.getName(), version, du, processDD, new Date(),
+                calcInitialProperties(processDD), ProcessState.ACTIVE, 
+                new EndpointReferenceContext() {
+                    public EndpointReference resolveEndpointReference(Element element) {
+                        return null;
+                    }
+                    public EndpointReference convertEndpoint(QName qName, Element element) {
+                    	return null;
+                	}
+                    @SuppressWarnings("unchecked")
+        			public Map getConfigLookup(EndpointReference epr) {
+                        return Collections.EMPTY_MAP;
+                    }
+                }
+            );
+            processes.add(pconf);
+        }
+        return processes;
+	}
+
+    public static Map<QName, Node> calcInitialProperties(TDeployment.Process dd) {
+        HashMap<QName, Node> ret = new HashMap<QName, Node>();
+        if (dd.getPropertyList().size() > 0) {
+            for (TDeployment.Process.Property property : dd.getPropertyList()) {
+                Element elmtContent = DOMUtils.getElementContent(property.getDomNode());
+                if (elmtContent != null) {
+                    // We'll need DOM Level 3
+                    Document doc = DOMUtils.newDocument();
+                    doc.appendChild(doc.importNode(elmtContent, true));
+                    ret.put(property.getName(), doc.getDocumentElement());
+                } else
+                    ret.put(property.getName(), property.getDomNode().getFirstChild());
+
+            }
+        }
+        return ret;
+    }
+
+    private static QName toPid(QName processType, long version) {
+        return new QName(processType.getNamespaceURI(), processType.getLocalPart() + "-" + version);
+    }
+    
+    public static byte[] getBytesFromFile(File file) throws IOException {
+        InputStream is = new FileInputStream(file);
+        long length = file.length();
+        byte[] bytes = new byte[(int)length];
+        int offset = 0;
+        int numRead = 0;
+        while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
+            offset += numRead;
+        }
+        is.close();
+        return bytes;
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/store/DroolsProcessStore.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/store/DroolsProcessStore.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/apache/ode/store/DroolsProcessStore.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,182 @@
+package org.apache.ode.store;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.iapi.ProcessConf;
+import org.apache.ode.bpel.iapi.ProcessState;
+import org.apache.ode.bpel.iapi.ProcessStore;
+import org.apache.ode.bpel.iapi.ProcessStoreListener;
+import org.drools.RuleBase;
+import org.drools.definition.process.Process;
+import org.drools.ode.core.BPELProcess;
+import org.drools.ode.instance.EmbeddedBPELServer;
+import org.drools.rule.Package;
+import org.w3c.dom.Node;
+
+public class DroolsProcessStore implements ProcessStore {
+
+    private Map<QName, ProcessConf> processes = new HashMap<QName, ProcessConf>();
+    private Map<String, DeploymentUnitDir> deploymentUnits = new HashMap<String, DeploymentUnitDir>();
+	private EmbeddedBPELServer server;
+	
+	public DroolsProcessStore(EmbeddedBPELServer server) {
+		this.server = server;
+	}
+	
+	public ProcessConf getProcessConfiguration(QName processId) {
+		return processes.get(processId);
+	}
+
+	public List<QName> getProcesses() {
+		return new ArrayList<QName>(processes.keySet());
+	}
+
+	public void setKnowledgeBase(RuleBase ruleBase) {
+		for (Package kpackage: ruleBase.getPackages()) {
+			for (Process process: kpackage.getRuleFlows().values()) {
+				if (BPELProcess.ODE_TYPE.equals(process.getType())) {
+					BPELProcess bpelProcess = (BPELProcess) process;
+					ProcessConf processConf = bpelProcess.getProcessConf();
+					if (bpelProcess.getProcessConf() == null) {
+						try {
+							List<BPELProcess> processes = BPELResourceTypeBuilder.readProcessesFromJar(
+								new ByteArrayInputStream(bpelProcess.getBPELJar()), process.getName());
+							for (BPELProcess p: processes) {
+								if (p.getId().equals(bpelProcess.getId())) {
+									processConf = p.getProcessConf();
+									bpelProcess.setProcessConf(processConf);
+									break;
+								}
+							}
+						} catch (Throwable t) {
+							System.err.println("Could not initialize BPEL process " + process.getId());
+							t.printStackTrace();
+						}
+					}
+					if (processConf != null) {
+						processes.put(processConf.getProcessId(), processConf);
+						server.register(processConf);
+					} else {
+						System.err.println("BPEL process not found: " + process.getId());
+					}
+				}
+			}
+		}
+		// TODO: add listener for dynamically added processes
+	}
+
+//    protected List<ProcessConfImpl> load(DeploymentUnitDAO dudao) {
+//        File dudir = new File(dudao.getDeploymentUnitDir());
+//        if (dudir == null || !dudir.exists()) {
+//            throw new IllegalArgumentException("Deployed directory " + dudir + " no longer there!");
+//        }
+//        DeploymentUnitDir dud = new DeploymentUnitDir(dudir);
+//        dud.scan();
+//
+//        ArrayList<ProcessConfImpl> loaded = new ArrayList<ProcessConfImpl>();
+//        deploymentUnits.put(dud.getName(), dud);
+//        long version = 0;
+//        for (ProcessConfDAO p : dudao.getProcesses()) {
+//            TDeployment.Process pinfo = dud.getProcessDeployInfo(p.getType());
+//            if (pinfo == null) {
+//                System.err.println("Cannot load " + p.getPID() + "; cannot find descriptor.");
+//                continue;
+//            }
+//            Map<QName, Node> props = calcInitialProperties(pinfo);
+//            ProcessConfImpl pconf = new ProcessConfImpl(
+//        		p.getPID(), p.getType(), p.getVersion(), dud, pinfo, 
+//        		dudao.getDeployDate(), props, p.getState(), null);
+//            version = p.getVersion();
+//            processes.put(pconf.getProcessId(), pconf);
+//            loaded.add(pconf);
+//        }
+//        // All processes and the DU have the same version
+//        dud.setVersion(version);
+//        return loaded;
+//    }
+//
+//    public static Map<QName, Node> calcInitialProperties(TDeployment.Process dd) {
+//        HashMap<QName, Node> ret = new HashMap<QName, Node>();
+//        if (dd.getPropertyList().size() > 0) {
+//            for (TDeployment.Process.Property property : dd.getPropertyList()) {
+//                Element elmtContent = DOMUtils.getElementContent(property.getDomNode());
+//                if (elmtContent != null) {
+//                    // We'll need DOM Level 3
+//                    Document doc = DOMUtils.newDocument();
+//                    doc.appendChild(doc.importNode(elmtContent, true));
+//                    ret.put(property.getName(), doc.getDocumentElement());
+//                } else
+//                    ret.put(property.getName(), property.getDomNode().getFirstChild());
+//
+//            }
+//        }
+//        return ret;
+//    }
+
+	public List<QName> listProcesses(String packageName) {
+		DeploymentUnitDir du = deploymentUnits.get(packageName);
+        if (du == null) {
+            return null;
+        }
+        return toPids(du.getProcessNames(), du.getVersion());
+    }
+
+	public Collection<String> getPackages() {
+        return new ArrayList<String>(deploymentUnits.keySet());
+	}
+
+    private List<QName> toPids(Collection<QName> processTypes, long version) {
+        ArrayList<QName> result = new ArrayList<QName>();
+        for (QName pqName : processTypes) {
+            result.add(toPid(pqName, version));
+        }
+        return result;
+    }
+
+    private QName toPid(QName processType, long version) {
+        return new QName(processType.getNamespaceURI(), processType.getLocalPart() + "-" + version);
+    }
+    
+	public void registerListener(ProcessStoreListener listener) {
+	}
+
+	public void unregisterListener(ProcessStoreListener arg0) {
+	}
+
+    public Collection<QName> deploy(File arg0) {
+		throw new UnsupportedOperationException();
+	}
+
+	public long getCurrentVersion() {
+		throw new UnsupportedOperationException();
+	}
+
+	public void setProperty(QName arg0, QName arg1, String arg2) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void setProperty(QName arg0, QName arg1, Node arg2) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void setRetiredPackage(String arg0, boolean arg1) {
+		throw new UnsupportedOperationException();
+	}
+
+	public void setState(QName arg0, ProcessState arg1) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Collection<QName> undeploy(File arg0) {
+		throw new UnsupportedOperationException();
+	}
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/core/BPELNode.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/core/BPELNode.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/core/BPELNode.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,9 @@
+package org.drools.ode.core;
+
+import org.drools.workflow.core.impl.NodeImpl;
+
+public class BPELNode extends NodeImpl {
+
+	private static final long serialVersionUID = 4L;
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/core/BPELProcess.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/core/BPELProcess.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/core/BPELProcess.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,39 @@
+package org.drools.ode.core;
+
+import org.apache.ode.bpel.iapi.ProcessConf;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.workflow.core.impl.WorkflowProcessImpl;
+
+public class BPELProcess extends WorkflowProcessImpl {
+
+    public static final String ODE_TYPE = "ODE";
+
+	private static final long serialVersionUID = 4L;
+	
+	private byte[] bpelJar;
+	private transient ProcessConf processConf;
+
+	public BPELProcess() {
+        setType(ODE_TYPE);
+        VariableScope variableScope = new VariableScope();
+        addContext(variableScope);
+        setDefaultContext(variableScope);
+	}
+
+	public ProcessConf getProcessConf() {
+		return processConf;
+	}
+
+	public void setProcessConf(ProcessConf processConf) {
+		this.processConf = processConf;
+	}
+	
+	public byte[] getBPELJar() {
+		return bpelJar;
+	}
+	
+	public void setBPELJar(byte[] bpelJar) {
+		this.bpelJar = bpelJar;
+	}
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELEventListener.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELEventListener.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,126 @@
+package org.drools.ode.instance;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.ode.bpel.evt.ActivityExecEndEvent;
+import org.apache.ode.bpel.evt.ActivityExecStartEvent;
+import org.apache.ode.bpel.evt.BpelEvent;
+import org.apache.ode.bpel.evt.ProcessCompletionEvent;
+import org.apache.ode.bpel.evt.ProcessInstanceStartedEvent;
+import org.apache.ode.bpel.iapi.BpelEventListener;
+import org.drools.WorkingMemory;
+import org.drools.common.EventSupport;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.definition.process.Node;
+import org.drools.definition.process.NodeContainer;
+import org.drools.ode.core.BPELNode;
+import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.workflow.core.impl.NodeContainerImpl;
+import org.drools.workflow.instance.NodeInstanceContainer;
+
+public class BPELEventListener implements BpelEventListener {
+
+	private WorkingMemory workingMemory;
+	private Map<Long, Long> processInstanceIdMapping = new HashMap<Long, Long>();
+	
+	public BPELEventListener(WorkingMemory workingMemory) {
+		this.workingMemory = workingMemory;
+	}
+	
+	public void onEvent(BpelEvent event) {
+		try {
+			if (event instanceof ProcessInstanceStartedEvent) {
+				ProcessInstanceStartedEvent startEvent = (ProcessInstanceStartedEvent) event;
+				BPELProcessInstance processInstance = new BPELProcessInstance();
+				processInstance.setODEProcessInstanceIdODE(startEvent.getProcessInstanceId());
+				processInstance.setProcessId(startEvent.getProcessId().toString());
+				processInstance.internalSetState(ProcessInstance.STATE_ACTIVE);
+				processInstance.setWorkingMemory((InternalWorkingMemory) workingMemory);
+				((InternalWorkingMemory) workingMemory).getProcessInstanceManager().addProcessInstance(processInstance);
+				processInstanceIdMapping.put(startEvent.getProcessInstanceId(), processInstance.getId());
+				((EventSupport) workingMemory).getRuleFlowEventSupport().fireBeforeRuleFlowProcessStarted(processInstance, null);
+				((EventSupport) workingMemory).getRuleFlowEventSupport().fireAfterRuleFlowProcessStarted(processInstance, null);
+			} else if (event instanceof ProcessCompletionEvent) {
+				ProcessCompletionEvent completionEvent = (ProcessCompletionEvent) event;
+				BPELProcessInstance processInstance = findProcessInstance(completionEvent.getProcessInstanceId());
+				processInstance.setState(ProcessInstance.STATE_COMPLETED);
+			} else if (event instanceof ActivityExecStartEvent) {
+				ActivityExecStartEvent execEvent = (ActivityExecStartEvent) event;
+				BPELProcessInstance processInstance = findProcessInstance(execEvent.getProcessInstanceId());
+				BPELNodeInstance nodeInstance = createNodeInstance(
+					processInstance, execEvent.getActivityId(),
+					execEvent.getActivityDeclarationId(),
+					execEvent.getActivityName());
+				((EventSupport) workingMemory).getRuleFlowEventSupport().fireBeforeRuleFlowNodeTriggered(nodeInstance, null);
+				((EventSupport) workingMemory).getRuleFlowEventSupport().fireAfterRuleFlowNodeTriggered(nodeInstance, null);
+			} else if (event instanceof ActivityExecEndEvent) {
+				ActivityExecEndEvent execEvent = (ActivityExecEndEvent) event;
+				BPELProcessInstance processInstance = findProcessInstance(execEvent.getProcessInstanceId());
+				BPELNodeInstance nodeInstance = createNodeInstance(
+					processInstance, execEvent.getActivityId(),
+					execEvent.getActivityDeclarationId(),
+					execEvent.getActivityName());
+				((EventSupport) workingMemory).getRuleFlowEventSupport().fireBeforeRuleFlowNodeLeft(nodeInstance, null);
+				((EventSupport) workingMemory).getRuleFlowEventSupport().fireAfterRuleFlowNodeLeft(nodeInstance, null);
+			}
+		} catch (Throwable t) {
+			t.printStackTrace();
+		}
+	}
+	
+	private BPELProcessInstance findProcessInstance(long id) {
+		Long processInstanceId = processInstanceIdMapping.get(id);
+		return (BPELProcessInstance) ((InternalWorkingMemory) workingMemory)
+			.getProcessInstanceManager().getProcessInstance(processInstanceId);
+	}
+	
+	private BPELNodeInstance createNodeInstance(BPELProcessInstance processInstance, long id, long nodeId, final String nodeName) {
+		BPELNodeInstance result = new BPELNodeInstance();
+		result.setId(id);
+		result.setNodeId(nodeId);
+		result.setProcessInstance(processInstance);
+		result.setNodeInstanceContainer(new NodeInstanceContainer() {
+			public NodeContainer getNodeContainer() {
+				return new NodeContainerImpl() {
+					private static final long serialVersionUID = 4L;
+					public Node internalGetNode(long nodeId) {
+						BPELNode node = new BPELNode();
+						node.setId(nodeId);
+						node.setName(nodeName);
+						return node;
+					}
+				};
+			}
+			public Collection<NodeInstance> getNodeInstances() {
+				return null;
+			}
+			public void addNodeInstance(org.drools.workflow.instance.NodeInstance nodeInstance) {
+			}
+			public org.drools.workflow.instance.NodeInstance getFirstNodeInstance(long nodeId) {
+				return null;
+			}
+			public org.drools.workflow.instance.NodeInstance getNodeInstance(Node node) {
+				return null;
+			}
+			public Collection<org.drools.workflow.instance.NodeInstance> getNodeInstances(boolean recursive) {
+				return null;
+			}
+			public void removeNodeInstance(org.drools.workflow.instance.NodeInstance nodeInstance) {
+			}
+			public void nodeInstanceCompleted(org.drools.workflow.instance.NodeInstance nodeInstance, String outType) {
+			}
+		});
+		return result;
+	}
+
+	public void shutdown() {
+	}
+
+	public void startup(Properties p) {
+	}
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELNodeInstance.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELNodeInstance.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,14 @@
+package org.drools.ode.instance;
+
+import org.drools.runtime.process.NodeInstance;
+import org.drools.workflow.instance.impl.NodeInstanceImpl;
+
+public class BPELNodeInstance extends NodeInstanceImpl {
+
+	private static final long serialVersionUID = 4L;
+
+	public void internalTrigger(NodeInstance from, String type) {
+		throw new UnsupportedOperationException();
+	}
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELProcessInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELProcessInstance.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELProcessInstance.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,28 @@
+package org.drools.ode.instance;
+
+import org.drools.ode.core.BPELProcess;
+import org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl;
+
+public class BPELProcessInstance extends WorkflowProcessInstanceImpl {
+	
+    private static final long serialVersionUID = 4L;
+    
+    private Long ODEProcessInstanceId;
+    
+    public BPELProcess getBPELProcess() {
+    	return (BPELProcess) getProcess();
+    }
+    
+    public Long getODEProcessInstanceId() {
+		return ODEProcessInstanceId;
+	}
+
+	public void setODEProcessInstanceIdODE(Long ODEProcessInstanceId) {
+		this.ODEProcessInstanceId = ODEProcessInstanceId;
+	}
+
+	protected void internalStart() {
+		// Do nothing
+	}
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELProcessInstanceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELProcessInstanceFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/BPELProcessInstanceFactory.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,78 @@
+package org.drools.ode.instance;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ode.utils.DOMUtils;
+import org.drools.WorkingMemory;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.definition.process.Process;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.ProcessInstanceFactory;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+public class BPELProcessInstanceFactory implements ProcessInstanceFactory, Externalizable {
+
+    private static final long serialVersionUID = 4L;
+
+    private synchronized EmbeddedBPELServer initServer(WorkingMemory workingMemory) {
+    	EmbeddedBPELServer server = (EmbeddedBPELServer)
+    		workingMemory.getEnvironment().get("ODE-Server");
+    	if (server == null) {
+    		System.out.println("Initializing BPEL server");
+    		server = new EmbeddedBPELServer(workingMemory);
+    		BPELEventListener listener = new BPELEventListener(workingMemory);
+    		server.addEventListener(listener);
+    		workingMemory.getEnvironment().set("ODE-Server", server);
+    	}
+    	return server;
+    }
+
+	public ProcessInstance createProcessInstance(Process process,
+			                                     WorkingMemory workingMemory,
+			                                     Map<String, Object> parameters) {
+		EmbeddedBPELServer server = initServer(workingMemory);
+		BPELProcessInstance processInstance = new BPELProcessInstance();
+		processInstance.setWorkingMemory( (InternalWorkingMemory) workingMemory );
+		processInstance.setProcess( process );
+		
+		String operation = (String) parameters.get("Operation"); 
+		String bodyString = (String) parameters.get("Body");
+		System.out.println("Starting BPEL process "
+			+ process.getName() + " [" + process.getPackageName() + "]");
+		try {
+			Element body = DOMUtils.stringToDOM(bodyString);
+			QName processQName = new QName(process.getPackageName(),
+				process.getName().substring(process.getPackageName().length() + 2));
+	        try {
+				server.invoke(processQName, operation, body);
+				server.waitForBlocking();
+			} catch (Exception e) {
+				System.err.println("Could not invoke service " + processQName
+					+ " -> " + operation + " with " + bodyString);
+				e.printStackTrace();
+			}
+		} catch (SAXException e) {
+			System.err.println("Could not parse 'Body' " + bodyString);
+			e.printStackTrace();
+		} catch (IOException e) {
+			System.err.println("Could not parse 'Body' " + bodyString);
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+    }
+
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/EmbeddedBPELServer.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/EmbeddedBPELServer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/java/org/drools/ode/instance/EmbeddedBPELServer.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,368 @@
+package org.drools.ode.instance;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.ThreadFactory;
+
+import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+import javax.wsdl.Definition;
+import javax.wsdl.PortType;
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.ode.axis2.ExternalService;
+import org.apache.ode.axis2.SoapExternalService;
+import org.apache.ode.axis2.httpbinding.HttpExternalService;
+import org.apache.ode.bpel.dao.BpelDAOConnectionFactory;
+import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC;
+import org.apache.ode.bpel.engine.BpelServerImpl;
+import org.apache.ode.bpel.epr.EndpointFactory;
+import org.apache.ode.bpel.iapi.BindingContext;
+import org.apache.ode.bpel.iapi.BpelEventListener;
+import org.apache.ode.bpel.iapi.ContextException;
+import org.apache.ode.bpel.iapi.Endpoint;
+import org.apache.ode.bpel.iapi.EndpointReference;
+import org.apache.ode.bpel.iapi.EndpointReferenceContext;
+import org.apache.ode.bpel.iapi.Message;
+import org.apache.ode.bpel.iapi.MessageExchangeContext;
+import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
+import org.apache.ode.bpel.iapi.PartnerRoleChannel;
+import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
+import org.apache.ode.bpel.iapi.ProcessConf;
+import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
+import org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl;
+import org.apache.ode.il.EmbeddedGeronimoFactory;
+import org.apache.ode.il.MockScheduler;
+import org.apache.ode.store.DroolsProcessStore;
+import org.apache.ode.utils.DOMUtils;
+import org.apache.ode.utils.GUID;
+import org.apache.ode.utils.wsdl.WsdlUtils;
+import org.drools.WorkingMemory;
+import org.hsqldb.jdbc.jdbcDataSource;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class EmbeddedBPELServer {
+
+    private BpelServerImpl _server;
+    private DroolsProcessStore _store;
+    private TransactionManager _txManager;
+    private DataSource _dataSource;
+    private SchedulerWrapper _scheduler;
+    private BpelDAOConnectionFactory _daoCF;
+    private EndpointReferenceContext _eprContext;
+	private MessageExchangeContext _mexContext;
+	private BindingContext _bindContext;
+	private HashMap<String, QName> _activated = new HashMap<String, QName>();
+	protected ExecutorService _executorService;
+
+    public EmbeddedBPELServer(WorkingMemory workingMemory) {
+        try {
+            _server = new BpelServerImpl();
+            createTransactionManager();
+            createDataSource();
+            createDAOConnection();
+            createScheduler();
+            if (_daoCF == null) {
+                throw new RuntimeException("No DAO");
+            }
+            _server.setDaoConnectionFactory(_daoCF);
+            _server.setInMemDaoConnectionFactory(new BpelDAOConnectionFactoryImpl(_scheduler));
+            if (_scheduler == null)
+                throw new RuntimeException("No scheduler");
+            _store = new DroolsProcessStore(this);
+            _server.setScheduler(_scheduler);
+            _server.setEndpointReferenceContext(createEndpointReferenceContext());
+            _server.setMessageExchangeContext(createMessageExchangeContext());
+            _server.setBindingContext(createBindingContext());
+            ThreadFactory threadFactory = new ThreadFactory() {
+                int threadNumber = 0;
+                public Thread newThread(Runnable r) {
+                    threadNumber += 1;
+                    Thread t = new Thread(r, "ODEServer-"+threadNumber);
+                    t.setDaemon(true);
+                    return t;
+                }
+            };
+            _executorService = Executors.newCachedThreadPool(threadFactory);
+            _server.init();
+            _server.start();
+            _store.setKnowledgeBase(workingMemory.getRuleBase());
+        } catch (Exception except) {
+            System.err.println(except.getMessage());
+            except.printStackTrace(System.err);
+            throw new RuntimeException(except);
+        }
+    }
+
+    public Collection<QName> deploy(File deploymentUnitDirectory) {
+        Collection<QName> pids = _store.deploy(deploymentUnitDirectory);
+        for (QName pid: pids)
+            _server.register(_store.getProcessConfiguration(pid));
+        return pids;
+    }
+    
+    public void register(ProcessConf processConf) {
+    	_server.register(processConf);
+    }
+
+    public void invoke(QName serviceName, String opName, Element body) throws Exception {
+        try {
+            String messageId = new GUID().toString();
+            MyRoleMessageExchange mex;
+
+            _txManager.begin();
+            mex = _server.getEngine().createMessageExchange("" + messageId, serviceName, opName);
+            if (mex.getOperation() == null)
+                throw new Exception("Did not find operation " + opName + " on service " + serviceName);
+            Message request = mex.createMessage(mex.getOperation().getInput().getMessage().getQName());
+            request.setMessage(body);
+            mex.invoke(request);
+            mex.complete();
+            _txManager.commit();
+        } catch (Exception except) {
+              _txManager.rollback();
+              throw except;
+        }
+    }
+
+    public TransactionManager getTransactionManager() {
+        return _txManager;
+    }
+
+    public void waitForBlocking() {
+        try {
+            long delay = 1000;
+            while (true) {
+                // Be warned: ugly hack and not safe for slow CPUs.
+                long cutoff = System.currentTimeMillis() - delay;
+                if (_scheduler._nextSchedule < cutoff)
+                    break;
+                Thread.sleep(delay);
+            }
+        } catch (InterruptedException except) { }
+    }
+
+    public void shutdown() throws Exception {
+        _server.stop();
+        _scheduler.stop();
+        _scheduler.shutdown();
+    }
+
+    protected TransactionManager createTransactionManager() throws Exception {
+        EmbeddedGeronimoFactory factory = new EmbeddedGeronimoFactory();
+        _txManager = factory.getTransactionManager();
+        _txManager.setTransactionTimeout(30);
+        return _txManager;
+    }
+
+    protected DataSource createDataSource() throws Exception {
+        jdbcDataSource hsqlds = new jdbcDataSource();
+        hsqlds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());
+        hsqlds.setUser("sa");
+        hsqlds.setPassword("");
+        _dataSource = hsqlds;
+        return _dataSource;
+    }
+
+    protected Scheduler createScheduler() throws Exception {
+        if (_server == null)
+            throw new RuntimeException("No BPEL server");
+        if (_txManager == null)
+            throw new RuntimeException("No transaction manager");
+        if (_dataSource == null)
+            throw new RuntimeException("No data source");
+        _scheduler = new SchedulerWrapper(_server, _txManager, _dataSource);
+        return _scheduler;
+    }
+
+    protected BpelDAOConnectionFactory createDAOConnection() throws Exception {
+        if (_txManager == null)
+            throw new RuntimeException("No transaction manager");
+        if (_dataSource == null)
+            throw new RuntimeException("No data source");
+
+        BpelDAOConnectionFactoryJDBC daoCF = new BPELDAOConnectionFactoryImpl();
+        daoCF.setDataSource(_dataSource);
+        daoCF.setTransactionManager(_txManager);
+        Properties props = new Properties();
+        props.put("openjpa.Log", "log4j");
+        props.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)");
+        daoCF.init(props);
+        _daoCF = daoCF;
+
+        return _daoCF;
+    }
+
+    protected EndpointReferenceContext createEndpointReferenceContext() {
+        _eprContext = new EndpointReferenceContext() {
+            public EndpointReference resolveEndpointReference(Element element) {
+            	return EndpointFactory.createEndpoint(element);
+            }
+            public EndpointReference convertEndpoint(QName qName, Element element) {
+            	System.out.println("convertEndpoint " + qName + " " + element);
+            	return null;
+        	}
+            @SuppressWarnings("unchecked")
+			public Map getConfigLookup(EndpointReference epr) {
+            	System.out.println("getConfigLookup " + epr);
+                return Collections.EMPTY_MAP;
+            }
+        };
+        return _eprContext;
+    }
+
+    protected MessageExchangeContext createMessageExchangeContext() {
+       _mexContext =  new MessageExchangeContext() {
+            public void invokePartner(PartnerRoleMessageExchange mex) { 
+            	ExternalService service = (ExternalService) mex.getChannel();
+                System.out.println("The service to invoke is the external service " + service.getServiceName()+":"+service.getPortName());
+                service.invoke(mex);
+            }
+            public void onAsyncReply(MyRoleMessageExchange myRoleMex) { }
+        };
+        return _mexContext;
+    }
+
+    protected BindingContext createBindingContext() {
+        _bindContext = new BindingContext() {
+            public EndpointReference activateMyRoleEndpoint(QName processId, Endpoint myRoleEndpoint) {
+                final Document doc = DOMUtils.newDocument();
+                Element serviceRef = doc.createElementNS(EndpointReference.SERVICE_REF_QNAME.getNamespaceURI(),
+                    EndpointReference.SERVICE_REF_QNAME.getLocalPart());
+                serviceRef.appendChild(doc.createTextNode(myRoleEndpoint.serviceName.toString()));
+                doc.appendChild(serviceRef);
+                _activated.put(myRoleEndpoint.toString(), processId);
+                return new EndpointReference() {
+                    public Document toXML() { return doc; }
+                };
+            }
+
+            public void deactivateMyRoleEndpoint(Endpoint myRoleEndpoint) {
+                _activated.remove(myRoleEndpoint);
+            }
+
+            public PartnerRoleChannel createPartnerRoleChannel(QName processId, PortType portType,
+                                                               final Endpoint initialPartnerEndpoint) {
+            	System.out.println("createPartnerRoleChannel " + initialPartnerEndpoint);
+            	ProcessConf pconf = _store.getProcessConfiguration(processId);
+                Definition wsdl = pconf.getDefinitionForService(initialPartnerEndpoint.serviceName);
+                if (wsdl == null) {
+                    throw new ContextException("Cannot find definition for service " + initialPartnerEndpoint.serviceName
+                                               + " in the context of process "+processId);
+                }
+                return createExternalService(pconf, initialPartnerEndpoint.serviceName, initialPartnerEndpoint.portName);
+//                
+//                final EndpointReference epr = new EndpointReference() {
+//                    public Document toXML() {
+//                        Document doc = DOMUtils.newDocument();
+//                        Element serviceRef = doc.createElementNS(EndpointReference.SERVICE_REF_QNAME.getNamespaceURI(),
+//                            EndpointReference.SERVICE_REF_QNAME.getLocalPart());
+//                        serviceRef.appendChild(doc.createTextNode(initialPartnerEndpoint.serviceName.toString()));
+//                        doc.appendChild(serviceRef);
+//                        return doc;
+//                    }
+//                };
+//                _endpoints.put(initialPartnerEndpoint.serviceName.toString(), epr);
+//                return new PartnerRoleChannel() {
+//                    public EndpointReference getInitialEndpointReference() { return epr; }
+//                    public void close() { };
+//                };
+            }
+        };
+        return _bindContext;
+    }
+    
+    public ExternalService createExternalService(ProcessConf pconf, QName serviceName, String portName) throws ContextException {
+        ExternalService extService = null;
+        Definition def = pconf.getDefinitionForService(serviceName);
+        try {
+            if (WsdlUtils.useHTTPBinding(def, serviceName, portName)) {
+                extService = new HttpExternalService(
+            		pconf, serviceName, portName, _executorService, _scheduler, _server);
+            } else if (WsdlUtils.useSOAPBinding(def, serviceName, portName)) {
+                extService = new SoapExternalService(
+            		pconf, serviceName, portName, _executorService, new AxisConfiguration(), _scheduler, _server);
+            }
+        } catch (Exception ex) {
+            throw new ContextException("Error creating external service! name:"+serviceName+", port:"+portName, ex);
+        }
+
+        // if not SOAP nor HTTP binding
+        if (extService==null) {
+            throw new ContextException("Only SOAP and HTTP binding supported!");
+        }
+        return extService;
+    }
+
+    public void addEventListener(BpelEventListener listener) {
+    	_server.registerBpelEventListener(listener);
+    }
+
+
+    private class SchedulerWrapper implements Scheduler {
+
+        MockScheduler _scheduler;
+        long                _nextSchedule;
+
+        SchedulerWrapper(BpelServerImpl server, TransactionManager txManager, DataSource dataSource) {
+            ExecutorService executorService = Executors.newCachedThreadPool();
+            _scheduler = new MockScheduler(_txManager);
+            _scheduler.setExecutorSvc(executorService);
+            _scheduler.setJobProcessor(server);
+        }
+
+        public String schedulePersistedJob(Map<String,Object>jobDetail,Date when) throws ContextException {
+            String jobId = _scheduler.schedulePersistedJob(jobDetail, when);
+            _nextSchedule = when == null ?  System.currentTimeMillis() : when.getTime();
+            return jobId;
+        }
+
+        public String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException {
+            String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail);
+            _nextSchedule = System.currentTimeMillis();
+            return jobId;
+        }
+
+        public void cancelJob(String jobId) throws ContextException {
+            _scheduler.cancelJob(jobId);
+        }
+
+        public <T> T execTransaction(Callable<T> transaction) throws Exception, ContextException {
+            return _scheduler.execTransaction(transaction);
+        }
+
+        public <T> Future<T> execIsolatedTransaction(Callable<T> transaction) throws Exception, ContextException {
+            return _scheduler.execIsolatedTransaction(transaction);
+        }
+
+        public boolean isTransacted() {
+            return _scheduler.isTransacted();
+        }
+
+        public void start() { _scheduler.start(); }
+        public void stop() { _scheduler.stop(); }
+        public void shutdown() { _scheduler.shutdown(); }
+
+        public void registerSynchronizer(Synchronizer synch) throws ContextException {
+            _scheduler.registerSynchronizer(synch);
+        }
+
+        public void setJobProcessor(JobProcessor processor) throws ContextException {
+            _scheduler.setJobProcessor(processor);
+
+        }
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/META-INF/ODEProcessInstanceFactory.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/META-INF/ODEProcessInstanceFactory.conf	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/META-INF/ODEProcessInstanceFactory.conf	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,7 @@
+// we use MVEL to configure our process, simply populate a map, which will be added to the main registry
+import org.drools.ode.core.BPELProcess;
+import org.drools.ode.instance.BPELProcessInstanceFactory;
+
+[
+    BPELProcess     : new BPELProcessInstanceFactory(),
+]

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/META-INF/drools.rulebase.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/META-INF/drools.rulebase.conf	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/main/resources/META-INF/drools.rulebase.conf	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1 @@
+processInstanceFactoryRegistry=ODEProcessInstanceFactory.conf
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELGuvnorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELGuvnorTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELGuvnorTest.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,51 @@
+package org.drools.ode;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.apache.ode.store.BPELResourceTypeBuilder;
+import org.drools.KnowledgeBase;
+import org.drools.agent.KnowledgeAgent;
+import org.drools.agent.KnowledgeAgentFactory;
+import org.drools.builder.ResourceType;
+import org.drools.compiler.ResourceTypeBuilderRegistry;
+import org.drools.io.ResourceFactory;
+import org.drools.logger.KnowledgeRuntimeLogger;
+import org.drools.logger.KnowledgeRuntimeLoggerFactory;
+import org.drools.ode.core.BPELProcess;
+import org.drools.runtime.StatefulKnowledgeSession;
+
+/**
+ * This is a sample file to launch a process.
+ */
+public class DroolsBPELGuvnorTest extends TestCase {
+
+	public void testDroolsBPELProcess() throws Exception {
+		KnowledgeBase kbase = readKnowledgeBase();
+		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		KnowledgeRuntimeLogger logger = 
+			KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "audit");
+		// start a new process instance
+		Map<String, Object> parameters = new HashMap<String, Object>();
+		parameters.put("Operation", "hello");
+		parameters.put("Body", 
+			"<ns1:hello xmlns:ns1=\"http://ode/bpel/unit-test.wsdl\">\n" +
+    		"  <TestPart xmlns=\"\">Hello</TestPart>\n" +
+    		"</ns1:hello>");
+		ksession.startProcess("{http://ode/bpel/unit-test}HelloWorld3-1", parameters);
+		Thread.sleep(3000);
+		logger.close();
+	}
+
+	private static KnowledgeBase readKnowledgeBase() throws Exception {
+		ResourceType bpelType = new ResourceType(BPELProcess.ODE_TYPE, "ODE BPEL Process");
+		ResourceTypeBuilderRegistry.getInstance().register(
+			bpelType, new BPELResourceTypeBuilder());
+		KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("Guvnor");
+		kagent.applyChangeSet(ResourceFactory.newClassPathResource("ChangeSet.xml"));
+		return kagent.getKnowledgeBase();
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELTest.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,63 @@
+package org.drools.ode;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.apache.ode.store.BPELResourceTypeBuilder;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.compiler.ResourceTypeBuilderRegistry;
+import org.drools.io.ResourceFactory;
+import org.drools.logger.KnowledgeRuntimeLogger;
+import org.drools.logger.KnowledgeRuntimeLoggerFactory;
+import org.drools.ode.core.BPELProcess;
+import org.drools.runtime.StatefulKnowledgeSession;
+
+/**
+ * This is a sample file to launch a process.
+ */
+public class DroolsBPELTest extends TestCase {
+
+	public void testDroolsBPELProcess() throws Exception {
+		KnowledgeBase kbase = readKnowledgeBase();
+		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		KnowledgeRuntimeLogger logger = 
+			KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "audit");
+		// start a new process instance
+		Map<String, Object> parameters = new HashMap<String, Object>();
+		parameters.put("Operation", "hello");
+		parameters.put("Body", 
+			"<ns1:hello xmlns:ns1=\"http://ode/bpel/unit-test.wsdl\">\n" +
+    		"  <TestPart xmlns=\"\">Hello</TestPart>\n" +
+    		"</ns1:hello>");
+		ksession.startProcess("{http://ode/bpel/unit-test}HelloWorld3-1", parameters);
+		Thread.sleep(3000);
+		logger.close();
+	}
+
+	private static KnowledgeBase readKnowledgeBase() throws Exception {
+		ResourceType bpelType = new ResourceType(BPELProcess.ODE_TYPE, "ODE BPEL Process");
+		ResourceTypeBuilderRegistry.getInstance().register(
+			bpelType, new BPELResourceTypeBuilder());
+		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+		kbuilder.add(ResourceFactory.newClassPathResource("HelloWorld3"), bpelType);
+		KnowledgeBuilderErrors errors = kbuilder.getErrors();
+		if (errors.size() > 0) {
+			for (KnowledgeBuilderError error: errors) {
+				System.err.println(error);
+			}
+			throw new IllegalArgumentException("Could not parse knowledge.");
+		}
+		KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+		return kbase;
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELTest2.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELTest2.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/DroolsBPELTest2.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,63 @@
+package org.drools.ode;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.apache.ode.store.BPELResourceTypeBuilder;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.compiler.ResourceTypeBuilderRegistry;
+import org.drools.io.ResourceFactory;
+import org.drools.logger.KnowledgeRuntimeLogger;
+import org.drools.logger.KnowledgeRuntimeLoggerFactory;
+import org.drools.ode.core.BPELProcess;
+import org.drools.runtime.StatefulKnowledgeSession;
+
+/**
+ * This is a sample file to launch a process.
+ */
+public class DroolsBPELTest2 extends TestCase {
+
+	public void testDroolsBPELProcess() throws Exception {
+		KnowledgeBase kbase = readKnowledgeBase();
+		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		KnowledgeRuntimeLogger logger = 
+			KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "audit");
+		// start a new process instance
+		Map<String, Object> parameters = new HashMap<String, Object>();
+		parameters.put("Operation", "hello");
+		parameters.put("Body", 
+			"<ns1:hello xmlns:ns1=\"http://ode/bpel/unit-test.wsdl\">\n" +
+    		"  <TestPart xmlns=\"\">Hello</TestPart>\n" +
+    		"</ns1:hello>");
+		ksession.startProcess("{http://ode/bpel/unit-test}HelloWorld3-1", parameters);
+		Thread.sleep(3000);
+		logger.close();
+	}
+
+	private static KnowledgeBase readKnowledgeBase() throws Exception {
+		ResourceType bpelType = new ResourceType(BPELProcess.ODE_TYPE, "ODE BPEL Process");
+		ResourceTypeBuilderRegistry.getInstance().register(
+			bpelType, new BPELResourceTypeBuilder());
+		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+		kbuilder.add(ResourceFactory.newClassPathResource("HelloWorld3.bpel.jar"), bpelType);
+		KnowledgeBuilderErrors errors = kbuilder.getErrors();
+		if (errors.size() > 0) {
+			for (KnowledgeBuilderError error: errors) {
+				System.err.println(error);
+			}
+			throw new IllegalArgumentException("Could not parse knowledge.");
+		}
+		KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+		return kbase;
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/MockBPELServerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/MockBPELServerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/test/java/org/drools/ode/MockBPELServerTest.java	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,61 @@
+package org.drools.ode;
+
+import java.io.File;
+import java.net.URI;
+import java.util.Properties;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.ode.bpel.evt.BpelEvent;
+import org.apache.ode.bpel.iapi.BpelEventListener;
+import org.apache.ode.utils.DOMUtils;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.ode.instance.EmbeddedBPELServer;
+
+public class MockBPELServerTest extends TestCase {
+	
+	private EmbeddedBPELServer server;
+	
+    protected void setUp() throws Exception {
+    	PackageBuilder kbuilder = new PackageBuilder();
+    	RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+		ruleBase.addPackages(kbuilder.getPackages());
+		
+        server = new EmbeddedBPELServer(ruleBase.newStatefulSession());
+        server.addEventListener(new BpelEventListener() {
+			public void onEvent(BpelEvent e) {
+				System.out.println(e);
+			}
+			public void startup(Properties arg0) {
+			}
+			public void shutdown() {
+			}
+        });
+        server.deploy(new File(new URI(this.getClass().getResource("/HelloWorld3").toString())));
+    }
+
+    protected void tearDown() throws Exception {
+        server.shutdown();
+        server = null;
+    }
+    
+    public void testStartProcess() throws Exception {
+    	String bodyString = 
+    		"<ns1:hello xmlns:ns1=\"http://ode/bpel/unit-test.wsdl\">\n" +
+    		"  <TestPart xmlns=\"\">Hello</TestPart>\n" +
+    		"</ns1:hello>";
+    	final String nameSpace = "http://ode/bpel/unit-test.wsdl";
+    	QName processQName = new QName(nameSpace, "HelloService");
+    	String operation = "hello";
+    	System.out.println("operation = " + operation);
+		System.out.println("body = " + bodyString);
+		System.out.println("service = " + processQName);
+		server.invoke(processQName, operation, DOMUtils.stringToDOM(bodyString));
+        server.waitForBlocking();
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/ChangeSet.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/ChangeSet.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/ChangeSet.xml	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,7 @@
+<change-set xmlns='http://drools.org/drools-5.0/change-set'
+            xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
+            xs:schemaLocation='http://drools.org/drools-5.0/change-set drools-change-set-5.0.xsd' >
+    <add>
+        <resource source='http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/default/LATEST' type='PKG' />
+    </add>
+</change-set>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/HelloWorld3.bpel
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/HelloWorld3.bpel	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/HelloWorld3.bpel	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,68 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~    http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<process name="HelloWorld3"
+    targetNamespace="http://ode/bpel/unit-test" 
+    xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+    xmlns:tns="http://ode/bpel/unit-test"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:test="http://ode/bpel/unit-test.wsdl"
+    queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+    expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+
+  <import location="HelloWorld3.wsdl"
+     namespace="http://ode/bpel/unit-test.wsdl"
+     importType="http://schemas.xmlsoap.org/wsdl/" />
+
+   <partnerLinks>
+      <partnerLink name="helloPartnerLink" 
+         partnerLinkType="test:HelloPartnerLinkType" 
+         myRole="me" />
+   </partnerLinks>
+    
+   <variables>
+     <variable name="myVar" messageType="test:HelloMessage"/>
+     <variable name="tmpVar" type="xsd:string"/>
+   </variables>
+
+   <sequence name="sequence">
+       <receive
+          name="start"
+          partnerLink="helloPartnerLink"
+          portType="test:HelloPortType"
+          operation="hello"
+          variable="myVar"
+          createInstance="yes"/>
+
+      <assign name="assign1">
+          <copy>
+              <from variable="myVar" part="TestPart"/>
+              <to variable="tmpVar"/>
+          </copy>
+          <copy>
+              <from>concat($tmpVar,' World')</from>
+              <to variable="myVar" part="TestPart"/>
+          </copy>
+      </assign>
+       <reply name="end"  
+              partnerLink="helloPartnerLink"
+              portType="test:HelloPortType" 
+              operation="hello"
+              variable="myVar"/>
+   </sequence>
+</process>

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/HelloWorld3.wsdl
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/HelloWorld3.wsdl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/HelloWorld3.wsdl	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~    http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<wsdl:definitions 
+    targetNamespace="http://ode/bpel/unit-test.wsdl"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:tns="http://ode/bpel/unit-test.wsdl"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+    
+    <wsdl:message name="HelloMessage">
+        <wsdl:part name="TestPart" type="xsd:string"/>
+    </wsdl:message>
+    
+    <wsdl:portType name="HelloPortType">
+        <wsdl:operation name="hello">
+            <wsdl:input message="tns:HelloMessage" name="TestIn"/>
+            <wsdl:output message="tns:HelloMessage" name="TestOut"/>
+        </wsdl:operation>    
+    </wsdl:portType>
+    
+     <wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType">
+        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="hello">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl"
+                    use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl" 
+                    use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="HelloService">
+		<wsdl:port name="HelloPort" binding="tns:HelloSoapBinding">
+     		<soap:address location="http://localhost:8080/ode/processes/helloWorld"/>
+		</wsdl:port>
+    </wsdl:service>
+    
+   <plnk:partnerLinkType name="HelloPartnerLinkType">
+       <plnk:role name="me" portType="tns:HelloPortType"/>
+       <plnk:role name="you" portType="tns:HelloPortType"/>
+   </plnk:partnerLinkType>
+</wsdl:definitions>
+

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/deploy.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/deploy.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3/deploy.xml	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,30 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~    http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+	xmlns:pns="http://ode/bpel/unit-test" 
+	xmlns:wns="http://ode/bpel/unit-test.wsdl">
+
+
+	<process name="pns:HelloWorld3">
+		<active>true</active>
+		<provide partnerLink="helloPartnerLink">
+			<service name="wns:HelloService" port="HelloPort"/>
+		</provide>
+	</process>
+</deploy>

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3.bpel.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/HelloWorld3.bpel.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/log4j.properties
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/log4j.properties	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-ode/src/test/resources/log4j.properties	2009-07-01 10:39:47 UTC (rev 27378)
@@ -0,0 +1,33 @@
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#    the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+#
+
+# Set root logger level to WARN and its only appender to CONSOLE
+log4j.rootLogger=WARN, CONSOLE
+
+# log4j properties to work with commandline tools.
+log4j.category.org.mortbay=ERROR
+log4j.category.org.hibernate.type=WARN
+log4j.category.org.objectweb=ERROR
+log4j.category.org.apache.ode.axis2=DEBUG
+log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=DEBUG
+log4j.category.org.apache.ode.bpel.epr=INFO
+
+# Console appender
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%p - %C{1}.%M(%L) | %m%n




More information about the jboss-svn-commits mailing list