[jbpm-commits] JBoss JBPM SVN: r3733 - in jbpm3/trunk/modules: enterprise/scripts and 11 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Jan 30 03:07:44 EST 2009


Author: alex.guizar at jboss.com
Date: 2009-01-30 03:07:44 -0500 (Fri, 30 Jan 2009)
New Revision: 3733

Added:
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/ENCAction.java
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/JBPM1903Test.java
   jbpm3/trunk/modules/enterprise/src/test/resources/org/
   jbpm3/trunk/modules/enterprise/src/test/resources/org/jbpm/
   jbpm3/trunk/modules/enterprise/src/test/resources/org/jbpm/enterprise/
   jbpm3/trunk/modules/enterprise/src/test/resources/org/jbpm/enterprise/jbpm1903/
   jbpm3/trunk/modules/enterprise/src/test/resources/org/jbpm/enterprise/jbpm1903/processdefinition.xml
Modified:
   jbpm3/trunk/modules/core/src/main/resources/org/jbpm/default.jbpm.cfg.xml
   jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml
   jbpm3/trunk/modules/enterprise/src/main/etc/jbpm.cfg.xml
   jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/msg/jms/JmsMessageServiceFactory.java
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java
Log:
JBPM-1903 make ENC reachable from within action handlers
restore JmsMessageServiceFactory ENC references

Modified: jbpm3/trunk/modules/core/src/main/resources/org/jbpm/default.jbpm.cfg.xml
===================================================================
--- jbpm3/trunk/modules/core/src/main/resources/org/jbpm/default.jbpm.cfg.xml	2009-01-30 04:58:08 UTC (rev 3732)
+++ jbpm3/trunk/modules/core/src/main/resources/org/jbpm/default.jbpm.cfg.xml	2009-01-30 08:07:44 UTC (rev 3733)
@@ -31,9 +31,11 @@
   <string name="resource.mail.templates" value="jbpm.mail.templates.xml" />
 
   <!-- class loading -->
-  <!-- <string name="jbpm.classLoader" value="jbpm" />
-       <string name="jbpm.customClassLoader.className" value="com...MyClassLoaderUtil" /> 
-       <bean name="jbpm.processClassLoader" class="org.jbpm.instantiation.DefaultProcessClassLoaderFactory" singelton="true" />-->
+  <!--
+  <string name="jbpm.classLoader" value="jbpm" />
+  <string name="jbpm.customClassLoader.className" value="org.example.ClassLoader" /> 
+  <bean name="jbpm.processClassLoader" class="org.jbpm.instantiation.DefaultProcessClassLoaderFactory" singleton="true" />
+  -->
 
   <!-- make sure the block size matches the length in ByteArray.hbm.xml -->
   <int    name="jbpm.byte.block.size" value="1024" singleton="true" />

Modified: jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml	2009-01-30 04:58:08 UTC (rev 3732)
+++ jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml	2009-01-30 08:07:44 UTC (rev 3733)
@@ -9,42 +9,31 @@
 <!-- $Id$ -->
 
 <project>
-  
+
   <description>jBPM enterprise test archive builder</description>
-  
+
   <!-- ================================================================== -->
   <!-- Building                                                           -->
   <!-- ================================================================== -->
-  
+
   <target name="build-test-jars" description="Build the test deployments">
-    
-    <mkdir dir="${tests.output.dir}/test-libs"/>
-    
+
+    <mkdir dir="${tests.output.dir}/test-libs" />
+
     <!-- enterprise-test -->
     <war warfile="${tests.output.dir}/test-libs/enterprise-test.war" webxml="${tests.resources.dir}/WEB-INF/web.xml">
-      <classes dir="${tests.output.dir}/test-classes">
-        <include name="org/jbpm/enterprise/config/AppServerConfigurationsTest.class"/>
-        <include name="org/jbpm/enterprise/ejbtimer/EjbSchedulerTest*.class"/>
-        <include name="org/jbpm/enterprise/jms/JmsMessageTest*.class"/>
-        <include name="org/jbpm/enterprise/jta/JtaDbPersistenceTest*.class"/>
-      </classes>
-      <lib dir="${tests.output.dir}/test-dependencies">
-        <include name="aspectjrt*.jar"/>
-        <include name="cactus*.jar"/>
-        <include name="junit*.jar"/>
-      </lib>
-      <webinf dir="${tests.resources.dir}/WEB-INF">
-        <exclude name="web.xml"/>
-      </webinf>
+      <classes dir="${tests.output.dir}/test-classes" includes="org/jbpm/enterprise/**" />
+      <lib dir="${tests.output.dir}/test-dependencies" includes="*.jar" />
+      <webinf dir="${tests.resources.dir}/WEB-INF" excludes="web.xml" />
     </war>
 
     <!-- fork-join-example -->
     <jar jarfile="${tests.output.dir}/test-libs/fork-join-example.par">
