Author: alex.guizar(a)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