-      <fileset dir="${tests.resources.dir}/deployment/fork-join-example"/>
+      <fileset dir="${tests.resources.dir}/deployment/fork-join-example" />
     </jar>
-  	
+
     <!-- Please add alphabetically -->
-    
+
   </target>
-  
+
 </project>

Modified: jbpm3/trunk/modules/enterprise/src/main/etc/jbpm.cfg.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/etc/jbpm.cfg.xml	2009-01-30 04:58:08 UTC (rev 3732)
+++ jbpm3/trunk/modules/enterprise/src/main/etc/jbpm.cfg.xml	2009-01-30 08:07:44 UTC (rev 3733)
@@ -9,6 +9,9 @@
     <service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
   </jbpm-context>
 
+  <!-- use the context class loader -->
+  <string name="jbpm.classLoader" value="context" />
+
   <!-- 
     Note, that the default job executor needs to be overwritten with a null value. 
     In the enterprise configuration there should be no job executor. 

Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/msg/jms/JmsMessageServiceFactory.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/msg/jms/JmsMessageServiceFactory.java	2009-01-30 04:58:08 UTC (rev 3732)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/msg/jms/JmsMessageServiceFactory.java	2009-01-30 08:07:44 UTC (rev 3733)
@@ -58,9 +58,9 @@
 {
   private static final long serialVersionUID = 1L;
 
-  String connectionFactoryJndiName = "java:JmsXA";
-  String destinationJndiName = "queue/JbpmJobQueue";
-  String commandDestinationJndiName = "queue/JbpmCommandQueue";
+  String connectionFactoryJndiName = "java:comp/env/jms/JbpmConnectionFactory";
+  String destinationJndiName = "java:comp/env/jms/JobQueue";
+  String commandDestinationJndiName = "java:comp/env/jms/CommandQueue";
   boolean isCommitEnabled = false;
 
   private ConnectionFactory connectionFactory;

Modified: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java	2009-01-30 04:58:08 UTC (rev 3732)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/ejbtimer/EjbSchedulerTest.java	2009-01-30 08:07:44 UTC (rev 3733)
@@ -99,7 +99,8 @@
         + "</process-definition>");
     long processInstanceId = startProcessInstance("future").getId();
     EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
-    assertTrue(hasProcessInstanceEnded(processInstanceId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   public void testSchedulePast() throws Exception {
@@ -118,7 +119,8 @@
         + "</process-definition>");
     long processInstanceId = startProcessInstance("past").getId();
     EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
-    assertTrue(hasProcessInstanceEnded(processInstanceId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   public void testScheduleRepeat() throws Exception {
@@ -142,7 +144,8 @@
       assertEquals("a", getProcessInstanceState(processInstanceId));
     }
     signalToken(processInstance.getRootToken().getId());
-    assertTrue(hasProcessInstanceEnded(processInstanceId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   public void testCancel() throws Exception {
@@ -174,7 +177,8 @@
     EventCallback.waitForEvent(Event.EVENTTYPE_TIMER, 2000);
 
     signalToken(rootTokenId);
-    assertTrue(hasProcessInstanceEnded(processInstanceId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   public void testScheduleSequence() throws Exception {
@@ -216,7 +220,8 @@
       assertEquals(Character.toString(state), getProcessInstanceState(processInstanceId));
     }
     EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
-    assertTrue(hasProcessInstanceEnded(processInstanceId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   public void testScheduleFork() throws Exception {
@@ -261,7 +266,8 @@
         + "</process-definition>");
     long processInstanceId = startProcessInstance("fork").getId();
     EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
-    assertTrue(hasProcessInstanceEnded(processInstanceId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   private ProcessDefinition deployProcessDefinition(String xml) throws RemoteException {
@@ -284,7 +290,10 @@
       private static final long serialVersionUID = 1L;
 
       public Object execute(JbpmContext jbpmContext) throws Exception {
-        return jbpmContext.loadProcessInstance(processInstanceId).getRootToken().getNode().getName();
+        return jbpmContext.loadProcessInstance(processInstanceId)
+            .getRootToken()
+            .getNode()
+            .getName();
       }
     });
   }

Added: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/ENCAction.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/ENCAction.java	                        (rev 0)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/ENCAction.java	2009-01-30 08:07:44 UTC (rev 3733)
@@ -0,0 +1,25 @@
+package org.jbpm.enterprise.jbpm1903;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import org.jbpm.graph.def.ActionHandler;
+import org.jbpm.graph.exe.ExecutionContext;
+
+public class ENCAction implements ActionHandler {
+
+  private static final long serialVersionUID = 1L;
+
+  public void execute(ExecutionContext executionContext) throws Exception {
+    Context jndiContext = new InitialContext();
+    try {
+      Object queue = jndiContext.lookup("java:comp/env/jms/JobQueue");
+      executionContext.setVariable("queue", queue);
+    }
+    finally {
+      jndiContext.close();
+    }
+    executionContext.leaveNode();
+  }
+
+}

Added: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/JBPM1903Test.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/JBPM1903Test.java	                        (rev 0)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jbpm1903/JBPM1903Test.java	2009-01-30 08:07:44 UTC (rev 3733)
@@ -0,0 +1,129 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.enterprise.jbpm1903;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import javax.jms.JMSException;
+import javax.jms.Queue;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import junit.framework.Test;
+
+import org.apache.cactus.ServletTestCase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.api.test.IntegrationTestSetup;
+import org.jbpm.JbpmContext;
+import org.jbpm.command.Command;
+import org.jbpm.command.DeployProcessCommand;
+import org.jbpm.command.StartProcessInstanceCommand;
+import org.jbpm.ejb.LocalCommandService;
+import org.jbpm.ejb.LocalCommandServiceHome;
+import org.jbpm.graph.exe.ProcessInstance;
+import org.jbpm.util.IoUtil;
+
+/**
+ * @author Alejandro Guizar
+ */
+public class JBPM1903Test extends ServletTestCase {
+
+  private LocalCommandService commandService;
+  private static LocalCommandServiceHome commandServiceHome;
+
+  private static final Log log = LogFactory.getLog(JBPM1903Test.class);
+
+  public static Test suite() throws Exception {
+    return new IntegrationTestSetup(JBPM1903Test.class, "enterprise-test.war");
+  }
+
+  @Override
+  protected void setUp() throws Exception {
+    if (commandServiceHome == null) {
+      Context initialContext = new InitialContext();
+      try {
+        commandServiceHome = (LocalCommandServiceHome) initialContext.lookup("java:comp/env/ejb/CommandServiceBean");
+      }
+      finally {
+        initialContext.close();
+      }
+    }
+    commandService = commandServiceHome.create();
+    log.info("### " + getName() + " started ###");
+  }
+
+  @Override
+  protected void tearDown() throws Exception {
+    log.info("### " + getName() + " done ###");
+    commandService = null;
+  }
+
+  public void testENCInActionHandler() throws IOException, JMSException {
+    byte[] processArchive = createProcessArchive();
+    deployProcessDefinition(processArchive);
+    long processInstanceId = startProcessInstance("jbpm-1903").getId();
+    Queue queue = (Queue) getVariable(processInstanceId, "queue");
+    assertEquals("JbpmJobQueue", queue.getQueueName());
+  }
+
+  private byte[] createProcessArchive() throws IOException {
+    ByteArrayOutputStream memoryOut = new ByteArrayOutputStream();
+    ZipOutputStream zipOut = new ZipOutputStream(memoryOut);
+
+    zipOut.putNextEntry(new ZipEntry("processdefinition.xml"));
+    InputStream resourceIn = getClass().getResourceAsStream("processdefinition.xml");
+    IoUtil.transfer(resourceIn, zipOut);
+    resourceIn.close();
+
+    zipOut.putNextEntry(new ZipEntry("classes/org/jbpm/enterprise/jbpm1903/ENCAction.class"));
+    resourceIn = getClass().getResourceAsStream("ENCAction.class");
+    IoUtil.transfer(resourceIn, zipOut);
+    resourceIn.close();
+
+    zipOut.close();
+    return memoryOut.toByteArray();
+  }
+
+  private void deployProcessDefinition(byte[] processArchive) {
+    commandService.execute(new DeployProcessCommand(processArchive));
+  }
+
+  private ProcessInstance startProcessInstance(String processName) {
+    return (ProcessInstance) commandService.execute(new StartProcessInstanceCommand().processDefinitionName(processName));
+  }
+
+  private Object getVariable(final long processInstanceId, final String variableName) {
+    return commandService.execute(new Command() {
+      private static final long serialVersionUID = 1L;
+
+      public Object execute(JbpmContext jbpmContext) throws Exception {
+        ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceId);
+        return processInstance.getContextInstance().getVariable(variableName);
+      }
+    });
+  }
+}

Modified: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java	2009-01-30 04:58:08 UTC (rev 3732)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jms/JmsMessageTest.java	2009-01-30 08:07:44 UTC (rev 3733)
@@ -37,6 +37,7 @@
 import org.jbpm.JbpmContext;
 import org.jbpm.command.Command;
 import org.jbpm.command.DeployProcessCommand;
+import org.jbpm.command.GetProcessInstanceCommand;
 import org.jbpm.command.StartProcessInstanceCommand;
 import org.jbpm.ejb.LocalCommandService;
 import org.jbpm.ejb.LocalCommandServiceHome;
@@ -70,8 +71,7 @@
     if (commandServiceHome == null) {
       Context initialContext = new InitialContext();
       try {
-        commandServiceHome = (LocalCommandServiceHome) initialContext
-            .lookup("java:comp/env/ejb/CommandServiceBean");
+        commandServiceHome = (LocalCommandServiceHome) initialContext.lookup("java:comp/env/ejb/CommandServiceBean");
       }
       finally {
         initialContext.close();
@@ -88,7 +88,7 @@
   }
 
   public void testAsyncNode() {
-    deployProcess("<process-definition name='node'>"
+    deployProcessDefinition("<process-definition name='node'>"
         + "  <event type='process-end'>"
         + "    <action expression='#{eventCallback.processEnd}'/>"
         + "  </event>"
@@ -101,13 +101,14 @@
         + "  <end-state name='end' />"
         + "</process-definition>");
 
-    long processId = launchProcess("node").getId();
+    long processInstanceId = startProcessInstance("node").getId();
     EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
-    assertTrue("Process has ended", hasProcessEnded(processId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   public void testAsyncAction() {
-    deployProcess("<process-definition name='action'>"
+    deployProcessDefinition("<process-definition name='action'>"
         + "  <start-state name='start'>"
         + "    <transition to='a' />"
         + "  </start-state>"
@@ -125,15 +126,16 @@
         + "  <end-state name='end' />"
         + "</process-definition>");
 
-    long processId = launchProcess("action").getId();
+    long processInstanceId = startProcessInstance("action").getId();
     EventCallback.waitForEvent(Event.EVENTTYPE_NODE_ENTER);
     EventCallback.waitForEvent(Event.EVENTTYPE_NODE_LEAVE);
     EventCallback.waitForEvent(Event.EVENTTYPE_TRANSITION);
-    assertTrue("Process has ended", hasProcessEnded(processId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   public void testAsyncSequence() {
-    deployProcess("<process-definition name='sequence'>"
+    deployProcessDefinition("<process-definition name='sequence'>"
         + "  <event type='process-end'>"
         + "    <action expression='#{eventCallback.processEnd}'/>"
         + "  </event>"
@@ -158,9 +160,10 @@
         + "  <end-state name='end' />"
         + "</process-definition>");
 
-    long processId = launchProcess("sequence").getId();
+    long processInstanceId = startProcessInstance("sequence").getId();
     EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
-    assertTrue("Process has ended", hasProcessEnded(processId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   public void testAsyncFork() throws Exception {
@@ -169,7 +172,7 @@
       return;
     }
 
-    deployProcess("<process-definition name='fork'>"
+    deployProcessDefinition("<process-definition name='fork'>"
         + "  <event type='process-end'>"
         + "    <action expression='#{eventCallback.processEnd}'/>"
         + "  </event>"
@@ -204,10 +207,11 @@
         + "  <end-state name='end' />"
         + "</process-definition>");
 
-    long processId = launchProcess("fork").getId();
+    long processInstanceId = startProcessInstance("fork").getId();
     EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
     Thread.sleep(1000);
-    assertTrue("Process has ended", hasProcessEnded(processId));
+    assertTrue("expected process instance " + processInstanceId + " to have ended",
+        hasProcessInstanceEnded(processInstanceId));
   }
 
   private String getHibernateDialect() {
@@ -215,15 +219,14 @@
       private static final long serialVersionUID = 1L;
 
       public Object execute(JbpmContext jbpmContext) throws Exception {
-        DbPersistenceServiceFactory factory = (DbPersistenceServiceFactory) jbpmContext
-            .getServiceFactory(Services.SERVICENAME_PERSISTENCE);
+        DbPersistenceServiceFactory factory = (DbPersistenceServiceFactory) jbpmContext.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
         return factory.getConfiguration().getProperty(Environment.DIALECT);
       }
     });
   }
 
   public void testAsyncExecutions() {
-    deployProcess("<process-definition name='execution'>"
+    deployProcessDefinition("<process-definition name='execution'>"
         + "  <event type='process-end'>"
         + "    <action expression='#{eventCallback.processEnd}' />"
         + "  </event>"
@@ -254,43 +257,40 @@
         + "  <end-state name='end' />"
         + "</process-definition>");
 
-    long[] processIds = new long[processExecutionCount];
+    long[] processInstanceIds = new long[processExecutionCount];
     for (int i = 0; i < processExecutionCount; i++) {
-      processIds[i] = launchProcess("execution").getId();
+      processInstanceIds[i] = startProcessInstance("execution").getId();
       EventCallback.waitForEvent(Event.EVENTTYPE_NODE_ENTER);
     }
     for (int i = 0; i < processExecutionCount; i++) {
       EventCallback.waitForEvent(Event.EVENTTYPE_NODE_LEAVE);
     }
     for (int i = 0; i < processExecutionCount; i++) {
-      waitForProcessEnd(processIds[i]);
-      assertTrue(hasProcessEnded(processIds[i]));
+      long processInstanceId = processInstanceIds[i];
+      waitForProcessInstanceEnd(processInstanceId);
+      assertTrue("expected process instance " + processInstanceId + " to have ended",
+          hasProcessInstanceEnded(processInstanceId));
     }
   }
 
-  private ProcessDefinition deployProcess(String xml) {
+  private ProcessDefinition deployProcessDefinition(String xml) {
     return (ProcessDefinition) commandService.execute(new DeployProcessCommand(xml));
   }
 
-  private ProcessInstance launchProcess(String processName) {
+  private ProcessInstance startProcessInstance(String processName) {
     StartProcessInstanceCommand command = new StartProcessInstanceCommand();
     command.setProcessDefinitionName(processName);
     command.setVariables(Collections.singletonMap("eventCallback", new EventCallback()));
     return (ProcessInstance) commandService.execute(command);
   }
 
-  private boolean hasProcessEnded(final long processId) {
-    Boolean isFinished = (Boolean) commandService.execute(new Command() {
-      private static final long serialVersionUID = 1L;
-
-      public Object execute(JbpmContext jbpmContext) throws Exception {
-        return jbpmContext.loadProcessInstance(processId).hasEnded();
-      }
-    });
-    return isFinished.booleanValue();
+  private boolean hasProcessInstanceEnded(final long processInstanceId) {
+    ProcessInstance processInstance = (ProcessInstance) commandService.execute(new GetProcessInstanceCommand(
+        processInstanceId));
+    return processInstance.hasEnded();
   }
 
-  private void waitForProcessEnd(long processId) {
+  private void waitForProcessInstanceEnd(long processId) {
     long startTime = System.currentTimeMillis();
     do {
       EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END, 1000);
@@ -298,6 +298,6 @@
         log.warn("process " + processId + " took too long");
         break;
       }
-    } while (!hasProcessEnded(processId));
+    } while (!hasProcessInstanceEnded(processId));
   }
 }

Added: jbpm3/trunk/modules/enterprise/src/test/resources/org/jbpm/enterprise/jbpm1903/processdefinition.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/resources/org/jbpm/enterprise/jbpm1903/processdefinition.xml	                        (rev 0)
+++ jbpm3/trunk/modules/enterprise/src/test/resources/org/jbpm/enterprise/jbpm1903/processdefinition.xml	2009-01-30 08:07:44 UTC (rev 3733)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="jbpm-1903">
+
+  <start-state name="start-state1">
+    <transition to="node1" />
+  </start-state>
+
+  <node name="node1">
+    <action class="org.jbpm.enterprise.jbpm1903.ENCAction" />
+    <transition to="end-state1" />
+  </node>
+
+  <end-state name="end-state1" />
+
+</process-definition>
\ No newline at end of file




More information about the jbpm-commits mailing list