JBoss JBPM SVN: r1881 - in jbossbpm/spec/trunk/modules: ri/src/main/java/org/jboss/bpm/model/internal and 1 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-13 09:59:52 -0400 (Wed, 13 Aug 2008)
New Revision: 1881
Modified:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
Log:
Add FlowObject.reset()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-13 13:22:03 UTC (rev 1880)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
@@ -29,6 +29,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.BPMException;
import org.jboss.bpm.ProcessTimeoutException;
import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.client.DialectRegistry;
@@ -69,11 +70,7 @@
public void startProcess(ObjectName procID, Attachments att)
{
- Process proc = getProcessByID(procID);
- if (proc == null)
- throw new IllegalStateException("Cannot obtain process: " + procID);
-
- // Start the process in a thread
+ Process proc = getProcessStrict(procID);
ExecutionManager exm = ExecutionManager.locateExecutionManager();
exm.startProcess(proc, att);
}
@@ -81,7 +78,7 @@
@Override
public ProcessStatus waitForEnd(ObjectName procID, long timeout)
{
- Process proc = getProcessByID(procID);
+ Process proc = getProcessStrict(procID);
ProcessImpl procImpl = (ProcessImpl)proc;
ProcessStatus status = proc.getProcessStatus();
@@ -107,7 +104,7 @@
if (rte == null)
return status;
else
- throw rte;
+ throw new BPMException("Process aborted", rte);
}
Thread.sleep(100);
now = System.currentTimeMillis();
@@ -121,4 +118,12 @@
// Throw timeout exception if it took too long
throw new ProcessTimeoutException("Process timeout for: " + procID);
}
+
+ private Process getProcessStrict(ObjectName procID)
+ {
+ Process proc = getProcessByID(procID);
+ if (proc == null)
+ throw new IllegalStateException("Cannot obtain process: " + procID);
+ return proc;
+ }
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-13 13:22:03 UTC (rev 1880)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-13 13:59:52 UTC (rev 1881)
@@ -91,19 +91,25 @@
// Synchronize execution of the target and the flow handler
synchronized (rtProc)
{
- // Execute the FlowObject
try
{
+ // Execute the FlowObject
signalManager.throwSignal(procImpl.getName(), sigHandler.getEnterSignal());
target.execute(token);
+
+ // Transfer the token to the FlowHandler
+ flowHandler.execute(scheduler, token);
}
+ catch(RuntimeException rte)
+ {
+ target.reset();
+ throw rte;
+ }
finally
{
signalManager.throwSignal(procImpl.getName(), sigHandler.getExitSignal());
}
- // Transfer the token to the FlowHandler
- flowHandler.execute(scheduler, token);
}
tokStatus = token.getTokenStatus();
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-13 13:22:03 UTC (rev 1880)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
@@ -120,7 +120,7 @@
// Reset the gateway
if (outstandingFlows.size() == 0)
{
- resetGateway();
+ reset();
}
}
};
@@ -129,9 +129,9 @@
}
@Override
- protected void resetGateway()
+ public void reset()
{
- super.resetGateway();
+ super.reset();
outstandingFlows = null;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-13 13:22:03 UTC (rev 1880)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
@@ -109,6 +109,11 @@
{
// noting to do
}
+
+ public void reset()
+ {
+ // noting to do
+ }
@Override
protected void initialize(Process proc)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-13 13:22:03 UTC (rev 1880)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
@@ -133,9 +133,10 @@
receivedTokens.add(token);
}
- // Reset the gateway
- protected void resetGateway()
+ @Override
+ public void reset()
{
+ super.reset();
expectedFlows = null;
receivedTokens = null;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-13 13:22:03 UTC (rev 1880)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
@@ -150,7 +150,7 @@
}
// Reset the gateway
- resetGateway();
+ reset();
}
}
};
@@ -159,9 +159,9 @@
}
@Override
- protected void resetGateway()
+ public void reset()
{
- super.resetGateway();
+ super.reset();
outstandingFlows = null;
mergeTokens = null;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-13 13:22:03 UTC (rev 1880)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
@@ -33,6 +33,8 @@
import javax.management.ObjectName;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.NotImplementedException;
import org.jboss.bpm.client.ProcessManager;
@@ -58,6 +60,9 @@
@SuppressWarnings("serial")
public class ProcessImpl extends SupportingElementImpl implements Process, MutablePropertySupport
{
+ // provide logging
+ private static final Log log = LogFactory.getLog(ProcessImpl.class);
+
// The required process name
private String name;
// The list of associated flow objects
@@ -197,9 +202,12 @@
{
ProcessManager pm = ProcessManager.locateProcessManager();
- if (getProcessStatus() != ProcessStatus.Ready)
- throw new IllegalStateException("Cannot start process in state: " + getProcessStatus());
+ if (status == ProcessStatus.Aborted || status == ProcessStatus.Completed)
+ resetProcess();
+ if (status != ProcessStatus.Ready)
+ throw new IllegalStateException("Cannot start process in state: " + status);
+
// Register the process if needed
if (pm.getProcessByID(getID()) == null)
{
@@ -211,6 +219,18 @@
return getID();
}
+ private void resetProcess()
+ {
+ log.debug("Reset process: " + this);
+ for (FlowObject fo : flowObjects)
+ {
+ FlowObjectImpl foImpl = (FlowObjectImpl)fo;
+ foImpl.reset();
+ }
+ status = ProcessStatus.Ready;
+ runtimeException = null;
+ }
+
public void waitForEnd()
{
ProcessManager pm = ProcessManager.locateProcessManager();
@@ -310,10 +330,11 @@
if (getFlowObjects(EndEvent.class).size() == 0)
throw new InvalidProcessException("Process does not have end events");
- // Set the associated process
- for (FlowObject aux : flowObjects)
+ // Initialize the flow objects
+ for (FlowObject fo : flowObjects)
{
- ((FlowObjectImpl)aux).initialize(this);
+ FlowObjectImpl foImpl = (FlowObjectImpl)fo;
+ foImpl.initialize(this);
}
status = ProcessStatus.Ready;
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-13 13:22:03 UTC (rev 1880)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-13 13:59:52 UTC (rev 1881)
@@ -51,18 +51,18 @@
{
Process proc = getProcess();
proc.startProcess();
-
- // Add a signal listener that sends the other start trigger signal
+
+ // Add a signal listener that sends the other start trigger signal
SignalManager signalManager = SignalManager.locateSignalManager();
Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
-
- // Send start trigger signal
+
+ // Send start trigger signal
signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
-
+
// Wait for the process to end
proc.waitForEnd();
-
+
// Verify the result
assertEquals("TaskA", TaskC.taskValue);
}
@@ -71,22 +71,62 @@
{
Process proc = getProcess();
proc.startProcess();
-
- // Add a signal listener that sends the other start trigger signal
+
+ // Add a signal listener that sends the other start trigger signal
SignalManager signalManager = SignalManager.locateSignalManager();
Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
-
- // Send start trigger signal
+
+ // Send start trigger signal
signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B"));
-
+
// Wait for the process to end
proc.waitForEnd();
-
+
// Verify the result
assertEquals("TaskB", TaskC.taskValue);
}
+ public void testInvalidToken() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+
+ // Add a signal listener that sends the other start trigger signal
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ try
+ {
+ proc.waitForEnd();
+ fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
+ }
+ catch (RuntimeException rte)
+ {
+ // expected
+ }
+
+ // Restart the process
+ proc.startProcess();
+
+ // Add a signal listener that sends the other start trigger signal
+ startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ // Wait for the process to end
+ proc.waitForEnd();
+
+ // Verify the result
+ assertEquals("TaskA", TaskC.taskValue);
+ }
+
private Process getProcess()
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
@@ -107,7 +147,7 @@
{
private String fromRef;
private Signal nextSignal;
-
+
public MergeListener(String fromRef, Signal nextSignal)
{
this.fromRef = fromRef;
@@ -127,7 +167,7 @@
}
}
}
-
+
@SuppressWarnings("serial")
public static class TaskA implements ExecutionHandler
{
@@ -137,7 +177,7 @@
exContext.addAttachment("taskValue", "TaskA");
}
}
-
+
@SuppressWarnings("serial")
public static class TaskB implements ExecutionHandler
{
@@ -147,11 +187,12 @@
exContext.addAttachment("taskValue", "TaskB");
}
}
-
+
@SuppressWarnings("serial")
public static class TaskC implements ExecutionHandler
{
public static Object taskValue;
+
public void execute(Token token)
{
ExecutionContext exContext = token.getExecutionContext();
17 years, 8 months
JBoss JBPM SVN: r1880 - in jbossbpm/spec/trunk/modules: testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive and 4 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-13 09:22:03 -0400 (Wed, 13 Aug 2008)
New Revision: 1880
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
Log:
Pull up signal/message listener
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-13 13:04:26 UTC (rev 1879)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-13 13:22:03 UTC (rev 1880)
@@ -38,6 +38,7 @@
import org.jboss.bpm.client.MessageListener;
import org.jboss.bpm.client.ObjectNameFactory;
import org.jboss.bpm.client.SignalListener;
+import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.client.internal.EmbeddedBeansDeployer;
import org.jboss.bpm.model.BPMNElement;
import org.jboss.bpm.model.Message;
@@ -67,8 +68,35 @@
{
super.setUp();
log.debug("setUp: " + getClass().getName() + "." + getName());
+
deployer = new EmbeddedBeansDeployer();
+
+ // Setup the SignalListener
+ signalListener = new SignalListener()
+ {
+ public void catchSignal(Signal signal)
+ {
+ signals.add(signal);
+ }
+ };
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.addSignalListener(getName(), getSignalListener());
signals.clear();
+
+ // Setup the MessageListener
+ messageListener = new MessageListener()
+ {
+ public ObjectName getID()
+ {
+ return getMessageListenerID();
+ }
+
+ public void catchMessage(Message message)
+ {
+ log.debug("catchMessage: " + message);
+ messages.add(message);
+ }
+ };
}
@Override
@@ -114,16 +142,6 @@
public SignalListener getSignalListener()
{
- if (signalListener == null)
- {
- signalListener = new SignalListener()
- {
- public void catchSignal(Signal signal)
- {
- signals.add(signal);
- }
- };
- }
return signalListener;
}
@@ -145,22 +163,6 @@
public MessageListener getMessageListener()
{
- if (messageListener == null)
- {
- messageListener = new MessageListener()
- {
- public ObjectName getID()
- {
- return getMessageListenerID();
- }
-
- public void catchMessage(Message message)
- {
- messages.add(message);
- log.debug("catchMessage: " + message);
- }
- };
- }
return messageListener;
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-13 13:04:26 UTC (rev 1879)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-13 13:22:03 UTC (rev 1880)
@@ -47,22 +47,13 @@
*/
public class ExclusiveMergeTest extends DefaultEngineTestCase
{
- private SignalManager signalManager;
-
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), getSignalListener());
- }
-
public void testGateA() throws Exception
{
Process proc = getProcess();
proc.startProcess();
// Add a signal listener that sends the other start trigger signal
+ SignalManager signalManager = SignalManager.locateSignalManager();
Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
@@ -82,6 +73,7 @@
proc.startProcess();
// Add a signal listener that sends the other start trigger signal
+ SignalManager signalManager = SignalManager.locateSignalManager();
Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java 2008-08-13 13:04:26 UTC (rev 1879)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java 2008-08-13 13:22:03 UTC (rev 1880)
@@ -25,7 +25,6 @@
import java.util.List;
-import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.GatewayBuilder;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
@@ -45,14 +44,6 @@
*/
public class ExclusiveSplitTest extends DefaultEngineTestCase
{
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), getSignalListener());
- }
-
public void testGateA() throws Exception
{
Process proc = getProcess();
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-13 13:04:26 UTC (rev 1879)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-13 13:22:03 UTC (rev 1880)
@@ -23,7 +23,6 @@
// $Id$
-import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -36,14 +35,6 @@
*/
public class InclusiveMergeTest extends DefaultEngineTestCase
{
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), getSignalListener());
- }
-
public void testGateA() throws Exception
{
System.out.println("FIXME: InclusiveMergeTest");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-13 13:04:26 UTC (rev 1879)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-13 13:22:03 UTC (rev 1880)
@@ -23,7 +23,6 @@
// $Id$
-import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -35,14 +34,6 @@
*/
public class InclusiveSplitTest extends DefaultEngineTestCase
{
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), getSignalListener());
- }
-
public void testGateA() throws Exception
{
System.out.println("FIXME: InclusiveSplitTest");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 13:04:26 UTC (rev 1879)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 13:22:03 UTC (rev 1880)
@@ -23,7 +23,6 @@
// $Id$
-import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -36,14 +35,6 @@
*/
public class ParallelMergeTest extends DefaultEngineTestCase
{
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), getSignalListener());
- }
-
public void testGateA() throws Exception
{
System.out.println("FIXME: ParallelMergeTest");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-13 13:04:26 UTC (rev 1879)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-13 13:22:03 UTC (rev 1880)
@@ -25,7 +25,6 @@
import java.util.List;
-import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
@@ -43,14 +42,6 @@
*/
public class ParallelSplitTest extends DefaultEngineTestCase
{
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), getSignalListener());
- }
-
public void testParallelSplit() throws Exception
{
Process proc = getProcess();
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java 2008-08-13 13:04:26 UTC (rev 1879)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java 2008-08-13 13:22:03 UTC (rev 1880)
@@ -28,7 +28,6 @@
import java.util.concurrent.ExecutionException;
import org.jboss.bpm.client.ProcessManager;
-import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
@@ -43,14 +42,6 @@
*/
public class BasicSequenceTest extends DefaultEngineTestCase
{
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), getSignalListener());
- }
-
/**
* Test a basic sequence
*/
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java 2008-08-13 13:04:26 UTC (rev 1879)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java 2008-08-13 13:22:03 UTC (rev 1880)
@@ -28,7 +28,6 @@
import java.util.concurrent.ExecutionException;
import org.jboss.bpm.client.ProcessManager;
-import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
@@ -43,14 +42,6 @@
*/
public class BasicTaskTest extends DefaultEngineTestCase
{
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), getSignalListener());
- }
-
/**
* Test that the execution context variables set by the Task are visible to the client.
*/
17 years, 8 months
JBoss JBPM SVN: r1879 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/model and 15 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-13 09:04:26 -0400 (Wed, 13 Aug 2008)
New Revision: 1879
Added:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java
Removed:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageListener.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/dialects/stp/src/test/java/org/jboss/bpm/dialect/stp/sequence/SequenceTest.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
Log:
Cleanup ProcessManager API
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -80,8 +80,8 @@
runtimeProcesses.put(procID, rtProc);
}
- protected void removeRuntimeProcess(ObjectName procID)
+ protected void removeRuntimeProcess(RuntimeProcess rtProc)
{
- runtimeProcesses.remove(procID);
+ runtimeProcesses.remove(rtProc.getProcess().getID());
}
}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageListener.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageListener.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageListener.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -38,7 +38,7 @@
/**
* Get the id for this listener
*/
- ObjectName getMessageListenerID();
+ ObjectName getID();
/**
* Catch a message from the process that this listener is registered with
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -23,8 +23,8 @@
//$Id$
-import java.util.HashSet;
-import java.util.Set;
+import java.util.HashMap;
+import java.util.Map;
import javax.management.ObjectName;
@@ -52,7 +52,7 @@
private static final Log log = LogFactory.getLog(MessageManager.class);
// The set of registered message listeners
- private Set<MessageListener> messageListeners = new HashSet<MessageListener>();
+ private Map<ObjectName, MessageListener> listeners = new HashMap<ObjectName, MessageListener>();
/**
* Locate the MessageManager
@@ -68,17 +68,37 @@
*/
public void addMessageListener(MessageListener listener)
{
+ if (hasMessageListener(listener.getID()))
+ throw new IllegalStateException("Listener already registered: " + listener.getID());
+
log.debug("addMessageListener: " + listener);
- messageListeners.add(listener);
+ listeners.put(listener.getID(), listener);
}
/**
+ * Get a MessageListener for a given ID
+ * @return null if there is none
+ */
+ public MessageListener getMessageListener(ObjectName listenerID)
+ {
+ return listeners.get(listenerID);
+ }
+
+ /**
+ * True if there is a MessageListener for a given ID
+ */
+ public boolean hasMessageListener(ObjectName listenerID)
+ {
+ return getMessageListener(listenerID) != null;
+ }
+
+ /**
* Remove an MessageListener
*/
- public void removeMessageListener(MessageListener listener)
+ public void removeMessageListener(ObjectName listenerID)
{
- log.debug("removeMessageListener: " + listener);
- messageListeners.remove(listener);
+ log.debug("removeMessageListener: " + listenerID);
+ listeners.remove(listenerID);
}
/**
@@ -94,6 +114,7 @@
if (target instanceof MessageListener == false)
throw new IllegalArgumentException("Message target is not a valid message receiver: " + targetName);
+ log.debug("sendMessage to " + target + " => " + msg);
MessageListener msgListener = (MessageListener)target;
msgListener.catchMessage(msg);
}
@@ -103,18 +124,11 @@
*/
public void sendMessage(ObjectName targetID, Message msg)
{
- MessageListener msgListener = null;
- for (MessageListener auxListener : messageListeners)
- {
- if (auxListener.getMessageListenerID().equals(targetID))
- {
- msgListener = auxListener;
- break;
- }
- }
+ MessageListener msgListener = listeners.get(targetID);
if (msgListener == null)
throw new IllegalStateException("No message listener registered for: " + targetID);
+ log.debug("sendMessage to '" + targetID + "' => " + msg);
msgListener.catchMessage(msg);
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -28,6 +28,7 @@
import java.io.InputStream;
import java.net.URL;
import java.util.Collections;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -38,7 +39,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jboss.bpm.BPMException;
import org.jboss.bpm.EngineShutdownException;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Process.ProcessStatus;
@@ -62,7 +62,7 @@
// The dialect registry
protected DialectRegistry dialectRegistry;
// The set of process definitions
- private Set<Process> procs = new HashSet<Process>();
+ private Map<ObjectName, Process> procs = new HashMap<ObjectName, Process>();
// Hide public constructor
protected ProcessManager()
@@ -111,7 +111,8 @@
*/
public Set<Process> getProcesses()
{
- return Collections.unmodifiableSet(procs);
+ Set<Process> procSet = new HashSet<Process>(procs.values());
+ return Collections.unmodifiableSet(procSet);
}
/**
@@ -124,7 +125,7 @@
public Set<Process> getProcesses(String name, Process.ProcessStatus status)
{
Set<Process> procSet = new HashSet<Process>();
- for (Process aux : procs)
+ for (Process aux : procs.values())
{
if (aux.getName().equals(name))
{
@@ -138,16 +139,10 @@
/**
* Get a Process for a given id
*/
- public Process getProcessByID(ObjectName id)
+ public Process getProcessByID(ObjectName procID)
{
- for (Process aux : procs)
- {
- if (aux.getID().equals(id))
- {
- return aux;
- }
- }
- throw new BPMException("Cannot find process: " + id);
+ Process proc = procs.get(procID);
+ return proc;
}
/**
@@ -156,7 +151,7 @@
protected void registerProcess(Process proc)
{
log.debug("registerProcess: " + proc);
- procs.add(proc);
+ procs.put(proc.getID(), proc);
}
/**
@@ -164,13 +159,13 @@
*/
public void destroyProcess(Process proc)
{
- procs.remove(proc);
+ procs.remove(proc.getID());
}
/**
- * Start a Process with a given name
+ * Start a Process with a given process id.
*/
- public abstract ObjectName startProcess(String name, Attachments att);
+ public abstract void startProcess(ObjectName procID, Attachments att);
private String getNamespaceURI(InputStream inStream)
{
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -47,7 +47,7 @@
private static final Log log = LogFactory.getLog(SignalManager.class);
// The map of registered signal listeners
- private Map<String, Set<SignalListener>> signalListeners = new HashMap<String, Set<SignalListener>>();
+ private Map<String, Set<SignalListener>> listeners = new HashMap<String, Set<SignalListener>>();
/**
* Locate the SignalManager
@@ -64,11 +64,11 @@
public void addSignalListener(String procName, SignalListener listener)
{
log.debug("addSignalListener: " + listener);
- Set<SignalListener> set = signalListeners.get(procName);
+ Set<SignalListener> set = listeners.get(procName);
if (set == null)
{
set = new HashSet<SignalListener>();
- signalListeners.put(procName, set);
+ listeners.put(procName, set);
}
set.add(listener);
}
@@ -79,7 +79,7 @@
public void removeSignalListener(String procName, SignalListener listener)
{
log.debug("removeSignalListener: " + listener);
- Set<SignalListener> set = signalListeners.get(procName);
+ Set<SignalListener> set = listeners.get(procName);
if (set != null)
{
set.remove(listener);
@@ -92,7 +92,7 @@
public void removeSignalListeners(String procName)
{
log.debug("removeSignalListeners: " + procName);
- signalListeners.remove(procName);
+ listeners.remove(procName);
}
/**
@@ -101,7 +101,7 @@
public void throwSignal(String procName, Signal signal)
{
log.debug("throwSignal: " + signal);
- Set<SignalListener> set = signalListeners.get(procName);
+ Set<SignalListener> set = listeners.get(procName);
if (set != null)
{
for (SignalListener listener : set)
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -40,13 +40,13 @@
*/
public enum SignalType
{
- ENTER_START_EVENT, EXIT_START_EVENT, START_TRIGGER,
- ENTER_EVENT, EXIT_EVENT, EVENT_TRIGGER,
- ENTER_END_EVENT, EXIT_END_EVENT, END_TRIGGER,
- ENTER_GATEWAY, EXIT_GATEWAY,
- ENTER_PROCESS, EXIT_PROCESS,
- ENTER_SUB_PROCESS, EXIT_SUB_PROCESS,
- ENTER_TASK, EXIT_TASK, TASK_TRIGGER
+ SYSTEM_START_EVENT_ENTER, SYSTEM_START_EVENT_EXIT, SYSTEM_START_TRIGGER,
+ SYSTEM_EVENT_ENTER, SYSTEM_EVENT_EXIT, SYSTEM_EVENT_TRIGGER,
+ SYSTEM_END_EVENT_ENTER, SYSTEM_END_EVENT_EXIT, SYSTEM_END_TRIGGER,
+ SYSTEM_GATEWAY_ENTER, SYSTEM_GATEWAY_EXIT,
+ SYSTEM_PROCESS_ENTER, SYSTEM_PROCESS_EXIT,
+ SYSTEM_SUB_PROCESS_ENTER, SYSTEM_SUB_PROCESS_EXIT,
+ SYSTEM_TASK_ENTER, SYSTEM_TASK_EXIT, SYSTEM_TASK_TRIGGER
}
private SignalType type;
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -43,13 +43,17 @@
import org.jboss.bpm.model.Message;
import org.jboss.bpm.model.Signal;
-public abstract class AbstractAPITestCase extends TestCase implements SignalListener, MessageListener
+public abstract class AbstractAPITestCase extends TestCase
{
// provide logging
- private static final Log log = LogFactory.getLog(AbstractAPITestCase.class);
+ protected final Log log = LogFactory.getLog(getClass());
// Every test case has a deployer
private EmbeddedBeansDeployer deployer;
+ // The embedded SignalListener
+ private SignalListener signalListener;
+ // The embedded MessageListener
+ private MessageListener messageListener;
// The signals caught by this test case
private List<Signal> signals = new ArrayList<Signal>();
// The messages caught by this test case
@@ -62,19 +66,15 @@
protected void setUp() throws Exception
{
super.setUp();
- log.debug("setUp: " + getName());
+ log.debug("setUp: " + getClass().getName() + "." + getName());
deployer = new EmbeddedBeansDeployer();
- deployBeans(getBeansConfig());
signals.clear();
}
@Override
protected void tearDown() throws Exception
{
- log.debug("tearDown: " + getName());
- undeployBeans(getBeansConfig());
- //ProcessManager pm = ProcessManager.locateProcessManager();
- //System.out.println("XXX " + pm.getProcesses());
+ log.debug("tearDown: " + getClass().getName() + "." + getName());
super.tearDown();
}
@@ -112,9 +112,19 @@
return url;
}
- public void catchSignal(Signal signal)
+ public SignalListener getSignalListener()
{
- signals.add(signal);
+ if (signalListener == null)
+ {
+ signalListener = new SignalListener()
+ {
+ public void catchSignal(Signal signal)
+ {
+ signals.add(signal);
+ }
+ };
+ }
+ return signalListener;
}
public List<Signal> getSignals()
@@ -133,17 +143,32 @@
return Collections.unmodifiableList(retSignals);
}
+ public MessageListener getMessageListener()
+ {
+ if (messageListener == null)
+ {
+ messageListener = new MessageListener()
+ {
+ public ObjectName getID()
+ {
+ return getMessageListenerID();
+ }
+
+ public void catchMessage(Message message)
+ {
+ messages.add(message);
+ log.debug("catchMessage: " + message);
+ }
+ };
+ }
+ return messageListener;
+ }
+
public ObjectName getMessageListenerID()
{
- return ObjectNameFactory.create(BPMNElement.ID_DOMAIN, "test", getName());
+ return ObjectNameFactory.create(BPMNElement.ID_DOMAIN, "test", getClass() + "." + getName());
}
- public void catchMessage(Message message)
- {
- messages.add(message);
- log.debug("catchMessage: " + message);
- }
-
public List<Message> getMessages()
{
return Collections.unmodifiableList(messages);
Modified: jbossbpm/spec/trunk/modules/dialects/stp/src/test/java/org/jboss/bpm/dialect/stp/sequence/SequenceTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/stp/src/test/java/org/jboss/bpm/dialect/stp/sequence/SequenceTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/dialects/stp/src/test/java/org/jboss/bpm/dialect/stp/sequence/SequenceTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -44,9 +44,10 @@
{
URL jpdlURL = getResourceURL("sequence/basic-sequence.bpmn");
- // Create a Process through the ProcessManager
ProcessManager pm = ProcessManager.locateProcessManager();
Process proc = pm.createProcess(jpdlURL);
+ pm.destroyProcess(proc);
+
assertNotNull(proc);
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -27,6 +27,7 @@
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.client.ExecutionManager;
+import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Signal;
@@ -57,10 +58,11 @@
@Override
public void startProcess(Process proc, Attachments att)
{
- ((ProcessImpl)proc).setProcessStatus(ProcessStatus.Active);
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.setProcessStatus(ProcessStatus.Active);
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(proc.getName(), new Signal(proc.getName(), SignalType.ENTER_PROCESS));
+ signalManager.throwSignal(proc.getName(), new Signal(proc.getName(), SignalType.SYSTEM_PROCESS_ENTER));
final RuntimeProcessImpl rtProc = new RuntimeProcessImpl(proc);
final RunnableProcess runner = new RunnableProcess(rtProc, att);
@@ -145,12 +147,14 @@
finally
{
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(procName, new Signal(procName, Signal.SignalType.EXIT_PROCESS));
+ signalManager.throwSignal(procName, new Signal(procName, Signal.SignalType.SYSTEM_PROCESS_EXIT));
if (procStatus == ProcessStatus.Active)
procImpl.setProcessStatus(ProcessStatus.Completed);
- removeRuntimeProcess(procImpl.getID());
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ procManager.destroyProcess(rtProc.getProcess());
+ removeRuntimeProcess(rtProc);
}
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -24,7 +24,6 @@
// $Id$
import java.util.Map;
-import java.util.Set;
import javax.management.ObjectName;
@@ -36,8 +35,8 @@
import org.jboss.bpm.client.ExecutionManager;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.internal.ProcessImpl;
import org.jboss.bpm.model.Process.ProcessStatus;
+import org.jboss.bpm.model.internal.ProcessImpl;
import org.jboss.bpm.runtime.Attachments;
/**
@@ -68,35 +67,23 @@
super.registerProcess(proc);
}
- public ObjectName startProcess(String name, Attachments att)
+ public void startProcess(ObjectName procID, Attachments att)
{
- Set<Process> procSet = getProcesses(name, ProcessStatus.Ready);
- if (procSet.size() == 0)
- throw new IllegalStateException("Cannot obtain process with name: " + name);
- if (procSet.size() > 1)
- throw new IllegalStateException("Multiple processes with name: " + name);
-
- Process proc = procSet.iterator().next();
- return startProcess(proc, att);
- }
-
- private ObjectName startProcess(Process proc, Attachments att)
- {
- // Register a copy the process instance
- registerProcess(proc.copyProcess());
-
+ Process proc = getProcessByID(procID);
+ if (proc == null)
+ throw new IllegalStateException("Cannot obtain process: " + procID);
+
// Start the process in a thread
ExecutionManager exm = ExecutionManager.locateExecutionManager();
exm.startProcess(proc, att);
-
- return proc.getID();
}
@Override
public ProcessStatus waitForEnd(ObjectName procID, long timeout)
{
- ProcessImpl procImpl = (ProcessImpl)getProcessByID(procID);
- ProcessStatus status = procImpl.getProcessStatus();
+ Process proc = getProcessByID(procID);
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ ProcessStatus status = proc.getProcessStatus();
if (status == ProcessStatus.None || status == ProcessStatus.Ready)
throw new IllegalStateException("Cannot wait for process in state: " + status);
@@ -109,7 +96,7 @@
{
while (forever || now < until)
{
- status = procImpl.getProcessStatus();
+ status = proc.getProcessStatus();
if (status == ProcessStatus.Cancelled || status == ProcessStatus.Completed)
{
return status;
@@ -130,11 +117,6 @@
{
log.warn(ex);
}
- finally
- {
- // Remove the process
- destroyProcess(procImpl);
- }
// Throw timeout exception if it took too long
throw new ProcessTimeoutException("Process timeout for: " + procID);
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -103,12 +103,12 @@
{
public Signal getEnterSignal()
{
- return new Signal(getName(), Signal.SignalType.ENTER_END_EVENT);
+ return new Signal(getName(), Signal.SignalType.SYSTEM_END_EVENT_ENTER);
}
public Signal getExitSignal()
{
- return new Signal(getName(), Signal.SignalType.EXIT_END_EVENT);
+ return new Signal(getName(), Signal.SignalType.SYSTEM_END_EVENT_EXIT);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -35,6 +35,7 @@
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
+import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
@@ -148,12 +149,12 @@
{
public Signal getEnterSignal()
{
- return new Signal(getName(), Signal.SignalType.ENTER_GATEWAY);
+ return new Signal(getName(), SignalType.SYSTEM_GATEWAY_ENTER);
}
public Signal getExitSignal()
{
- return new Signal(getName(), Signal.SignalType.EXIT_GATEWAY);
+ return new Signal(getName(), SignalType.SYSTEM_GATEWAY_EXIT);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -95,12 +95,12 @@
{
public Signal getEnterSignal()
{
- return new Signal(getName(), Signal.SignalType.ENTER_EVENT);
+ return new Signal(getName(), Signal.SignalType.SYSTEM_EVENT_ENTER);
}
public Signal getExitSignal()
{
- return new Signal(getName(), Signal.SignalType.EXIT_EVENT);
+ return new Signal(getName(), Signal.SignalType.SYSTEM_EVENT_EXIT);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -195,18 +195,20 @@
public ObjectName startProcess(Attachments att)
{
- ProcessManagerImpl pm = (ProcessManagerImpl)ProcessManager.locateProcessManager();
+ ProcessManager pm = ProcessManager.locateProcessManager();
if (getProcessStatus() != ProcessStatus.Ready)
throw new IllegalStateException("Cannot start process in state: " + getProcessStatus());
// Register the process if needed
- if (pm.getProcesses(getName(), null).size() == 0)
+ if (pm.getProcessByID(getID()) == null)
{
- pm.registerProcess(this);
+ ProcessManagerImpl pmImpl = (ProcessManagerImpl)pm;
+ pmImpl.registerProcess(this);
}
- return pm.startProcess(getName(), att);
+ pm.startProcess(getID(), att);
+ return getID();
}
public void waitForEnd()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -91,7 +91,7 @@
throw new NotImplementedException();
}
- public ObjectName getMessageListenerID()
+ public ObjectName getID()
{
return getID();
}
@@ -101,6 +101,7 @@
String msgName = message.getName();
if (messageRef.getName().equals(msgName))
{
+ log.debug("catchMessage in " + this + " => " + message);
for (Property prop : messageRef.getProperties())
{
String name = prop.getName();
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -120,12 +120,12 @@
{
public Signal getEnterSignal()
{
- return new Signal("Start", Signal.SignalType.ENTER_START_EVENT);
+ return new Signal("Start", Signal.SignalType.SYSTEM_START_EVENT_ENTER);
}
public Signal getExitSignal()
{
- return new Signal("Start", Signal.SignalType.EXIT_START_EVENT);
+ return new Signal("Start", Signal.SignalType.SYSTEM_START_EVENT_EXIT);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -55,12 +55,12 @@
{
public Signal getEnterSignal()
{
- return new Signal(getName(), Signal.SignalType.ENTER_SUB_PROCESS);
+ return new Signal(getName(), Signal.SignalType.SYSTEM_SUB_PROCESS_ENTER);
}
public Signal getExitSignal()
{
- return new Signal(getName(), Signal.SignalType.EXIT_SUB_PROCESS);
+ return new Signal(getName(), Signal.SignalType.SYSTEM_SUB_PROCESS_EXIT);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -63,12 +63,12 @@
{
public Signal getEnterSignal()
{
- return new Signal(getName(), Signal.SignalType.ENTER_TASK);
+ return new Signal(getName(), Signal.SignalType.SYSTEM_TASK_ENTER);
}
public Signal getExitSignal()
{
- return new Signal(getName(), Signal.SignalType.EXIT_TASK);
+ return new Signal(getName(), Signal.SignalType.SYSTEM_TASK_EXIT);
}
};
}
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -83,11 +83,11 @@
public static final String PROPERTY_IS_AVAILABLE = "isAvailable";
public static final String PROPERTY_IS_OFFER_ACCEPTED = "isOfferAccepted";
- private ObjectName listenerID;
+ private ObjectName msgListenerID;
- public AirticketProcessBuilder(ObjectName listenerID)
+ public AirticketProcessBuilder(ObjectName msgListenerID)
{
- this.listenerID = listenerID;
+ this.msgListenerID = msgListenerID;
}
public Process buildProcess()
@@ -211,7 +211,7 @@
// Add InvalidDataMsg
procBuilder.addMessage(MESSAGE_INVALID_DATA).
- addToRef(listenerID).
+ addToRef(msgListenerID).
addProperty(PROPERTY_NAME, null, true).
addProperty(PROPERTY_FROM, null, true).
addProperty(PROPERTY_TO, null, true).
@@ -220,7 +220,7 @@
// Add NotAvailableMsg
procBuilder.addMessage(MESSAGE_NOT_AVAILABLE).
- addToRef(listenerID).
+ addToRef(msgListenerID).
addProperty(PROPERTY_NAME, null, true).
addProperty(PROPERTY_FROM, null, true).
addProperty(PROPERTY_TO, null, true).
@@ -229,7 +229,7 @@
// Add OfferMsg
procBuilder.addMessage(MESSAGE_OFFER).
- addToRef(listenerID).
+ addToRef(msgListenerID).
addProperty(PROPERTY_NAME, null, true).
addProperty(PROPERTY_FROM, null, true).
addProperty(PROPERTY_TO, null, true).
@@ -245,7 +245,7 @@
// Add ConfirmMsg
procBuilder.addMessage(MESSAGE_CONFIRM).
- addToRef(listenerID).
+ addToRef(msgListenerID).
addProperty(PROPERTY_NAME, null, true).
addProperty(PROPERTY_FROM, null, true).
addProperty(PROPERTY_TO, null, true).
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -74,7 +74,7 @@
if (httpSession.isNew() == false)
{
ProcessManager pm = ProcessManager.locateProcessManager();
- procID = pm.startProcess(AirticketProcessBuilder.PROCESS_NAME, null);
+ pm.startProcess(procID, null);
httpSession.setAttribute("procID", procID);
}
@@ -194,7 +194,7 @@
System.out.println("catchMessage: " + message);
}
- public ObjectName getMessageListenerID()
+ public ObjectName getID()
{
return listenerID;
}
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -28,13 +28,10 @@
import org.jboss.bpm.client.MessageListener;
import org.jboss.bpm.client.MessageManager;
import org.jboss.bpm.client.ObjectNameFactory;
-import org.jboss.bpm.client.SignalListener;
-import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Message;
import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.MessageBuilderFactory;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.Signal;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -45,6 +42,9 @@
*/
public abstract class AbstractAirticketTest extends DefaultEngineTestCase
{
+ private MessageManager messageManager = MessageManager.locateMessageManager();
+ private AirticketMessageListener msgListener;
+
@Override
public ObjectName getMessageListenerID()
{
@@ -55,46 +55,36 @@
protected void setUp() throws Exception
{
super.setUp();
+ msgListener = new AirticketMessageListener(getMessageListenerID());
+ messageManager.addMessageListener(msgListener);
+ }
- // Add a signal listener
- SignalListener sl = new SignalListener()
- {
- public void catchSignal(Signal signal)
- {
- // System.out.println(signal);
- }
- };
- SignalManager engine = SignalManager.locateSignalManager();
- engine.addSignalListener("Airticket", sl);
+ @Override
+ protected void tearDown() throws Exception
+ {
+ messageManager.removeMessageListener(getMessageListenerID());
+ super.tearDown();
}
protected void runProcessInvalidData(Process proc)
{
- MessageManager mm = MessageManager.locateMessageManager();
- AirticketMessageListener msgListener = new AirticketMessageListener(getMessageListenerID());
- mm.addMessageListener(msgListener);
-
- mm.sendMessage(proc.getID(), "ReceiveReq", getInvalidRequestMessage());
+ messageManager.sendMessage(proc.getID(), AirticketProcessBuilder.TASK_RECEIVE_REQUEST, getInvalidRequestMessage());
proc.waitForEnd();
Message confirmMessage = msgListener.getConfirmMessage();
assertNotNull("Expected confirm message", confirmMessage);
- String price = confirmMessage.getPropertyValue("Price");
+ String price = confirmMessage.getPropertyValue(AirticketProcessBuilder.PROPERTY_PRICE);
assertEquals("222", price);
}
protected void runProcessValidData(Process proc)
{
- MessageManager mm = MessageManager.locateMessageManager();
- AirticketMessageListener msgListener = new AirticketMessageListener(getMessageListenerID());
- mm.addMessageListener(msgListener);
-
- mm.sendMessage(proc.getID(), "ReceiveReq", getValidRequestMessage());
+ messageManager.sendMessage(proc.getID(), AirticketProcessBuilder.TASK_RECEIVE_REQUEST, getValidRequestMessage());
proc.waitForEnd();
Message confirmMessage = msgListener.getConfirmMessage();
assertNotNull("Expected confirm message", confirmMessage);
- String price = confirmMessage.getPropertyValue("Price");
+ String price = confirmMessage.getPropertyValue(AirticketProcessBuilder.PROPERTY_PRICE);
assertEquals("222", price);
}
@@ -102,12 +92,12 @@
{
MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("ReqDataMsg").
- addProperty("Name", "Kermit").
- addProperty("From", "MUC").
- addProperty("To", "NYC").
- addProperty("Date", "25-Jul-2008").
- addProperty("Seats", "2").getMessage();
+ Message msg = msgBuilder.newMessage(AirticketProcessBuilder.MESSAGE_REQ_DATA).
+ addProperty(AirticketProcessBuilder.PROPERTY_NAME, "Kermit").
+ addProperty(AirticketProcessBuilder.PROPERTY_FROM, "MUC").
+ addProperty(AirticketProcessBuilder.PROPERTY_TO, "NYC").
+ addProperty(AirticketProcessBuilder.PROPERTY_DATE, "25-Jul-2008").
+ addProperty(AirticketProcessBuilder.PROPERTY_SEATS, "2").getMessage();
return msg;
}
@@ -115,13 +105,12 @@
{
MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("ReqDataMsg").
- addToRef(getMessageListenerID()).
- addProperty("Name", "Kermit").
- addProperty("From", "MUC").
- addProperty("To", "NYC").
- addProperty("Date", "25-Jul-2008").
- addProperty("Seats", "0"). // Invalid number of seats
+ Message msg = msgBuilder.newMessage(AirticketProcessBuilder.MESSAGE_REQ_DATA).
+ addProperty(AirticketProcessBuilder.PROPERTY_NAME, "Kermit").
+ addProperty(AirticketProcessBuilder.PROPERTY_FROM, "MUC").
+ addProperty(AirticketProcessBuilder.PROPERTY_TO, "NYC").
+ addProperty(AirticketProcessBuilder.PROPERTY_DATE, "25-Jul-2008").
+ addProperty(AirticketProcessBuilder.PROPERTY_SEATS, "0"). // Invalid number of seats
getMessage();
return msg;
}
@@ -130,10 +119,10 @@
{
MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("AcceptOfferMsg").
- addProperty("CreditCard", "1234-1234-1234-1234").
- addProperty("Expire", "25-Jul-2012").
- addProperty("isOfferAccepted", "true").
+ Message msg = msgBuilder.newMessage(AirticketProcessBuilder.MESSAGE_ACCEPT_OFFER).
+ addProperty(AirticketProcessBuilder.PROPERTY_CREDIT_CARD, "1234-1234-1234-1234").
+ addProperty(AirticketProcessBuilder.PROPERTY_EXPIRE, "25-Jul-2012").
+ addProperty(AirticketProcessBuilder.PROPERTY_IS_OFFER_ACCEPTED, "true").
getMessage();
return msg;
}
@@ -155,17 +144,18 @@
public void catchMessage(Message msg)
{
+ log.debug("catchMessage: " + msg);
ObjectName procID = msg.getFrom().getProcess().getID();
MessageManager mm = MessageManager.locateMessageManager();
- if (msg.getName().equals("InvalidDataMsg"))
- mm.sendMessage(procID, "ReceiveReq", getValidRequestMessage());
- else if (msg.getName().equals("OfferMsg"))
- mm.sendMessage(procID, "ReceiveOrder", getAcceptOfferMessage());
- else if (msg.getName().equals("ConfirmMsg"))
+ if (msg.getName().equals(AirticketProcessBuilder.MESSAGE_INVALID_DATA))
+ mm.sendMessage(procID, AirticketProcessBuilder.TASK_RECEIVE_REQUEST, getValidRequestMessage());
+ else if (msg.getName().equals(AirticketProcessBuilder.MESSAGE_OFFER))
+ mm.sendMessage(procID, AirticketProcessBuilder.TASK_RECEIVE_ORDER, getAcceptOfferMessage());
+ else if (msg.getName().equals(AirticketProcessBuilder.MESSAGE_CONFIRM))
confirmMessage = msg;
}
- public ObjectName getMessageListenerID()
+ public ObjectName getID()
{
return listenerID;
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -28,6 +28,7 @@
import org.jboss.bpm.EngineShutdownException;
import org.jboss.bpm.client.ProcessEngine;
import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -58,7 +59,8 @@
{
// Create a Process through the ProcessManager
ProcessManager pm = ProcessManager.locateProcessManager();
- assertNotNull("Process expected", pm.createProcess(jpdlURL));
+ Process proc = pm.createProcess(jpdlURL);
+ assertNotNull("Process expected", proc);
// Try to create a Process during shutdown
try
@@ -70,5 +72,9 @@
{
assertEquals("Cannot create new Process while engine is shutting down", ex.getMessage());
}
+ finally
+ {
+ pm.destroyProcess(proc);
+ }
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -54,7 +54,7 @@
{
super.setUp();
signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), this);
+ signalManager.addSignalListener(getName(), getSignalListener());
}
public void testGateA() throws Exception
@@ -63,11 +63,11 @@
proc.startProcess();
// Add a signal listener that sends the other start trigger signal
- Signal startTrigger = new Signal(getName(), SignalType.START_TRIGGER, "B");
+ Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
// Send start trigger signal
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.START_TRIGGER, "A"));
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
// Wait for the process to end
proc.waitForEnd();
@@ -82,11 +82,11 @@
proc.startProcess();
// Add a signal listener that sends the other start trigger signal
- Signal startTrigger = new Signal(getName(), SignalType.START_TRIGGER, "A");
+ Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
// Send start trigger signal
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.START_TRIGGER, "B"));
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B"));
// Wait for the process to end
proc.waitForEnd();
@@ -99,10 +99,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.START_TRIGGER, "A").addSequenceFlow("TaskA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.START_TRIGGER, "B").addSequenceFlow("TaskB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
@@ -124,7 +124,7 @@
public void catchSignal(Signal signal)
{
- if (signal.getType() == SignalType.ENTER_GATEWAY)
+ if (signal.getType() == SignalType.SYSTEM_GATEWAY_ENTER)
{
if (nextSignal != null)
{
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -50,7 +50,7 @@
{
super.setUp();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), this);
+ signalManager.addSignalListener(getName(), getSignalListener());
}
public void testGateA() throws Exception
@@ -62,7 +62,7 @@
proc.startProcess(att);
proc.waitForEnd();
- List<Signal> endSignals = getSignals(Signal.SignalType.EXIT_END_EVENT);
+ List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
assertEquals("EndA", endSignals.get(0).getFromRef());
}
@@ -76,7 +76,7 @@
proc.startProcess(att);
proc.waitForEnd();
- List<Signal> endSignals = getSignals(Signal.SignalType.EXIT_END_EVENT);
+ List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
assertEquals("EndB", endSignals.get(0).getFromRef());
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -41,7 +41,7 @@
{
super.setUp();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), this);
+ signalManager.addSignalListener(getName(), getSignalListener());
}
public void testGateA() throws Exception
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -40,7 +40,7 @@
{
super.setUp();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), this);
+ signalManager.addSignalListener(getName(), getSignalListener());
}
public void testGateA() throws Exception
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -41,7 +41,7 @@
{
super.setUp();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), this);
+ signalManager.addSignalListener(getName(), getSignalListener());
}
public void testGateA() throws Exception
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -48,7 +48,7 @@
{
super.setUp();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), this);
+ signalManager.addSignalListener(getName(), getSignalListener());
}
public void testParallelSplit() throws Exception
@@ -58,7 +58,7 @@
proc.waitForEnd();
// Validate received signals
- List<Signal> signals = getSignals(SignalType.ENTER_END_EVENT);
+ List<Signal> signals = getSignals(SignalType.SYSTEM_END_EVENT_ENTER);
assertEquals(2, signals.size());
String fromRefs = signals.get(0).getFromRef() + signals.get(1).getFromRef();
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndA"));
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -43,6 +43,7 @@
Process proc = getProcess();
ObjectName procID = proc.getID();
assertEquals(procID, proc.startProcess());
+ proc.waitForEnd();
}
public void testStartTwice() throws Exception
@@ -50,7 +51,6 @@
Process proc = getProcess();
ObjectName procID = proc.getID();
assertEquals(procID, proc.startProcess());
-
try
{
proc.startProcess();
@@ -60,6 +60,7 @@
{
// expected;
}
+ proc.waitForEnd();
}
private Process getProcess()
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java (from rev 1877, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -0,0 +1,66 @@
+/*
+ * 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.jboss.bpm.cts.processmanager;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test the ProcessManager
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ProcessManagerTest extends DefaultEngineTestCase
+{
+ public void testStartProcess() throws Exception
+ {
+ Process proc = getProcess();
+ ObjectName procID = proc.getID();
+
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ assertNull("A process created through the builder is not registered automatically", pm.getProcessByID(procID));
+
+ // Start the process, which automatically adds it to the registery
+ assertEquals(procID, proc.startProcess());
+ assertNotNull(pm.getProcessByID(procID));
+
+ proc.waitForEnd();
+
+ assertNull("A terminated process is removed from the registry", pm.getProcessByID(procID));
+ }
+
+ private Process getProcess()
+ {
+ ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("taskA");
+ Process proc = builder.addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
+ return proc;
+ }
+}
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -1,82 +0,0 @@
-/*
- * 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.jboss.bpm.cts.processmanager;
-
-// $Id$
-
-import javax.management.ObjectName;
-
-import org.jboss.bpm.client.ProcessManager;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.test.DefaultEngineTestCase;
-
-/**
- * Test the ProcessRegistry
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public class ProcessRegistryTest extends DefaultEngineTestCase
-{
- public void testStartProcess() throws Exception
- {
- Process proc = getProcess();
- ObjectName procID = proc.getID();
-
- ProcessManager pm = ProcessManager.locateProcessManager();
- try
- {
- pm.getProcessByID(procID);
- fail("A process created through the builder is not registered automatically");
- }
- catch (RuntimeException ex)
- {
- // expected
- }
-
- // Start the process, which automatically adds it to the registery
- assertEquals(procID, proc.startProcess());
- assertNotNull(pm.getProcessByID(procID));
-
- proc.waitForEnd();
-
- try
- {
- pm.getProcessByID(procID);
- fail("A terminated process is removed from the registry");
- }
- catch (RuntimeException ex)
- {
- // expected
- }
- }
-
- private Process getProcess()
- {
- ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- Process proc = builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("taskA").
- addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
- return proc;
- }
-}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -48,7 +48,7 @@
{
super.setUp();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), this);
+ signalManager.addSignalListener(getName(), getSignalListener());
}
/**
@@ -86,13 +86,13 @@
// Validate received signals
List<Signal> signals = getSignals();
- assertEquals(Signal.SignalType.ENTER_PROCESS, signals.get(0).getType());
- assertEquals(Signal.SignalType.ENTER_START_EVENT, signals.get(1).getType());
- assertEquals(Signal.SignalType.EXIT_START_EVENT, signals.get(2).getType());
- assertEquals(Signal.SignalType.ENTER_TASK, signals.get(3).getType());
- assertEquals(Signal.SignalType.EXIT_TASK, signals.get(4).getType());
- assertEquals(Signal.SignalType.ENTER_END_EVENT, signals.get(5).getType());
- assertEquals(Signal.SignalType.EXIT_END_EVENT, signals.get(6).getType());
- assertEquals(Signal.SignalType.EXIT_PROCESS, signals.get(7).getType());
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getType());
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getType());
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java 2008-08-13 11:06:27 UTC (rev 1878)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java 2008-08-13 13:04:26 UTC (rev 1879)
@@ -48,7 +48,7 @@
{
super.setUp();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), this);
+ signalManager.addSignalListener(getName(), getSignalListener());
}
/**
@@ -86,13 +86,13 @@
// Validate received signals
List<Signal> signals = getSignals();
- assertEquals(Signal.SignalType.ENTER_PROCESS, signals.get(0).getType());
- assertEquals(Signal.SignalType.ENTER_START_EVENT, signals.get(1).getType());
- assertEquals(Signal.SignalType.EXIT_START_EVENT, signals.get(2).getType());
- assertEquals(Signal.SignalType.ENTER_TASK, signals.get(3).getType());
- assertEquals(Signal.SignalType.EXIT_TASK, signals.get(4).getType());
- assertEquals(Signal.SignalType.ENTER_END_EVENT, signals.get(5).getType());
- assertEquals(Signal.SignalType.EXIT_END_EVENT, signals.get(6).getType());
- assertEquals(Signal.SignalType.EXIT_PROCESS, signals.get(7).getType());
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getType());
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getType());
}
}
17 years, 8 months
JBoss JBPM SVN: r1878 - jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/model.
by do-not-reply@jboss.org
Author: porcherg
Date: 2008-08-13 07:06:27 -0400 (Wed, 13 Aug 2008)
New Revision: 1878
Modified:
jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
Log:
use equals instead of == to compare strings.
Modified: jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
+++ jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2008-08-13 11:06:27 UTC (rev 1878)
@@ -1204,8 +1204,8 @@
public void removeExecution(Execution child) {
if (executions!=null) {
if (executions.remove(child)) {
- if ( state==STATE_INACTIVE &&
- (executions.size()==0)
+ if ( state.equals(STATE_INACTIVE) &&
+ (executions.isEmpty())
) {
if (log.isTraceEnabled()) {
log.trace("last child execution was removed; unlocking");
17 years, 8 months
JBoss JBPM SVN: r1877 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/model and 16 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-12 10:30:22 -0400 (Tue, 12 Aug 2008)
New Revision: 1877
Added:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.bpmn_diagram
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.bpmn_diagram
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram
Removed:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngineLocator.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Executable.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowScheduler.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/MutableFlowScheduler.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowSchedulerImpl.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/cts-specification.txt
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn_diagram
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn_diagram
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn_diagram
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/parallelsplit/
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilderFactory.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilderFactory.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilderFactory.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/RuntimeProcess.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/RuntimeProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
Log:
Every Token is a task handled by the TokenExecutor
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ExecutionManager.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -49,19 +49,11 @@
}
/**
- * Get the ProcessEngine
- */
- public ProcessEngine getProcessEngine()
- {
- return ProcessEngineLocator.locateProcessEngine();
- }
-
- /**
* Locate the ExecutionManager
*/
public static ExecutionManager locateExecutionManager()
{
- ProcessEngine engine = ProcessEngineLocator.locateProcessEngine();
+ ProcessEngine engine = ProcessEngine.locateProcessEngine();
return engine.getExecutionManager();
}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -55,19 +55,11 @@
private Set<MessageListener> messageListeners = new HashSet<MessageListener>();
/**
- * Get the ProcessEngine
- */
- public ProcessEngine getProcessEngine()
- {
- return ProcessEngineLocator.locateProcessEngine();
- }
-
- /**
* Locate the MessageManager
*/
public static MessageManager locateMessageManager()
{
- ProcessEngine engine = ProcessEngineLocator.locateProcessEngine();
+ ProcessEngine engine = ProcessEngine.locateProcessEngine();
return engine.getMessageManager();
}
@@ -94,7 +86,7 @@
*/
public void sendMessage(ObjectName procID, String targetName, Message msg)
{
- ProcessManager pm = getProcessEngine().getProcessManager();
+ ProcessManager pm = ProcessManager.locateProcessManager();
Process proc = pm.getProcessByID(procID);
FlowObject target = proc.getFlowObject(targetName);
if (target == null)
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -21,7 +21,16 @@
*/
package org.jboss.bpm.client;
+import java.net.URL;
+import org.jboss.bpm.BPMException;
+import org.jboss.bpm.client.internal.EmbeddedBeansDeployer;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.util.KernelLocator;
+import org.jboss.kernel.spi.registry.KernelRegistryEntry;
+import org.jboss.kernel.spi.registry.KernelRegistryEntryNotFoundException;
+
+
// $Id$
/**
@@ -54,6 +63,49 @@
}
/**
+ * Locate the ProcessEngine instance shared by all clients.
+ *
+ * @return The configured instance of a process engine
+ */
+ @SuppressWarnings("deprecation")
+ public static ProcessEngine locateProcessEngine()
+ {
+ KernelRegistryEntry entry = null;
+ Kernel kernel = KernelLocator.getKernel();
+ if (kernel == null)
+ {
+ deployEngineConfiguration();
+ kernel = KernelLocator.getKernel();
+ entry = kernel.getRegistry().getEntry(ProcessEngine.BEAN_NAME);
+ }
+ else
+ {
+ try
+ {
+ entry = kernel.getRegistry().getEntry(ProcessEngine.BEAN_NAME);
+ }
+ catch (KernelRegistryEntryNotFoundException ex)
+ {
+ deployEngineConfiguration();
+ entry = kernel.getRegistry().getEntry(ProcessEngine.BEAN_NAME);
+ }
+ }
+
+ ProcessEngine engine = (ProcessEngine)entry.getTarget();
+ return engine;
+ }
+
+ private static void deployEngineConfiguration()
+ {
+ String config = ProcessEngine.JBPM_ENGINE_CONFIG;
+ URL url = Thread.currentThread().getContextClassLoader().getResource(config);
+ if (url == null)
+ throw new BPMException("Cannot find resource: " + config);
+
+ new EmbeddedBeansDeployer().deploy(url);
+ }
+
+ /**
* Prepare the engine for shutdown. During shutdown the creation of new processes is disallowed.
*/
public void prepareForShutdown()
Deleted: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngineLocator.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngineLocator.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngineLocator.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,90 +0,0 @@
-/*
- * 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.jboss.bpm.client;
-
-// $Id$
-
-import java.net.URL;
-
-import org.jboss.bpm.BPMException;
-import org.jboss.bpm.client.internal.EmbeddedBeansDeployer;
-import org.jboss.kernel.Kernel;
-import org.jboss.kernel.plugins.util.KernelLocator;
-import org.jboss.kernel.spi.registry.KernelRegistryEntry;
-import org.jboss.kernel.spi.registry.KernelRegistryEntryNotFoundException;
-
-/**
- * The ProcessEngineLocator is the main entry point for all client operations. It locates the process engine instance shared by all clients.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 18-Jun-2008
- */
-public abstract class ProcessEngineLocator
-{
- // Hide the constructor
- private ProcessEngineLocator()
- {
- }
-
- /**
- * Locate the ProcessEngine instance shared by all clients.
- *
- * @return The configured instance of a process engine
- */
- @SuppressWarnings("deprecation")
- public static ProcessEngine locateProcessEngine()
- {
- KernelRegistryEntry entry = null;
- Kernel kernel = KernelLocator.getKernel();
- if (kernel == null)
- {
- deployEngineConfiguration();
- kernel = KernelLocator.getKernel();
- entry = kernel.getRegistry().getEntry(ProcessEngine.BEAN_NAME);
- }
- else
- {
- try
- {
- entry = kernel.getRegistry().getEntry(ProcessEngine.BEAN_NAME);
- }
- catch (KernelRegistryEntryNotFoundException ex)
- {
- deployEngineConfiguration();
- entry = kernel.getRegistry().getEntry(ProcessEngine.BEAN_NAME);
- }
- }
-
- ProcessEngine engine = (ProcessEngine)entry.getTarget();
- return engine;
- }
-
- private static void deployEngineConfiguration()
- {
- String config = ProcessEngine.JBPM_ENGINE_CONFIG;
- URL url = Thread.currentThread().getContextClassLoader().getResource(config);
- if (url == null)
- throw new BPMException("Cannot find resource: " + config);
-
- new EmbeddedBeansDeployer().deploy(url);
- }
-}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -41,7 +41,7 @@
import org.jboss.bpm.BPMException;
import org.jboss.bpm.EngineShutdownException;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.Process.Status;
+import org.jboss.bpm.model.Process.ProcessStatus;
import org.jboss.bpm.runtime.Attachments;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -70,19 +70,11 @@
}
/**
- * Get the ProcessEngine
- */
- public ProcessEngine getProcessEngine()
- {
- return ProcessEngineLocator.locateProcessEngine();
- }
-
- /**
* Locate the ProcessManager
*/
public static ProcessManager locateProcessManager()
{
- ProcessEngine engine = ProcessEngineLocator.locateProcessEngine();
+ ProcessEngine engine = ProcessEngine.locateProcessEngine();
return engine.getProcessManager();
}
@@ -91,7 +83,7 @@
*/
public final Process createProcess(String pXML)
{
- if (getProcessEngine().isPrepareForShutdown())
+ if (ProcessEngine.locateProcessEngine().isPrepareForShutdown())
throw new EngineShutdownException("Cannot create new Process while engine is shutting down");
String nsURI = getNamespaceURI(new ByteArrayInputStream(pXML.getBytes()));
@@ -105,7 +97,7 @@
*/
public final Process createProcess(URL pURL) throws IOException
{
- if (getProcessEngine().isPrepareForShutdown())
+ if (ProcessEngine.locateProcessEngine().isPrepareForShutdown())
throw new EngineShutdownException("Cannot create new Process while engine is shutting down");
String nsURI = getNamespaceURI(pURL.openStream());
@@ -129,14 +121,14 @@
* @param status The optional process status
* @return An empty set if the process cannot be found
*/
- public Set<Process> getProcesses(String name, Process.Status status)
+ public Set<Process> getProcesses(String name, Process.ProcessStatus status)
{
Set<Process> procSet = new HashSet<Process>();
for (Process aux : procs)
{
if (aux.getName().equals(name))
{
- if (status == null || aux.getStatus() == status)
+ if (status == null || aux.getProcessStatus() == status)
procSet.add(aux);
}
}
@@ -168,9 +160,9 @@
}
/**
- * Remove a Process This is not part of the API.
+ * Destroy a Process.
*/
- protected void removeProcess(Process proc)
+ public void destroyProcess(Process proc)
{
procs.remove(proc);
}
@@ -209,7 +201,7 @@
* was aborted this method throws the causing RuntimeException if avaialable.
*
*/
- public abstract Status waitForEnd(ObjectName procID, long timeout);
+ public abstract ProcessStatus waitForEnd(ObjectName procID, long timeout);
/**
* Get the handler for the dialect with the given namespace URI
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -49,20 +49,12 @@
// The map of registered signal listeners
private Map<String, Set<SignalListener>> signalListeners = new HashMap<String, Set<SignalListener>>();
- /**
- * Get the ProcessEngine
- */
- public ProcessEngine getProcessEngine()
- {
- return ProcessEngineLocator.locateProcessEngine();
- }
-
/**
* Locate the SignalManager
*/
public static SignalManager locateSignalManager()
{
- ProcessEngine engine = ProcessEngineLocator.locateProcessEngine();
+ ProcessEngine engine = ProcessEngine.locateProcessEngine();
return engine.getSignalManager();
}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilderFactory.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilderFactory.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilderFactory.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -23,7 +23,7 @@
//$Id$
-import org.jboss.bpm.client.ProcessEngineLocator;
+import org.jboss.bpm.client.ProcessEngine;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.plugins.util.KernelLocator;
import org.jboss.kernel.spi.registry.KernelRegistryEntry;
@@ -51,7 +51,7 @@
public static MessageBuilderFactory newInstance()
{
// Make sure the engine is bootstrapped
- ProcessEngineLocator.locateProcessEngine();
+ ProcessEngine.locateProcessEngine();
Kernel kernel = KernelLocator.getKernel();
KernelRegistryEntry entry = kernel.getRegistry().getEntry(BEAN_NAME);
return (MessageBuilderFactory)entry.getTarget();
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -48,7 +48,7 @@
/**
* Defines the status a {@link Process} can be in
*/
- enum Status
+ enum ProcessStatus
{
None, Ready, Active, Cancelled, Aborting, Aborted, Completing, Completed
};
@@ -61,7 +61,7 @@
/**
* Get the process state
*/
- Status getStatus();
+ ProcessStatus getProcessStatus();
/**
* Get the list of flow objects
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilderFactory.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilderFactory.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilderFactory.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -23,7 +23,7 @@
//$Id$
-import org.jboss.bpm.client.ProcessEngineLocator;
+import org.jboss.bpm.client.ProcessEngine;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.plugins.util.KernelLocator;
import org.jboss.kernel.spi.registry.KernelRegistryEntry;
@@ -51,7 +51,7 @@
public static ProcessBuilderFactory newInstance()
{
// Make sure the engine is bootstrapped
- ProcessEngineLocator.locateProcessEngine();
+ ProcessEngine.locateProcessEngine();
Kernel kernel = KernelLocator.getKernel();
KernelRegistryEntry entry = kernel.getRegistry().getEntry(BEAN_NAME);
return (ProcessBuilderFactory)entry.getTarget();
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilderFactory.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilderFactory.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilderFactory.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -23,7 +23,7 @@
//$Id$
-import org.jboss.bpm.client.ProcessEngineLocator;
+import org.jboss.bpm.client.ProcessEngine;
import org.jboss.kernel.Kernel;
import org.jboss.kernel.plugins.util.KernelLocator;
import org.jboss.kernel.spi.registry.KernelRegistryEntry;
@@ -51,7 +51,7 @@
public static PropertyBuilderFactory newInstance()
{
// Make sure the engine is bootstrapped
- ProcessEngineLocator.locateProcessEngine();
+ ProcessEngine.locateProcessEngine();
Kernel kernel = KernelLocator.getKernel();
KernelRegistryEntry entry = kernel.getRegistry().getEntry(BEAN_NAME);
return (PropertyBuilderFactory)entry.getTarget();
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -46,8 +46,7 @@
ENTER_GATEWAY, EXIT_GATEWAY,
ENTER_PROCESS, EXIT_PROCESS,
ENTER_SUB_PROCESS, EXIT_SUB_PROCESS,
- ENTER_TASK, EXIT_TASK, TASK_TRIGGER,
- USER_SIGNAL
+ ENTER_TASK, EXIT_TASK, TASK_TRIGGER
}
private SignalType type;
Deleted: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Executable.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Executable.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Executable.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,40 +0,0 @@
-/*
- * 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.jboss.bpm.runtime;
-
-import org.jboss.bpm.model.FlowObject;
-
-//$Id$
-
-/**
- * Marks Flow Objects as executable.
- *
- * @author Thomas.Diesler(a)jboss.com
- * @since 20-Apr-2007
- */
-public interface Executable
-{
- /**
- * Engine calls this to execute the {@link FlowObject}
- */
- void execute(Token token);
-}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -40,8 +40,8 @@
* Execute the the FlowHandler.
* <p/>
* The FlowHandler will add the active outgoing {@link SequenceFlow}s to
- * the the {@link FlowScheduler} for the {@link ProcessEngine} to execute.
+ * the the {@link TokenExecutor} for the {@link ProcessEngine} to execute.
*/
- void execute(FlowScheduler scheduler, Token token);
+ void execute(TokenExecutor scheduler, Token token);
}
\ No newline at end of file
Deleted: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowScheduler.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowScheduler.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowScheduler.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,46 +0,0 @@
-/*
- * 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.jboss.bpm.runtime;
-
-//$Id$
-
-import org.jboss.bpm.model.ConnectingObject;
-
-/**
- * The {@link FlowHandler} invokes the FlowScheduler to schedule {@link Token}s
- * together with their associated {@link ConnectingObject}.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public interface FlowScheduler
-{
- /**
- * Start a given {@link Token} along a {@link ConnectingObject}.
- */
- void startToken(ConnectingObject flow, Token token);
-
- /**
- * Continue a given {@link Token} along a {@link ConnectingObject}.
- */
- void continueToken(ConnectingObject flow, Token token);
-}
Deleted: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/MutableFlowScheduler.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/MutableFlowScheduler.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/MutableFlowScheduler.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,44 +0,0 @@
-/*
- * 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.jboss.bpm.runtime;
-
-//$Id$
-
-
-/**
- * The {@link FlowScheduler} that can be manipulated.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public interface MutableFlowScheduler extends FlowScheduler
-{
- /**
- * Peek the head {@link Token}
- */
- Token peekHeadTuple();
-
- /**
- * Remove the head {@link Token}
- */
- Token removeHeadTuple();
-}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/RuntimeProcess.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/RuntimeProcess.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/RuntimeProcess.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -40,7 +40,7 @@
Process getProcess();
/**
- * Get the {@link FlowScheduler} for this {@link Process}
+ * Get the {@link TokenExecutor} for this {@link Process}
*/
- FlowScheduler getFlowScheduler();
+ TokenExecutor getTokenExecutor();
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -43,7 +43,17 @@
*/
public interface Token
{
+ public enum TokenStatus
+ {
+ Created, Started, Stoped, Destroyed, Suspended
+ }
+
/**
+ * Get the token status
+ */
+ TokenStatus getTokenStatus();
+
+ /**
* Get the unique token identity
*/
String getTokenID();
Copied: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java (from rev 1867, jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowScheduler.java)
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java (rev 0)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -0,0 +1,84 @@
+/*
+ * 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.jboss.bpm.runtime;
+
+//$Id$
+
+import java.util.Set;
+
+import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.SequenceFlow;
+
+/**
+ * The {@link FlowHandler} invokes the TokenExecutor to move {@link Token}s
+ * along the {@link SequenceFlow}s in the {@link Process}.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public interface TokenExecutor
+{
+ /**
+ * Get the set of active tokens
+ */
+ Set<Token> getActiveTokens();
+
+ /**
+ * True if there are active tokens
+ */
+ boolean hasActiveTokens();
+
+ /**
+ * Create a {@link Token} with an initial flow
+ */
+ void create(Token token, ConnectingObject flow);
+
+ /**
+ * Start a {@link Token}
+ */
+ void start(Token token);
+
+ /**
+ * Stop a {@link Token}
+ */
+ void stop(Token token);
+
+ /**
+ * Destroy a {@link Token}
+ */
+ void destroy(Token token);
+
+ /**
+ * Suspend a {@link Token}
+ */
+ String suspend(Token token);
+
+ /**
+ * Activate a {@link Token}
+ */
+ Token activate(String tokenID);
+
+ /**
+ * Move a given {@link Token} along a given flow.
+ */
+ void move(Token token, ConnectingObject flow);
+}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -73,6 +73,8 @@
{
log.debug("tearDown: " + getName());
undeployBeans(getBeansConfig());
+ //ProcessManager pm = ProcessManager.locateProcessManager();
+ //System.out.println("XXX " + pm.getProcesses());
super.tearDown();
}
@@ -113,7 +115,6 @@
public void catchSignal(Signal signal)
{
signals.add(signal);
- log.debug("catchSignal: " + signal);
}
public List<Signal> getSignals()
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -37,14 +37,17 @@
*/
public class ProcessIncludeTest extends DefaultEngineTestCase
{
+
public void testInclude() throws Exception
{
ProcessManager pm = ProcessManager.locateProcessManager();
Process proc = pm.createProcess(getResourceURL("include/proc-api10.xml"));
-
+
ReceiveTask recTask = (ReceiveTask)proc.getFlowObject("A");
Message msg = recTask.getMessageRef();
assertEquals("FooMsg", msg.getName());
assertEquals("bar", msg.getPropertyValue("foo"));
+
+ pm.destroyProcess(proc);
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -28,25 +28,19 @@
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.client.ExecutionManager;
import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.ConnectingObject;
-import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.StartEvent;
-import org.jboss.bpm.model.Process.Status;
+import org.jboss.bpm.model.Process.ProcessStatus;
import org.jboss.bpm.model.Signal.SignalType;
-import org.jboss.bpm.model.internal.FlowSchedulerImpl;
import org.jboss.bpm.model.internal.ProcessImpl;
import org.jboss.bpm.model.internal.RuntimeProcessImpl;
import org.jboss.bpm.model.internal.SequenceFlowImpl;
+import org.jboss.bpm.model.internal.TokenExecutorImpl;
import org.jboss.bpm.runtime.Attachments;
-import org.jboss.bpm.runtime.Executable;
-import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.HandlerSupport;
-import org.jboss.bpm.runtime.MutableFlowScheduler;
import org.jboss.bpm.runtime.RuntimeProcess;
-import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.internal.TokenImpl;
/**
@@ -63,92 +57,33 @@
@Override
public void startProcess(Process proc, Attachments att)
{
- ((ProcessImpl)proc).setStatus(Status.Active);
+ ((ProcessImpl)proc).setProcessStatus(ProcessStatus.Active);
+
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(proc.getName(), new Signal(proc.getName(), SignalType.ENTER_PROCESS));
- RuntimeProcessImpl rtProc = new RuntimeProcessImpl(proc);
- final ProcessRunner runner = new ProcessRunner(rtProc, att);
- FlowSchedulerImpl.StartCallback callback = new FlowSchedulerImpl.StartCallback()
+ final RuntimeProcessImpl rtProc = new RuntimeProcessImpl(proc);
+ final RunnableProcess runner = new RunnableProcess(rtProc, att);
+ TokenExecutorImpl.StartCallback callback = new TokenExecutorImpl.StartCallback()
{
public void start(Token token)
{
new Thread(runner).start();
}
};
- FlowSchedulerImpl flowScheduler = new FlowSchedulerImpl(callback);
- rtProc.setScheduler(flowScheduler);
+ TokenExecutor scheduler = new TokenExecutorImpl(rtProc, callback);
+ rtProc.setTokenExecutor(scheduler);
addRuntimeProcess(rtProc);
StartEvent start = getStartEvent(proc);
if (start != null)
{
- Token initalToken = new TokenImpl(att);
- flowScheduler.startToken(new InitialFlow(start), initalToken);
+ TokenImpl token = new TokenImpl(att);
+ scheduler.create(token, new InitialFlow(start));
+ scheduler.start(token);
}
}
- private void startProcessInternal(RuntimeProcess rtProc, Attachments att)
- {
- ProcessImpl proc = (ProcessImpl)rtProc.getProcess();
- String procName = proc.getName();
-
- SignalManager signalManager = getProcessEngine().getSignalManager();
- signalManager.throwSignal(procName, new Signal(procName, SignalType.ENTER_PROCESS));
- MutableFlowScheduler flowScheduler = (MutableFlowScheduler)rtProc.getFlowScheduler();
-
- try
- {
- while (flowScheduler.peekHeadTuple() != null)
- {
- // Peek the head flow
- Token token = flowScheduler.peekHeadTuple();
- ConnectingObject flow = token.getFlow();
-
- // Get the target and its handlers
- FlowObject target = (FlowObject)flow.getTargetRef();
- Executable executable = getExecutable(target);
- SignalHandler sigHandler = getSignalHandler(target);
- FlowHandler flowHandler = getFlowHandler(target);
-
- // Execute the FlowObject's ExecutionHandler
- try
- {
- signalManager.throwSignal(procName, sigHandler.getEnterSignal());
- executable.execute(token);
- }
- finally
- {
- signalManager.throwSignal(procName, sigHandler.getExitSignal());
- }
-
- // Remove the head tuple
- flowScheduler.removeHeadTuple();
-
- // Transfer the token to the FlowHandler
- flowHandler.execute(flowScheduler, token);
- }
- proc.setStatus(Status.Completed);
- }
- catch (RuntimeException rte)
- {
- log.error("Process aborted: " + proc, rte);
- proc.setStatus(Status.Aborted);
- proc.setRuntimeException(rte);
- }
- finally
- {
- signalManager.throwSignal(procName, new Signal(procName, Signal.SignalType.EXIT_PROCESS));
- removeRuntimeProcess(proc.getID());
- }
- }
-
- private Executable getExecutable(FlowObject target)
- {
- if (target instanceof Executable == false)
- throw new IllegalStateException("Flow Object is not executable: " + target);
-
- return (Executable)target;
- }
-
private StartEvent getStartEvent(Process proc)
{
StartEvent start = null;
@@ -164,35 +99,8 @@
return start;
}
- private SignalHandler getSignalHandler(FlowObject target)
- {
- HandlerSupport handlerSupport = getHandlerSupport(target);
- SignalHandler handler = handlerSupport.getSignalHandler();
- if (handler == null)
- throw new IllegalStateException("Cannot obtain signal handler from: " + target);
-
- return handler;
- }
-
- private FlowHandler getFlowHandler(FlowObject target)
- {
- HandlerSupport handlerSupport = getHandlerSupport(target);
- FlowHandler handler = handlerSupport.getFlowHandler();
- if (handler == null)
- throw new IllegalStateException("Cannot obtain flow handler from: " + target);
-
- return handler;
- }
-
- private HandlerSupport getHandlerSupport(FlowObject fo)
- {
- if (fo instanceof HandlerSupport == false)
- throw new IllegalStateException("Flow object does not implement handler support: " + fo);
- return (HandlerSupport)fo;
- }
-
/**
- * The initial flow 'to' the StartEvent
+ * The initial flow to the StartEvent
*/
@SuppressWarnings("serial")
class InitialFlow extends SequenceFlowImpl
@@ -203,13 +111,13 @@
setTargetRef(start);
}
}
-
- class ProcessRunner implements Runnable
+
+ class RunnableProcess implements Runnable
{
RuntimeProcess rtProc;
Attachments att;
- public ProcessRunner(RuntimeProcess rtProc, Attachments att)
+ public RunnableProcess(RuntimeProcess rtProc, Attachments att)
{
this.rtProc = rtProc;
this.att = att;
@@ -217,7 +125,33 @@
public void run()
{
- startProcessInternal(rtProc, att);
+ TokenExecutor scheduler = rtProc.getTokenExecutor();
+ ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
+ String procName = procImpl.getName();
+
+ ProcessStatus procStatus = procImpl.getProcessStatus();
+ try
+ {
+ while (procStatus == ProcessStatus.Active && scheduler.hasActiveTokens())
+ {
+ Thread.sleep(100);
+ procStatus = procImpl.getProcessStatus();
+ }
+ }
+ catch (InterruptedException ex)
+ {
+ log.error(ex);
+ }
+ finally
+ {
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(procName, new Signal(procName, Signal.SignalType.EXIT_PROCESS));
+
+ if (procStatus == ProcessStatus.Active)
+ procImpl.setProcessStatus(ProcessStatus.Completed);
+
+ removeRuntimeProcess(procImpl.getID());
+ }
}
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -37,7 +37,7 @@
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.internal.ProcessImpl;
-import org.jboss.bpm.model.Process.Status;
+import org.jboss.bpm.model.Process.ProcessStatus;
import org.jboss.bpm.runtime.Attachments;
/**
@@ -68,16 +68,9 @@
super.registerProcess(proc);
}
- // Provide public access
- @Override
- public void removeProcess(Process proc)
- {
- super.removeProcess(proc);
- }
-
public ObjectName startProcess(String name, Attachments att)
{
- Set<Process> procSet = getProcesses(name, Status.Ready);
+ Set<Process> procSet = getProcesses(name, ProcessStatus.Ready);
if (procSet.size() == 0)
throw new IllegalStateException("Cannot obtain process with name: " + name);
if (procSet.size() > 1)
@@ -93,19 +86,19 @@
registerProcess(proc.copyProcess());
// Start the process in a thread
- ExecutionManager exm = getProcessEngine().getExecutionManager();
+ ExecutionManager exm = ExecutionManager.locateExecutionManager();
exm.startProcess(proc, att);
return proc.getID();
}
@Override
- public Status waitForEnd(ObjectName procID, long timeout)
+ public ProcessStatus waitForEnd(ObjectName procID, long timeout)
{
- ProcessImpl proc = (ProcessImpl)getProcessByID(procID);
- Status status = proc.getStatus();
+ ProcessImpl procImpl = (ProcessImpl)getProcessByID(procID);
+ ProcessStatus status = procImpl.getProcessStatus();
- if (status == Status.None || status == Status.Ready)
+ if (status == ProcessStatus.None || status == ProcessStatus.Ready)
throw new IllegalStateException("Cannot wait for process in state: " + status);
// Wait a little for the process to end
@@ -116,14 +109,14 @@
{
while (forever || now < until)
{
- status = proc.getStatus();
- if (status == Status.Cancelled || status == Status.Completed)
+ status = procImpl.getProcessStatus();
+ if (status == ProcessStatus.Cancelled || status == ProcessStatus.Completed)
{
return status;
}
- else if (status == Status.Aborted)
+ else if (status == ProcessStatus.Aborted)
{
- RuntimeException rte = proc.getRuntimeException();
+ RuntimeException rte = procImpl.getRuntimeException();
if (rte == null)
return status;
else
@@ -140,7 +133,7 @@
finally
{
// Remove the process
- removeProcess(proc);
+ destroyProcess(procImpl);
}
// Throw timeout exception if it took too long
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -0,0 +1,153 @@
+/*
+ * 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.jboss.bpm.client.internal;
+
+// $Id$
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.Process.ProcessStatus;
+import org.jboss.bpm.model.internal.FlowObjectImpl;
+import org.jboss.bpm.model.internal.ProcessImpl;
+import org.jboss.bpm.runtime.FlowHandler;
+import org.jboss.bpm.runtime.HandlerSupport;
+import org.jboss.bpm.runtime.RuntimeProcess;
+import org.jboss.bpm.runtime.SignalHandler;
+import org.jboss.bpm.runtime.TokenExecutor;
+import org.jboss.bpm.runtime.Token.TokenStatus;
+import org.jboss.bpm.runtime.internal.TokenImpl;
+
+/**
+ * The RunnableToken implements the logic to move the token from one FlowObject to the next.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 18-Jun-2008
+ */
+public class RunnableToken implements Runnable
+{
+ // provide logging
+ private static final Log log = LogFactory.getLog(RunnableToken.class);
+
+ private RuntimeProcess rtProc;
+ private TokenImpl token;
+
+ public RunnableToken(RuntimeProcess rtProc, TokenImpl token)
+ {
+ this.rtProc = rtProc;
+ this.token = token;
+ }
+
+ public TokenImpl getToken()
+ {
+ return token;
+ }
+
+ public void run()
+ {
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ TokenExecutor scheduler = rtProc.getTokenExecutor();
+ ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
+
+ token.setTokenStatus(TokenStatus.Started);
+ try
+ {
+ ConnectingObject flow = token.getFlow();
+ if (flow == null)
+ throw new IllegalStateException("Cannot obtain initial flow");
+
+ TokenStatus tokStatus = token.getTokenStatus();
+ ProcessStatus procStatus = procImpl.getProcessStatus();
+ while (procStatus == ProcessStatus.Active && tokStatus == TokenStatus.Started)
+ {
+ flow = token.getFlow();
+
+ // Get the target and its handlers
+ FlowObjectImpl target = (FlowObjectImpl)flow.getTargetRef();
+ SignalHandler sigHandler = getSignalHandler(target);
+ FlowHandler flowHandler = getFlowHandler(target);
+
+ // Synchronize execution of the target and the flow handler
+ synchronized (rtProc)
+ {
+ // Execute the FlowObject
+ try
+ {
+ signalManager.throwSignal(procImpl.getName(), sigHandler.getEnterSignal());
+ target.execute(token);
+ }
+ finally
+ {
+ signalManager.throwSignal(procImpl.getName(), sigHandler.getExitSignal());
+ }
+
+ // Transfer the token to the FlowHandler
+ flowHandler.execute(scheduler, token);
+ }
+
+ tokStatus = token.getTokenStatus();
+ procStatus = procImpl.getProcessStatus();
+
+ // Make sure the next flow is different from the previous one
+ ConnectingObject nextFlow = token.getFlow();
+ if (tokStatus == TokenStatus.Started && nextFlow == flow)
+ throw new IllegalStateException("Flow handler did not move the token: " + target);
+ }
+ }
+ catch (RuntimeException rte)
+ {
+ log.error("Process aborted: " + procImpl, rte);
+ token.setTokenStatus(TokenStatus.Destroyed);
+ procImpl.setProcessStatus(ProcessStatus.Aborted);
+ procImpl.setRuntimeException(rte);
+ }
+ }
+
+ private SignalHandler getSignalHandler(FlowObject target)
+ {
+ HandlerSupport handlerSupport = getHandlerSupport(target);
+ SignalHandler handler = handlerSupport.getSignalHandler();
+ if (handler == null)
+ throw new IllegalStateException("Cannot obtain signal handler from: " + target);
+
+ return handler;
+ }
+
+ private FlowHandler getFlowHandler(FlowObject target)
+ {
+ HandlerSupport handlerSupport = getHandlerSupport(target);
+ FlowHandler handler = handlerSupport.getFlowHandler();
+ if (handler == null)
+ throw new IllegalStateException("Cannot obtain flow handler from: " + target);
+
+ return handler;
+ }
+
+ private HandlerSupport getHandlerSupport(FlowObject fo)
+ {
+ if (fo instanceof HandlerSupport == false)
+ throw new IllegalStateException("Flow object does not implement handler support: " + fo);
+ return (HandlerSupport)fo;
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -39,7 +39,7 @@
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.FlowScheduler;
+import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.MutablePropertySupport;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.internal.TokenImpl;
@@ -307,9 +307,9 @@
{
handler = new FlowHandler()
{
- public void execute(FlowScheduler scheduler, Token token)
+ public void execute(TokenExecutor scheduler, Token token)
{
- scheduler.continueToken(outFlow, token);
+ scheduler.move(token, outFlow);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -32,7 +32,7 @@
import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.FlowScheduler;
+import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
@@ -84,9 +84,10 @@
{
handler = new FlowHandler()
{
- public void execute(FlowScheduler scheduler, Token token)
+ public void execute(TokenExecutor scheduler, Token token)
{
log.debug("End reached in: " + getName());
+ scheduler.destroy(token);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -24,7 +24,9 @@
//$Id$
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,12 +34,13 @@
import org.jboss.bpm.model.ExclusiveGateway;
import org.jboss.bpm.model.Expression;
import org.jboss.bpm.model.Gate;
+import org.jboss.bpm.model.GraphicalElement;
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Expression.ExpressionLanguage;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.FlowScheduler;
+import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.Attachments.Key;
import org.mvel.MVEL;
@@ -55,6 +58,9 @@
// provide logging
private static final Log log = LogFactory.getLog(ExclusiveGatewayImpl.class);
+ // Sync management
+ private Set<ConnectingObject> outstandingFlows;
+
public ExclusiveGatewayImpl(String name)
{
super(name);
@@ -72,6 +78,19 @@
}
@Override
+ public void execute(Token token)
+ {
+ super.execute(token);
+
+ // Multiple incomingFlows must be synchronized
+ if (outstandingFlows == null)
+ outstandingFlows = new HashSet<ConnectingObject>(inFlows);
+
+ ConnectingObject flow = token.getFlow();
+ outstandingFlows.remove(flow);
+ }
+
+ @Override
public FlowHandler getFlowHandler()
{
FlowHandler handler = super.getFlowHandler();
@@ -79,26 +98,29 @@
{
handler = new FlowHandler()
{
- public void execute(FlowScheduler scheduler, Token token)
+ public void execute(TokenExecutor scheduler, Token token)
{
+ GraphicalElement sourceRef = token.getFlow().getSourceRef();
+
// Schedule the first token that arrives
- if (receivedTokens.size() == 1)
+ if (token == receivedTokens.get(0))
{
+ log.debug("Propagate token comming from: " + sourceRef);
Gate selectedGate = getSelectedGate(token);
SequenceFlow outFlow = selectedGate.getOutgoingSequenceFlow();
- scheduler.continueToken(outFlow, token);
+ scheduler.move(token, outFlow);
}
// Ignore all other tokens
else
{
- log.debug("Ignore token: " + token);
+ log.debug("Ignore token comming from: " + sourceRef);
+ scheduler.destroy(token);
}
// Reset the gateway
- if (expectedFlows.size() == 0)
+ if (outstandingFlows.size() == 0)
{
- expectedFlows.addAll(inFlows);
- receivedTokens.clear();
+ resetGateway();
}
}
};
@@ -106,6 +128,13 @@
return handler;
}
+ @Override
+ protected void resetGateway()
+ {
+ super.resetGateway();
+ outstandingFlows = null;
+ }
+
// Get a single selected gate which' condition evaluates to TRUE
// Fall back to the default gate if there is one
// Choke if there is no selected gate
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -33,7 +33,6 @@
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.SingleInFlowSupport;
import org.jboss.bpm.model.SingleOutFlowSupport;
-import org.jboss.bpm.runtime.Executable;
import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.SignalHandler;
@@ -48,7 +47,7 @@
* @since 08-Jul-2008
*/
@SuppressWarnings("serial")
-public abstract class FlowObjectImpl extends GraphicalElementImpl implements FlowObject, HandlerSetterSupport, Executable
+public abstract class FlowObjectImpl extends GraphicalElementImpl implements FlowObject, HandlerSetterSupport
{
private String name;
private Process proc;
Deleted: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowSchedulerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowSchedulerImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowSchedulerImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,83 +0,0 @@
-/*
- * 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.jboss.bpm.model.internal;
-
-//$Id$
-
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-import org.jboss.bpm.model.ConnectingObject;
-import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.MutableFlowScheduler;
-import org.jboss.bpm.runtime.Token;
-import org.jboss.bpm.runtime.internal.TokenImpl;
-
-/**
- * The {@link FlowHandler} invokes the FlowScheduler to schedule
- * {@link ConnectingObject} objects together with their associated {@link Token}.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public class FlowSchedulerImpl implements MutableFlowScheduler
-{
- private Queue<Token> flowQueue = new ConcurrentLinkedQueue<Token>();
- private StartCallback startCallback;
-
- public FlowSchedulerImpl(StartCallback startCallback)
- {
- this.startCallback = startCallback;
- }
-
- public void startToken(ConnectingObject flow, Token token)
- {
- TokenImpl tokenImpl = (TokenImpl)token;
- tokenImpl.setFlow(flow);
- flowQueue.add(tokenImpl);
-
- if (startCallback != null)
- startCallback.start(token);
- }
-
- public void continueToken(ConnectingObject flow, Token token)
- {
- TokenImpl tokenImpl = (TokenImpl)token;
- tokenImpl.setFlow(flow);
- flowQueue.add(tokenImpl);
- }
-
- public Token peekHeadTuple()
- {
- return flowQueue.peek();
- }
-
- public Token removeHeadTuple()
- {
- return flowQueue.remove();
- }
-
- public interface StartCallback
- {
- void start(Token token);
- }
-}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -29,8 +29,6 @@
import java.util.List;
import java.util.Map;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.Gate;
import org.jboss.bpm.model.Gateway;
@@ -51,9 +49,6 @@
@SuppressWarnings("serial")
public abstract class GatewayImpl extends FlowObjectImpl implements Gateway, MultipleInFlowSetterSupport
{
- // provide logging
- private static final Log log = LogFactory.getLog(GatewayImpl.class);
-
// The list of incomming flows
protected List<ConnectingObject> inFlows = new ArrayList<ConnectingObject>();
// The list of outgoing gates
@@ -127,7 +122,8 @@
// Call execution handler
ExecutionHandler exHandler = getExecutionHandler();
- exHandler.execute(token);
+ if (exHandler != null)
+ exHandler.execute(token);
// Remove the flow from the expected list
expectedFlows.remove(flow);
@@ -136,22 +132,13 @@
receivedTokens.add(token);
}
- public ExecutionHandler getExecutionHandler()
+ // Reset the gateway
+ protected void resetGateway()
{
- ExecutionHandler handler = super.getExecutionHandler();
- if (handler == null)
- {
- handler = new ExecutionHandler()
- {
- public void execute(Token token)
- {
- log.debug("Nothing to do in gateway: " + getName());
- }
- };
- }
- return handler;
+ expectedFlows = null;
+ receivedTokens = null;
}
-
+
public SignalHandler getSignalHandler()
{
SignalHandler handler = super.getSignalHandler();
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -23,16 +23,13 @@
//$Id$
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.FlowScheduler;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
/**
* An Intermediate Event is an Event that occurs after a Process has been started. It will affect the Flow of the Process, but will not start or (directly) terminate
@@ -45,9 +42,6 @@
@SuppressWarnings("serial")
public class IntermediateEventImpl extends EventImpl implements IntermediateEvent, SingleInFlowSetterSupport, SingleOutFlowSetterSupport
{
- // provide logging
- private static final Log log = LogFactory.getLog(IntermediateEventImpl.class);
-
private ConnectingObject inFlow;
private ConnectingObject outFlow;
@@ -76,22 +70,6 @@
this.outFlow = flow;
}
- public ExecutionHandler getExecutionHandler()
- {
- ExecutionHandler handler = super.getExecutionHandler();
- if (handler == null)
- {
- handler = new ExecutionHandler()
- {
- public void execute(Token token)
- {
- log.debug("Nothing to do in event");
- }
- };
- }
- return handler;
- }
-
public FlowHandler getFlowHandler()
{
FlowHandler handler = super.getFlowHandler();
@@ -99,9 +77,9 @@
{
handler = new FlowHandler()
{
- public void execute(FlowScheduler scheduler, Token token)
+ public void execute(TokenExecutor scheduler, Token token)
{
- scheduler.continueToken(getOutFlow(), token);
+ scheduler.move(token, getOutFlow());
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -30,19 +30,18 @@
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.Gate;
+import org.jboss.bpm.model.Gateway;
import org.jboss.bpm.model.GraphicalElement;
import org.jboss.bpm.model.NameSupport;
import org.jboss.bpm.model.ParallelGateway;
import org.jboss.bpm.model.SequenceFlow;
-import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.FlowScheduler;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.internal.TokenImpl;
-
/**
- * Parallel Gateway is required when two or more Activities need to be executed in parallel.
+ * Parallel Gateway is required when two or more Activities need to be executed in parallel.
*
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
@@ -66,10 +65,12 @@
{
return GatewayType.Parallel;
}
-
+
@Override
public void execute(Token token)
{
+ super.execute(token);
+
// Multiple incomingFlows must be synchronized
if (getInFlows().size() > 1)
{
@@ -85,38 +86,38 @@
if (outstandingFlows.size() > 0)
mergeTokens.add(token);
}
+ }
- // Call the execution handler with the InputSet
- ExecutionHandler handler = getExecutionHandler();
- if (handler != null)
- {
- handler.execute(token);
- }
- }
-
public FlowHandler getFlowHandler()
{
FlowHandler handler = super.getFlowHandler();
- if (handler == null && getGates().size() == 1)
+ if (handler == null)
{
- Gate onlyGate = getGates().iterator().next();
- final SequenceFlow outFlow = onlyGate.getOutgoingSequenceFlow();
+ final Gateway gateway = this;
+
handler = new FlowHandler()
{
- public void execute(FlowScheduler scheduler, Token token)
+ public void execute(TokenExecutor scheduler, Token token)
{
- if (getInFlows().size() > 1)
+ // In any case the in token is not propagated
+ scheduler.suspend(token);
+
+ // If the gateway has a single incomming flow the out token is the in token
+ Token outToken = (getInFlows().size() == 1 ? token : null);
+
+ // The out token is the merge of all in tokens
+ if (outToken == null)
{
+ // If there are no more outstanding flows
if (outstandingFlows.size() == 0)
{
- Token mergedToken = mergeTokens(token);
- scheduler.continueToken(outFlow, mergedToken);
- outstandingFlows = null;
- mergeTokens = null;
+ // Merge the tokens together and submit the merged tokens
+ outToken = mergeTokens(token);
}
- else
+
+ // There are outstanding flows
+ else if (outstandingFlows.size() > 0)
{
- // Log the list of outstanding flows
Set<String> sourceNames = new HashSet<String>();
for (ConnectingObject flow : outstandingFlows)
{
@@ -126,33 +127,45 @@
else
sourceNames.add(sourceRef.getID().getCanonicalName());
}
- log.debug("Waiting for " + outstandingFlows + " in gateway: " + sourceNames);
+ log.debug("Waiting for [" + sourceNames + "] in gateway: " + gateway);
}
}
- else
+
+ // Schedule the out token
+ if (outToken != null)
{
- scheduler.continueToken(outFlow, token);
+ // Start a copy of the out token for every gate
+ for(Gate gate : getGates())
+ {
+ SequenceFlow outFlow = gate.getOutgoingSequenceFlow();
+ Token copyToken = outToken.copyToken();
+ scheduler.create(copyToken, outFlow);
+ scheduler.start(copyToken);
+ }
+
+ // Destroy the received tokens
+ for (Token auxToken : receivedTokens)
+ {
+ scheduler.destroy(auxToken);
+ }
+
+ // Reset the gateway
+ resetGateway();
}
}
};
}
- else if (handler == null && getGates().size() > 1)
- {
- handler = new FlowHandler()
- {
- public void execute(FlowScheduler scheduler, Token token)
- {
- for(Gate gate : getGates())
- {
- SequenceFlow outFlow = gate.getOutgoingSequenceFlow();
- scheduler.startToken(outFlow, token.copyToken());
- }
- }
- };
- }
return handler;
}
+ @Override
+ protected void resetGateway()
+ {
+ super.resetGateway();
+ outstandingFlows = null;
+ mergeTokens = null;
+ }
+
private Token mergeTokens(Token token)
{
TokenImpl mergedToken = new TokenImpl(null);
@@ -161,7 +174,7 @@
return mergedToken;
}
-
+
public String toString()
{
return "ParallelGateway[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -67,7 +67,7 @@
// The process properties
private List<Property> props = new ArrayList<Property>();
// the status of the process
- private Status status = Status.None;
+ private ProcessStatus status = ProcessStatus.None;
// The possible exception that caused the process to abort
private RuntimeException runtimeException;
@@ -160,7 +160,7 @@
public List<FlowObject> getFlowObjects()
{
- if (status == Status.None)
+ if (status == ProcessStatus.None)
return flowObjects;
return Collections.unmodifiableList(flowObjects);
@@ -197,8 +197,8 @@
{
ProcessManagerImpl pm = (ProcessManagerImpl)ProcessManager.locateProcessManager();
- if (getStatus() != Status.Ready)
- throw new IllegalStateException("Cannot start process in state: " + getStatus());
+ if (getProcessStatus() != ProcessStatus.Ready)
+ throw new IllegalStateException("Cannot start process in state: " + getProcessStatus());
// Register the process if needed
if (pm.getProcesses(getName(), null).size() == 0)
@@ -254,12 +254,12 @@
return retFlowObjects;
}
- public Status getStatus()
+ public ProcessStatus getProcessStatus()
{
return status;
}
- public void setStatus(Status status)
+ public void setProcessStatus(ProcessStatus status)
{
this.status = status;
}
@@ -289,7 +289,7 @@
public void initialize()
{
- if (status != Status.None)
+ if (status != ProcessStatus.None)
throw new IllegalStateException("Cannot initialize process in state: " + status);
// Initialize the Element
@@ -314,7 +314,7 @@
((FlowObjectImpl)aux).initialize(this);
}
- status = Status.Ready;
+ status = ProcessStatus.Ready;
}
public String toString()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/RuntimeProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/RuntimeProcessImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/RuntimeProcessImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -24,7 +24,7 @@
//$Id$
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.runtime.FlowScheduler;
+import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.RuntimeProcess;
/**
@@ -36,7 +36,7 @@
public class RuntimeProcessImpl implements RuntimeProcess
{
private Process process;
- private FlowScheduler scheduler;
+ private TokenExecutor tokenExecutor;
public RuntimeProcessImpl(Process process)
{
@@ -48,13 +48,13 @@
return process;
}
- public FlowScheduler getFlowScheduler()
+ public TokenExecutor getTokenExecutor()
{
- return scheduler;
+ return tokenExecutor;
}
- public void setScheduler(FlowScheduler scheduler)
+ public void setTokenExecutor(TokenExecutor tokenExecutor)
{
- this.scheduler = scheduler;
+ this.tokenExecutor = tokenExecutor;
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -38,12 +38,12 @@
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.SignalEventDetail;
import org.jboss.bpm.model.StartEvent;
-import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.model.Process.ProcessStatus;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.FlowScheduler;
import org.jboss.bpm.runtime.RuntimeProcess;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.internal.TokenImpl;
/**
@@ -95,22 +95,6 @@
this.outFlow = flow;
}
- public ExecutionHandler getExecutionHandler()
- {
- ExecutionHandler handler = super.getExecutionHandler();
- if (handler == null)
- {
- handler = new ExecutionHandler()
- {
- public void execute(Token token)
- {
- log.debug("Nothing to do in start-event");
- }
- };
- }
- return handler;
- }
-
public FlowHandler getFlowHandler()
{
FlowHandler handler = super.getFlowHandler();
@@ -118,9 +102,9 @@
{
handler = new FlowHandler()
{
- public void execute(FlowScheduler scheduler, Token token)
+ public void execute(TokenExecutor scheduler, Token token)
{
- scheduler.continueToken(outFlow, token);
+ scheduler.move(token, outFlow);
}
};
}
@@ -149,7 +133,7 @@
}
@Override
- protected void initialize(Process proc)
+ protected void initialize(final Process proc)
{
super.initialize(proc);
@@ -163,16 +147,20 @@
{
if (startSignal.getType() == signal.getType() && startSignal.getMessage().equals(signal.getMessage()))
{
- log.debug("Start process from signal: " + signal);
-
- Token initalToken = new TokenImpl(null);
- SequenceFlowImpl seqFlow = new SequenceFlowImpl(start.getName());
- seqFlow.setTargetRef(start);
-
- ExecutionManager exManager = ExecutionManager.locateExecutionManager();
- RuntimeProcess rtProc = exManager.getRuntimeProcess(start.getProcess().getID());
- FlowScheduler flowScheduler = rtProc.getFlowScheduler();
- flowScheduler.startToken(seqFlow, initalToken);
+ if (proc.getProcessStatus() == ProcessStatus.Active)
+ {
+ log.debug("Start process from signal: " + signal);
+ ExecutionManager exManager = ExecutionManager.locateExecutionManager();
+ RuntimeProcess rtProc = exManager.getRuntimeProcess(start.getProcess().getID());
+ TokenExecutor scheduler = rtProc.getTokenExecutor();
+ TokenImpl token = new TokenImpl(null);
+ scheduler.create(token, getOutFlow());
+ scheduler.start(token);
+ }
+ else
+ {
+ log.debug("Ignore start signal for process: " + proc);
+ }
}
}
};
Copied: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java (from rev 1867, jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowSchedulerImpl.java)
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -0,0 +1,145 @@
+/*
+ * 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.jboss.bpm.model.internal;
+
+//$Id$
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.client.internal.RunnableToken;
+import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Process.ProcessStatus;
+import org.jboss.bpm.runtime.FlowHandler;
+import org.jboss.bpm.runtime.RuntimeProcess;
+import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
+import org.jboss.bpm.runtime.Token.TokenStatus;
+import org.jboss.bpm.runtime.internal.TokenImpl;
+
+/**
+ * The {@link FlowHandler} invokes the TokenExecutor to schedule
+ * {@link ConnectingObject} objects together with their associated {@link Token}.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class TokenExecutorImpl implements TokenExecutor
+{
+ public interface StartCallback
+ {
+ void start(Token token);
+ }
+
+ private RuntimeProcess rtProc;
+ private ExecutorService executor = Executors.newCachedThreadPool();
+ private Map<String, RunnableToken> activeTokens = new HashMap<String, RunnableToken>();
+ private StartCallback startCallback;
+
+ public TokenExecutorImpl(RuntimeProcess rtProc, StartCallback startCallback)
+ {
+ this.rtProc = rtProc;
+ this.startCallback = startCallback;
+ }
+
+ public Set<Token> getActiveTokens()
+ {
+ Set<Token> tokens = new HashSet<Token>();
+ for (RunnableToken rt : activeTokens.values())
+ tokens.add(rt.getToken());
+
+ return Collections.unmodifiableSet(tokens);
+ }
+
+ public boolean hasActiveTokens()
+ {
+ return activeTokens.size() > 0;
+ }
+
+ public void create(Token token, ConnectingObject initialFlow)
+ {
+ TokenImpl tokenImpl = (TokenImpl)token;
+ tokenImpl.setFlow(initialFlow);
+ RunnableToken rtToken = new RunnableToken(rtProc, tokenImpl);
+ activeTokens.put(token.getTokenID(), rtToken);
+ }
+
+ public void start(Token token)
+ {
+ Process proc = rtProc.getProcess();
+ if (proc.getProcessStatus() != ProcessStatus.Active)
+ throw new IllegalStateException("Cannot start token to process in state: " + proc.getProcessStatus());
+
+ TokenImpl tokenImpl = (TokenImpl)token;
+ tokenImpl.setTokenStatus(TokenStatus.Started);
+
+ if (startCallback != null)
+ {
+ startCallback.start(token);
+ startCallback = null;
+ }
+
+ RunnableToken rtToken = activeTokens.get(token.getTokenID());
+ executor.submit(rtToken);
+ }
+
+ public void move(Token token, ConnectingObject flow)
+ {
+ if (flow == null)
+ throw new IllegalArgumentException("Flow cannot be null");
+
+ TokenImpl tokenImpl = (TokenImpl)token;
+ tokenImpl.setFlow(flow);
+ }
+
+ public void stop(Token token)
+ {
+ TokenImpl tokenImpl = (TokenImpl)token;
+ tokenImpl.setTokenStatus(TokenStatus.Stoped);
+ }
+
+ public void destroy(Token token)
+ {
+ TokenImpl tokenImpl = (TokenImpl)token;
+ tokenImpl.setTokenStatus(TokenStatus.Destroyed);
+ activeTokens.remove(token.getTokenID());
+ }
+
+ public String suspend(Token token)
+ {
+ TokenImpl tokenImpl = (TokenImpl)token;
+ tokenImpl.setTokenStatus(TokenStatus.Suspended);
+ return token.getTokenID();
+ }
+
+ public Token activate(String tokenID)
+ {
+ throw new NotImplementedException();
+ }
+}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -53,6 +53,7 @@
private ExecutionContext context;
private InputSet inputSet;
private OutputSet outputSet;
+ private TokenStatus status;
/**
* Construct a Token with given {@link Attachments}
@@ -61,6 +62,7 @@
{
this.context = new InitialContext(att);
this.id = new UID().toString();
+ this.status = TokenStatus.Created;
}
public String getTokenID()
@@ -68,6 +70,16 @@
return id;
}
+ public TokenStatus getTokenStatus()
+ {
+ return status;
+ }
+
+ public void setTokenStatus(TokenStatus status)
+ {
+ this.status = status;
+ }
+
public ExecutionContext getExecutionContext()
{
return context;
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -27,7 +27,6 @@
import org.jboss.bpm.EngineShutdownException;
import org.jboss.bpm.client.ProcessEngine;
-import org.jboss.bpm.client.ProcessEngineLocator;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -48,7 +47,7 @@
{
super.setUp();
jpdlURL = getResourceURL("cts/engine/basic-engine-" + getDialect() + ".xml");
- engine = ProcessEngineLocator.locateProcessEngine();
+ engine = ProcessEngine.locateProcessEngine();
engine.cancelShutdown();
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -23,6 +23,7 @@
// $Id$
+import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.EventBuilder;
import org.jboss.bpm.model.Process;
@@ -31,23 +32,28 @@
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
- * Exclusive data-based gateway that has multiple incoming sequence flows.
- * The first token arriving from one of the incoming sequence flows proceeds along the outgoing sequence flow.
- * All other token are ignored until a token has arrived from each incoming sequence flow.
+ * Exclusive data-based gateway that has multiple incoming sequence flows. The first token arriving from one of the
+ * incoming sequence flows proceeds along the outgoing sequence flow. All other token are ignored until a token has
+ * arrived from each incoming sequence flow.
*
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
public class ExclusiveMergeTest extends DefaultEngineTestCase
{
+ private SignalManager signalManager;
+
@Override
protected void setUp() throws Exception
{
super.setUp();
- SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager = SignalManager.locateSignalManager();
signalManager.addSignalListener(getName(), this);
}
@@ -56,27 +62,108 @@
Process proc = getProcess();
proc.startProcess();
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal signal = new Signal(getName(), SignalType.START_TRIGGER, "A");
- signalManager.throwSignal(proc.getName(), signal);
+ // Add a signal listener that sends the other start trigger signal
+ Signal startTrigger = new Signal(getName(), SignalType.START_TRIGGER, "B");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.START_TRIGGER, "A"));
+
+ // Wait for the process to end
proc.waitForEnd();
+
+ // Verify the result
+ assertEquals("TaskA", TaskC.taskValue);
}
public void testGateB() throws Exception
{
+ Process proc = getProcess();
+ proc.startProcess();
+
+ // Add a signal listener that sends the other start trigger signal
+ Signal startTrigger = new Signal(getName(), SignalType.START_TRIGGER, "A");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.START_TRIGGER, "B"));
+
+ // Wait for the process to end
+ proc.waitForEnd();
+
+ // Verify the result
+ assertEquals("TaskB", TaskC.taskValue);
}
private Process getProcess()
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.START_TRIGGER, "A").addSequenceFlow("Merge");
+ eventBuilder.addSignalTrigger(SignalType.START_TRIGGER, "A").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.START_TRIGGER, "B").addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", GatewayType.Exclusive);
- procBuilder.addSequenceFlow("End").addEndEvent("End");
+ eventBuilder.addSignalTrigger(SignalType.START_TRIGGER, "B").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
+ procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
Process proc = procBuilder.getProcess();
return proc;
}
+
+ public static class MergeListener implements SignalListener
+ {
+ private String fromRef;
+ private Signal nextSignal;
+
+ public MergeListener(String fromRef, Signal nextSignal)
+ {
+ this.fromRef = fromRef;
+ this.nextSignal = nextSignal;
+ }
+
+ public void catchSignal(Signal signal)
+ {
+ if (signal.getType() == SignalType.ENTER_GATEWAY)
+ {
+ if (nextSignal != null)
+ {
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(fromRef, nextSignal);
+ nextSignal = null;
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskA implements ExecutionHandler
+ {
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment("taskValue", "TaskA");
+ }
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskB implements ExecutionHandler
+ {
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment("taskValue", "TaskB");
+ }
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskC implements ExecutionHandler
+ {
+ public static Object taskValue;
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ taskValue = exContext.getAttachment("taskValue");
+ }
+ }
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -23,7 +23,15 @@
// $Id$
+import java.util.List;
+
import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -43,8 +51,25 @@
signalManager.addSignalListener(getName(), this);
}
- public void testGateA() throws Exception
+ public void testParallelSplit() throws Exception
{
- System.out.println("FIXME: ParallelSplitTest");
+ Process proc = getProcess();
+ proc.startProcess();
+ proc.waitForEnd();
+
+ // Validate received signals
+ List<Signal> signals = getSignals(SignalType.ENTER_END_EVENT);
+ assertEquals(2, signals.size());
+ String fromRefs = signals.get(0).getFromRef() + signals.get(1).getFromRef();
+ assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndA"));
+ assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndB"));
}
+
+ private Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split").addGateway("Split", GatewayType.Parallel).
+ addSequenceFlow("EndA").addSequenceFlow("EndB").addEndEvent("EndA").addEndEvent("EndB").getProcess();
+ return proc;
+ }
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java 2008-08-12 14:30:22 UTC (rev 1877)
@@ -61,7 +61,7 @@
// Create a Process through the ProcessManager
ProcessManager pm = ProcessManager.locateProcessManager();
Process proc = pm.createProcess(jpdlURL);
-
+
runProcess(proc);
}
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/cts-specification.txt
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/cts-specification.txt 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/cts-specification.txt 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,8 +0,0 @@
-# $Id$
-
-BPM Compatibility Test Specification
-
-1. Process
-
-
-
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_l8nUEWOQEd2mS_8SFTXMeQ" iD="_l8nUEGOQEd2mS_8SFTXMeQ">
- <pools xmi:type="bpmn:Pool" xmi:id="_l8n7IWOQEd2mS_8SFTXMeQ" iD="_l8n7IGOQEd2mS_8SFTXMeQ" name="Pool">
- <vertices xmi:type="bpmn:Activity" xmi:id="_qdNxcWOQEd2mS_8SFTXMeQ" iD="_qdNxcGOQEd2mS_8SFTXMeQ" outgoingEdges="_uRhwkWOQEd2mS_8SFTXMeQ" name="StartA" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_rWe7wWOQEd2mS_8SFTXMeQ" iD="_rWe7wGOQEd2mS_8SFTXMeQ" outgoingEdges="_u0nPgWOQEd2mS_8SFTXMeQ" name="StartB" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_sa_FsWOQEd2mS_8SFTXMeQ" iD="_sa_FsGOQEd2mS_8SFTXMeQ" outgoingEdges="_w0h40WOQEd2mS_8SFTXMeQ" incomingEdges="_uRhwkWOQEd2mS_8SFTXMeQ _u0nPgWOQEd2mS_8SFTXMeQ" activityType="GatewayDataBasedExclusive"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_tWoOkWOQEd2mS_8SFTXMeQ" iD="_tWoOkGOQEd2mS_8SFTXMeQ" incomingEdges="_w0h40WOQEd2mS_8SFTXMeQ" activityType="EventEndEmpty"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_uRhwkWOQEd2mS_8SFTXMeQ" iD="_uRhwkGOQEd2mS_8SFTXMeQ" source="_qdNxcWOQEd2mS_8SFTXMeQ" target="_sa_FsWOQEd2mS_8SFTXMeQ"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_u0nPgWOQEd2mS_8SFTXMeQ" iD="_u0nPgGOQEd2mS_8SFTXMeQ" source="_rWe7wWOQEd2mS_8SFTXMeQ" target="_sa_FsWOQEd2mS_8SFTXMeQ"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_w0h40WOQEd2mS_8SFTXMeQ" iD="_w0h40GOQEd2mS_8SFTXMeQ" source="_sa_FsWOQEd2mS_8SFTXMeQ" target="_tWoOkWOQEd2mS_8SFTXMeQ"/>
- </pools>
-</bpmn:BpmnDiagram>
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn_diagram
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn_diagram 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn_diagram 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmi:id="_l8nUEmOQEd2mS_8SFTXMeQ" type="Bpmn" name="exclusive-join.bpmn_diagram" measurementUnit="Pixel">
- <children xmi:type="notation:Node" xmi:id="_l8pJQGOQEd2mS_8SFTXMeQ" type="1001">
- <children xmi:type="notation:Node" xmi:id="_l8pwUGOQEd2mS_8SFTXMeQ" type="4008"/>
- <children xmi:type="notation:Node" xmi:id="_l8qXYGOQEd2mS_8SFTXMeQ" type="5001">
- <children xmi:type="notation:Node" xmi:id="_qdOYgGOQEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_qdO_kGOQEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_qdOYgWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_qdOYgmOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_qdOYg2OQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_qdOYhGOQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="exclusive-join.bpmn#_qdNxcWOQEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qdOYhWOQEd2mS_8SFTXMeQ" x="60" y="24"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_rWgJ4GOQEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_rWgw8GOQEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_rWgJ4WOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_rWgJ4mOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_rWgJ42OQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_rWgJ5GOQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="exclusive-join.bpmn#_rWe7wWOQEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rWgJ5WOQEd2mS_8SFTXMeQ" x="60" y="132"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_sa_swGOQEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_sbAT0WOQEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_sa_swWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_sa_swmOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_sa_sw2OQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_sa_sxGOQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="exclusive-join.bpmn#_sa_FsWOQEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sbAT0GOQEd2mS_8SFTXMeQ" x="134" y="74"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_tWpcsGOQEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_tWqDwGOQEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_tWpcsWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_tWpcsmOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_tWpcs2OQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_tWpctGOQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="exclusive-join.bpmn#_tWoOkWOQEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tWpctWOQEd2mS_8SFTXMeQ" x="252" y="84"/>
- </children>
- <styles xmi:type="notation:DrawerStyle" xmi:id="_l8qXYWOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_l8qXYmOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_l8qXY2OQEd2mS_8SFTXMeQ"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_l8pJQWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_l8pJQmOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_l8pJQ2OQEd2mS_8SFTXMeQ" fillColor="16771304"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_l8pJRGOQEd2mS_8SFTXMeQ" lineColor="11119017"/>
- <element xmi:type="bpmn:Pool" href="exclusive-join.bpmn#_l8n7IWOQEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l8q-cGOQEd2mS_8SFTXMeQ" x="16" y="16" width="369" height="200"/>
- </children>
- <styles xmi:type="notation:PageStyle" xmi:id="_l8nUE2OQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:GuideStyle" xmi:id="_l8nUFGOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_l8nUFWOQEd2mS_8SFTXMeQ"/>
- <element xmi:type="bpmn:BpmnDiagram" href="exclusive-join.bpmn#_l8nUEWOQEd2mS_8SFTXMeQ"/>
- <edges xmi:type="notation:Edge" xmi:id="_uRi-sGOQEd2mS_8SFTXMeQ" type="3001" source="_qdOYgGOQEd2mS_8SFTXMeQ" target="_sa_swGOQEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_uRjlwmOQEd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_uRkM0GOQEd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_uRkM0WOQEd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_uRkM0mOQEd2mS_8SFTXMeQ" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_uRi-sWOQEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_uRi-smOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_uRjlwGOQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="exclusive-join.bpmn#_uRhwkWOQEd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uRjlwWOQEd2mS_8SFTXMeQ" points="[15, 6, -92, -54]$[122, 50, 15, -10]"/>
- </edges>
- <edges xmi:type="notation:Edge" xmi:id="_u0odoGOQEd2mS_8SFTXMeQ" type="3001" source="_rWgJ4GOQEd2mS_8SFTXMeQ" target="_sa_swGOQEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_u0pEsGOQEd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_u0pEsWOQEd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_u0pEsmOQEd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_u0pEs2OQEd2mS_8SFTXMeQ" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_u0odoWOQEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_u0odomOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_u0odo2OQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="exclusive-join.bpmn#_u0nPgWOQEd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_u0odpGOQEd2mS_8SFTXMeQ" points="[15, -7, -86, 27]$[112, -48, 11, -14]"/>
- </edges>
- <edges xmi:type="notation:Edge" xmi:id="_w0jG8GOQEd2mS_8SFTXMeQ" type="3001" source="_sa_swGOQEd2mS_8SFTXMeQ" target="_tWpcsGOQEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_w0juAGOQEd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_w0juAWOQEd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_w0juAmOQEd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_w0juA2OQEd2mS_8SFTXMeQ" y="40"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_w0jG8WOQEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_w0jG8mOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_w0jG82OQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="exclusive-join.bpmn#_w0h40WOQEd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w0jG9GOQEd2mS_8SFTXMeQ" points="[23, 1, -85, 1]$[109, 15, 1, 15]"/>
- </edges>
-</notation:Diagram>
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.bpmn (from rev 1866, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.bpmn (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.bpmn 2008-08-12 14:30:22 UTC (rev 1877)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_l8nUEWOQEd2mS_8SFTXMeQ" iD="_l8nUEGOQEd2mS_8SFTXMeQ">
+ <pools xmi:type="bpmn:Pool" xmi:id="_l8n7IWOQEd2mS_8SFTXMeQ" iD="_l8n7IGOQEd2mS_8SFTXMeQ" name="Pool">
+ <vertices xmi:type="bpmn:Activity" xmi:id="_qdNxcWOQEd2mS_8SFTXMeQ" iD="_qdNxcGOQEd2mS_8SFTXMeQ" outgoingEdges="_uRhwkWOQEd2mS_8SFTXMeQ" name="StartA" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_rWe7wWOQEd2mS_8SFTXMeQ" iD="_rWe7wGOQEd2mS_8SFTXMeQ" outgoingEdges="_u0nPgWOQEd2mS_8SFTXMeQ" name="StartB" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_sa_FsWOQEd2mS_8SFTXMeQ" iD="_sa_FsGOQEd2mS_8SFTXMeQ" outgoingEdges="_w0h40WOQEd2mS_8SFTXMeQ" incomingEdges="_uRhwkWOQEd2mS_8SFTXMeQ _u0nPgWOQEd2mS_8SFTXMeQ" activityType="GatewayDataBasedExclusive"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_tWoOkWOQEd2mS_8SFTXMeQ" iD="_tWoOkGOQEd2mS_8SFTXMeQ" incomingEdges="_w0h40WOQEd2mS_8SFTXMeQ" activityType="EventEndEmpty"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_uRhwkWOQEd2mS_8SFTXMeQ" iD="_uRhwkGOQEd2mS_8SFTXMeQ" source="_qdNxcWOQEd2mS_8SFTXMeQ" target="_sa_FsWOQEd2mS_8SFTXMeQ"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_u0nPgWOQEd2mS_8SFTXMeQ" iD="_u0nPgGOQEd2mS_8SFTXMeQ" source="_rWe7wWOQEd2mS_8SFTXMeQ" target="_sa_FsWOQEd2mS_8SFTXMeQ"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_w0h40WOQEd2mS_8SFTXMeQ" iD="_w0h40GOQEd2mS_8SFTXMeQ" source="_sa_FsWOQEd2mS_8SFTXMeQ" target="_tWoOkWOQEd2mS_8SFTXMeQ"/>
+ </pools>
+</bpmn:BpmnDiagram>
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.bpmn_diagram (from rev 1866, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-join.bpmn_diagram)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.bpmn_diagram (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.bpmn_diagram 2008-08-12 14:30:22 UTC (rev 1877)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmi:id="_l8nUEmOQEd2mS_8SFTXMeQ" type="Bpmn" name="exclusive-merge.bpmn_diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_l8pJQGOQEd2mS_8SFTXMeQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_l8pwUGOQEd2mS_8SFTXMeQ" type="4008"/>
+ <children xmi:type="notation:Node" xmi:id="_l8qXYGOQEd2mS_8SFTXMeQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_qdOYgGOQEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_qdO_kGOQEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_qdOYgWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_qdOYgmOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_qdOYg2OQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_qdOYhGOQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="exclusive-merge.bpmn#_qdNxcWOQEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qdOYhWOQEd2mS_8SFTXMeQ" x="60" y="24"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_rWgJ4GOQEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_rWgw8GOQEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rWgJ4WOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_rWgJ4mOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_rWgJ42OQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_rWgJ5GOQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="exclusive-merge.bpmn#_rWe7wWOQEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rWgJ5WOQEd2mS_8SFTXMeQ" x="60" y="132"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_sa_swGOQEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_sbAT0WOQEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_sa_swWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_sa_swmOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_sa_sw2OQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_sa_sxGOQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="exclusive-merge.bpmn#_sa_FsWOQEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sbAT0GOQEd2mS_8SFTXMeQ" x="134" y="74"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_tWpcsGOQEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_tWqDwGOQEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tWpcsWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_tWpcsmOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_tWpcs2OQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_tWpctGOQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="exclusive-merge.bpmn#_tWoOkWOQEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tWpctWOQEd2mS_8SFTXMeQ" x="252" y="84"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_l8qXYWOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l8qXYmOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l8qXY2OQEd2mS_8SFTXMeQ"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_l8pJQWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_l8pJQmOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_l8pJQ2OQEd2mS_8SFTXMeQ" fillColor="16771304"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_l8pJRGOQEd2mS_8SFTXMeQ" lineColor="11119017"/>
+ <element xmi:type="bpmn:Pool" href="exclusive-merge.bpmn#_l8n7IWOQEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l8q-cGOQEd2mS_8SFTXMeQ" x="16" y="16" width="369" height="200"/>
+ </children>
+ <styles xmi:type="notation:PageStyle" xmi:id="_l8nUE2OQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:GuideStyle" xmi:id="_l8nUFGOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_l8nUFWOQEd2mS_8SFTXMeQ"/>
+ <element xmi:type="bpmn:BpmnDiagram" href="exclusive-merge.bpmn#_l8nUEWOQEd2mS_8SFTXMeQ"/>
+ <edges xmi:type="notation:Edge" xmi:id="_uRi-sGOQEd2mS_8SFTXMeQ" type="3001" source="_qdOYgGOQEd2mS_8SFTXMeQ" target="_sa_swGOQEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_uRjlwmOQEd2mS_8SFTXMeQ" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_uRkM0GOQEd2mS_8SFTXMeQ" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_uRkM0WOQEd2mS_8SFTXMeQ" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uRkM0mOQEd2mS_8SFTXMeQ" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_uRi-sWOQEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uRi-smOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_uRjlwGOQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="exclusive-merge.bpmn#_uRhwkWOQEd2mS_8SFTXMeQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uRjlwWOQEd2mS_8SFTXMeQ" points="[15, 6, -92, -54]$[122, 50, 15, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_u0odoGOQEd2mS_8SFTXMeQ" type="3001" source="_rWgJ4GOQEd2mS_8SFTXMeQ" target="_sa_swGOQEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_u0pEsGOQEd2mS_8SFTXMeQ" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_u0pEsWOQEd2mS_8SFTXMeQ" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_u0pEsmOQEd2mS_8SFTXMeQ" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_u0pEs2OQEd2mS_8SFTXMeQ" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_u0odoWOQEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_u0odomOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_u0odo2OQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="exclusive-merge.bpmn#_u0nPgWOQEd2mS_8SFTXMeQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_u0odpGOQEd2mS_8SFTXMeQ" points="[15, -7, -86, 27]$[112, -48, 11, -14]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_w0jG8GOQEd2mS_8SFTXMeQ" type="3001" source="_sa_swGOQEd2mS_8SFTXMeQ" target="_tWpcsGOQEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_w0juAGOQEd2mS_8SFTXMeQ" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_w0juAWOQEd2mS_8SFTXMeQ" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_w0juAmOQEd2mS_8SFTXMeQ" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w0juA2OQEd2mS_8SFTXMeQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_w0jG8WOQEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_w0jG8mOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_w0jG82OQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="exclusive-merge.bpmn#_w0h40WOQEd2mS_8SFTXMeQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w0jG9GOQEd2mS_8SFTXMeQ" points="[23, 1, -85, 1]$[109, 15, 1, 15]"/>
+ </edges>
+</notation:Diagram>
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_l8nUEWOQEd2mS_8SFTXMeQ" iD="_l8nUEGOQEd2mS_8SFTXMeQ">
- <pools xmi:type="bpmn:Pool" xmi:id="_l8n7IWOQEd2mS_8SFTXMeQ" iD="_l8n7IGOQEd2mS_8SFTXMeQ" name="Pool">
- <vertices xmi:type="bpmn:Activity" xmi:id="_qdNxcWOQEd2mS_8SFTXMeQ" iD="_qdNxcGOQEd2mS_8SFTXMeQ" outgoingEdges="_SIYfIWOREd2mS_8SFTXMeQ" name="StartA" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_rWe7wWOQEd2mS_8SFTXMeQ" iD="_rWe7wGOQEd2mS_8SFTXMeQ" outgoingEdges="_Sr7REWOREd2mS_8SFTXMeQ" name="StartB" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_tWoOkWOQEd2mS_8SFTXMeQ" iD="_tWoOkGOQEd2mS_8SFTXMeQ" incomingEdges="_UaiH8WOREd2mS_8SFTXMeQ" activityType="EventEndEmpty"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_ReploWOREd2mS_8SFTXMeQ" iD="_ReploGOREd2mS_8SFTXMeQ" outgoingEdges="_UaiH8WOREd2mS_8SFTXMeQ" incomingEdges="_SIYfIWOREd2mS_8SFTXMeQ _Sr7REWOREd2mS_8SFTXMeQ" activityType="GatewayDataBasedInclusive"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_SIYfIWOREd2mS_8SFTXMeQ" iD="_SIYfIGOREd2mS_8SFTXMeQ" source="_qdNxcWOQEd2mS_8SFTXMeQ" target="_ReploWOREd2mS_8SFTXMeQ"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_Sr7REWOREd2mS_8SFTXMeQ" iD="_Sr7REGOREd2mS_8SFTXMeQ" source="_rWe7wWOQEd2mS_8SFTXMeQ" target="_ReploWOREd2mS_8SFTXMeQ"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_UaiH8WOREd2mS_8SFTXMeQ" iD="_UaiH8GOREd2mS_8SFTXMeQ" source="_ReploWOREd2mS_8SFTXMeQ" target="_tWoOkWOQEd2mS_8SFTXMeQ"/>
- </pools>
-</bpmn:BpmnDiagram>
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn_diagram
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn_diagram 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn_diagram 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmi:id="_l8nUEmOQEd2mS_8SFTXMeQ" type="Bpmn" name="inclusive-join.bpmn_diagram" measurementUnit="Pixel">
- <children xmi:type="notation:Node" xmi:id="_l8pJQGOQEd2mS_8SFTXMeQ" type="1001">
- <children xmi:type="notation:Node" xmi:id="_l8pwUGOQEd2mS_8SFTXMeQ" type="4008"/>
- <children xmi:type="notation:Node" xmi:id="_l8qXYGOQEd2mS_8SFTXMeQ" type="5001">
- <children xmi:type="notation:Node" xmi:id="_qdOYgGOQEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_qdO_kGOQEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_qdOYgWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_qdOYgmOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_qdOYg2OQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_qdOYhGOQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="inclusive-join.bpmn#_qdNxcWOQEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qdOYhWOQEd2mS_8SFTXMeQ" x="60" y="24"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_rWgJ4GOQEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_rWgw8GOQEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_rWgJ4WOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_rWgJ4mOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_rWgJ42OQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_rWgJ5GOQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="inclusive-join.bpmn#_rWe7wWOQEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rWgJ5WOQEd2mS_8SFTXMeQ" x="60" y="144"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_tWpcsGOQEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_tWqDwGOQEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_tWpcsWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_tWpcsmOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_tWpcs2OQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_tWpctGOQEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="inclusive-join.bpmn#_tWoOkWOQEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tWpctWOQEd2mS_8SFTXMeQ" x="228" y="96"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_ReqMsGOREd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_ReqzwmOREd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_ReqMsWOREd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_ReqMsmOREd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_ReqMs2OREd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_ReqzwGOREd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="inclusive-join.bpmn#_ReploWOREd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ReqzwWOREd2mS_8SFTXMeQ" x="132" y="84"/>
- </children>
- <styles xmi:type="notation:DrawerStyle" xmi:id="_l8qXYWOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_l8qXYmOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_l8qXY2OQEd2mS_8SFTXMeQ"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_l8pJQWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_l8pJQmOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_l8pJQ2OQEd2mS_8SFTXMeQ" fillColor="16771304"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_l8pJRGOQEd2mS_8SFTXMeQ" lineColor="11119017"/>
- <element xmi:type="bpmn:Pool" href="inclusive-join.bpmn#_l8n7IWOQEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l8q-cGOQEd2mS_8SFTXMeQ" x="16" y="16" width="345" height="212"/>
- </children>
- <styles xmi:type="notation:PageStyle" xmi:id="_l8nUE2OQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:GuideStyle" xmi:id="_l8nUFGOQEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_l8nUFWOQEd2mS_8SFTXMeQ"/>
- <element xmi:type="bpmn:BpmnDiagram" href="inclusive-join.bpmn#_l8nUEWOQEd2mS_8SFTXMeQ"/>
- <edges xmi:type="notation:Edge" xmi:id="_SIZtQGOREd2mS_8SFTXMeQ" type="3001" source="_qdOYgGOQEd2mS_8SFTXMeQ" target="_ReqMsGOREd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_SIaUUGOREd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_SIaUUWOREd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_SIaUUmOREd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_SIaUU2OREd2mS_8SFTXMeQ" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_SIZtQWOREd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_SIZtQmOREd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_SIZtQ2OREd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="inclusive-join.bpmn#_SIYfIWOREd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SIZtRGOREd2mS_8SFTXMeQ" points="[15, 9, -74, -59]$[112, 66, 23, -2]"/>
- </edges>
- <edges xmi:type="notation:Edge" xmi:id="_Sr9GQGOREd2mS_8SFTXMeQ" type="3001" source="_rWgJ4GOQEd2mS_8SFTXMeQ" target="_ReqMsGOREd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_Sr9tUGOREd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_Sr9tUWOREd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Sr9tUmOREd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Sr9tU2OREd2mS_8SFTXMeQ" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_Sr9GQWOREd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_Sr9GQmOREd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Sr9GQ2OREd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="inclusive-join.bpmn#_Sr7REWOREd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Sr9GRGOREd2mS_8SFTXMeQ" points="[15, -7, -74, 33]$[74, -30, -15, 10]"/>
- </edges>
- <edges xmi:type="notation:Edge" xmi:id="_UajWEGOREd2mS_8SFTXMeQ" type="3001" source="_ReqMsGOREd2mS_8SFTXMeQ" target="_tWpcsGOQEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_Uaj9IGOREd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_Uaj9IWOREd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Uaj9ImOREd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Uaj9I2OREd2mS_8SFTXMeQ" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_UajWEWOREd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_UajWEmOREd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_UajWE2OREd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="inclusive-join.bpmn#_UaiH8WOREd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UajWFGOREd2mS_8SFTXMeQ" points="[23, 2, -80, -2]$[118, 2, 15, -2]"/>
- </edges>
-</notation:Diagram>
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.bpmn (from rev 1866, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.bpmn (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.bpmn 2008-08-12 14:30:22 UTC (rev 1877)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_l8nUEWOQEd2mS_8SFTXMeQ" iD="_l8nUEGOQEd2mS_8SFTXMeQ">
+ <pools xmi:type="bpmn:Pool" xmi:id="_l8n7IWOQEd2mS_8SFTXMeQ" iD="_l8n7IGOQEd2mS_8SFTXMeQ" name="Pool">
+ <vertices xmi:type="bpmn:Activity" xmi:id="_qdNxcWOQEd2mS_8SFTXMeQ" iD="_qdNxcGOQEd2mS_8SFTXMeQ" outgoingEdges="_SIYfIWOREd2mS_8SFTXMeQ" name="StartA" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_rWe7wWOQEd2mS_8SFTXMeQ" iD="_rWe7wGOQEd2mS_8SFTXMeQ" outgoingEdges="_Sr7REWOREd2mS_8SFTXMeQ" name="StartB" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_tWoOkWOQEd2mS_8SFTXMeQ" iD="_tWoOkGOQEd2mS_8SFTXMeQ" incomingEdges="_UaiH8WOREd2mS_8SFTXMeQ" activityType="EventEndEmpty"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_ReploWOREd2mS_8SFTXMeQ" iD="_ReploGOREd2mS_8SFTXMeQ" outgoingEdges="_UaiH8WOREd2mS_8SFTXMeQ" incomingEdges="_SIYfIWOREd2mS_8SFTXMeQ _Sr7REWOREd2mS_8SFTXMeQ" activityType="GatewayDataBasedInclusive"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_SIYfIWOREd2mS_8SFTXMeQ" iD="_SIYfIGOREd2mS_8SFTXMeQ" source="_qdNxcWOQEd2mS_8SFTXMeQ" target="_ReploWOREd2mS_8SFTXMeQ"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_Sr7REWOREd2mS_8SFTXMeQ" iD="_Sr7REGOREd2mS_8SFTXMeQ" source="_rWe7wWOQEd2mS_8SFTXMeQ" target="_ReploWOREd2mS_8SFTXMeQ"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_UaiH8WOREd2mS_8SFTXMeQ" iD="_UaiH8GOREd2mS_8SFTXMeQ" source="_ReploWOREd2mS_8SFTXMeQ" target="_tWoOkWOQEd2mS_8SFTXMeQ"/>
+ </pools>
+</bpmn:BpmnDiagram>
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.bpmn_diagram (from rev 1866, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-join.bpmn_diagram)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.bpmn_diagram (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.bpmn_diagram 2008-08-12 14:30:22 UTC (rev 1877)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmi:id="_l8nUEmOQEd2mS_8SFTXMeQ" type="Bpmn" name="inclusive-merge.bpmn_diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_l8pJQGOQEd2mS_8SFTXMeQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_l8pwUGOQEd2mS_8SFTXMeQ" type="4008"/>
+ <children xmi:type="notation:Node" xmi:id="_l8qXYGOQEd2mS_8SFTXMeQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_qdOYgGOQEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_qdO_kGOQEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_qdOYgWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_qdOYgmOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_qdOYg2OQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_qdOYhGOQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="inclusive-merge.bpmn#_qdNxcWOQEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qdOYhWOQEd2mS_8SFTXMeQ" x="60" y="24"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_rWgJ4GOQEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_rWgw8GOQEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_rWgJ4WOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_rWgJ4mOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_rWgJ42OQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_rWgJ5GOQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="inclusive-merge.bpmn#_rWe7wWOQEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rWgJ5WOQEd2mS_8SFTXMeQ" x="60" y="144"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_tWpcsGOQEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_tWqDwGOQEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tWpcsWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_tWpcsmOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_tWpcs2OQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_tWpctGOQEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="inclusive-merge.bpmn#_tWoOkWOQEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tWpctWOQEd2mS_8SFTXMeQ" x="228" y="96"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ReqMsGOREd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_ReqzwmOREd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ReqMsWOREd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_ReqMsmOREd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_ReqMs2OREd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_ReqzwGOREd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="inclusive-merge.bpmn#_ReploWOREd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ReqzwWOREd2mS_8SFTXMeQ" x="132" y="84"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_l8qXYWOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l8qXYmOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l8qXY2OQEd2mS_8SFTXMeQ"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_l8pJQWOQEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_l8pJQmOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_l8pJQ2OQEd2mS_8SFTXMeQ" fillColor="16771304"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_l8pJRGOQEd2mS_8SFTXMeQ" lineColor="11119017"/>
+ <element xmi:type="bpmn:Pool" href="inclusive-merge.bpmn#_l8n7IWOQEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l8q-cGOQEd2mS_8SFTXMeQ" x="16" y="16" width="345" height="212"/>
+ </children>
+ <styles xmi:type="notation:PageStyle" xmi:id="_l8nUE2OQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:GuideStyle" xmi:id="_l8nUFGOQEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_l8nUFWOQEd2mS_8SFTXMeQ"/>
+ <element xmi:type="bpmn:BpmnDiagram" href="inclusive-merge.bpmn#_l8nUEWOQEd2mS_8SFTXMeQ"/>
+ <edges xmi:type="notation:Edge" xmi:id="_SIZtQGOREd2mS_8SFTXMeQ" type="3001" source="_qdOYgGOQEd2mS_8SFTXMeQ" target="_ReqMsGOREd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_SIaUUGOREd2mS_8SFTXMeQ" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_SIaUUWOREd2mS_8SFTXMeQ" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_SIaUUmOREd2mS_8SFTXMeQ" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SIaUU2OREd2mS_8SFTXMeQ" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_SIZtQWOREd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_SIZtQmOREd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_SIZtQ2OREd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="inclusive-merge.bpmn#_SIYfIWOREd2mS_8SFTXMeQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SIZtRGOREd2mS_8SFTXMeQ" points="[15, 9, -74, -59]$[112, 66, 23, -2]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_Sr9GQGOREd2mS_8SFTXMeQ" type="3001" source="_rWgJ4GOQEd2mS_8SFTXMeQ" target="_ReqMsGOREd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_Sr9tUGOREd2mS_8SFTXMeQ" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_Sr9tUWOREd2mS_8SFTXMeQ" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_Sr9tUmOREd2mS_8SFTXMeQ" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Sr9tU2OREd2mS_8SFTXMeQ" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_Sr9GQWOREd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Sr9GQmOREd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_Sr9GQ2OREd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="inclusive-merge.bpmn#_Sr7REWOREd2mS_8SFTXMeQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Sr9GRGOREd2mS_8SFTXMeQ" points="[15, -7, -74, 33]$[74, -30, -15, 10]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_UajWEGOREd2mS_8SFTXMeQ" type="3001" source="_ReqMsGOREd2mS_8SFTXMeQ" target="_tWpcsGOQEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_Uaj9IGOREd2mS_8SFTXMeQ" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_Uaj9IWOREd2mS_8SFTXMeQ" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_Uaj9ImOREd2mS_8SFTXMeQ" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Uaj9I2OREd2mS_8SFTXMeQ" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_UajWEWOREd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_UajWEmOREd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_UajWE2OREd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="inclusive-merge.bpmn#_UaiH8WOREd2mS_8SFTXMeQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UajWFGOREd2mS_8SFTXMeQ" points="[23, 2, -80, -2]$[118, 2, 15, -2]"/>
+ </edges>
+</notation:Diagram>
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_AXFyUWOSEd2mS_8SFTXMeQ" iD="_AXFyUGOSEd2mS_8SFTXMeQ">
- <pools xmi:type="bpmn:Pool" xmi:id="_AXHAcWOSEd2mS_8SFTXMeQ" iD="_AXHAcGOSEd2mS_8SFTXMeQ" name="Pool">
- <vertices xmi:type="bpmn:Activity" xmi:id="_EPuQwWOSEd2mS_8SFTXMeQ" iD="_EPuQwGOSEd2mS_8SFTXMeQ" outgoingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" incomingEdges="_ImmxcWOSEd2mS_8SFTXMeQ _JC-kYWOSEd2mS_8SFTXMeQ" activityType="GatewayParallel"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_FY9wwWOSEd2mS_8SFTXMeQ" iD="_FY9wwGOSEd2mS_8SFTXMeQ" outgoingEdges="_ImmxcWOSEd2mS_8SFTXMeQ" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_FobwIWOSEd2mS_8SFTXMeQ" iD="_FobwIGOSEd2mS_8SFTXMeQ" outgoingEdges="_JC-kYWOSEd2mS_8SFTXMeQ" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_LFtRIWOSEd2mS_8SFTXMeQ" iD="_LFtRIGOSEd2mS_8SFTXMeQ" incomingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" activityType="EventEndEmpty"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_ImmxcWOSEd2mS_8SFTXMeQ" iD="_ImmxcGOSEd2mS_8SFTXMeQ" source="_FY9wwWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_JC-kYWOSEd2mS_8SFTXMeQ" iD="_JC-kYGOSEd2mS_8SFTXMeQ" source="_FobwIWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_LxpxIWOSEd2mS_8SFTXMeQ" iD="_LxpxIGOSEd2mS_8SFTXMeQ" source="_EPuQwWOSEd2mS_8SFTXMeQ" target="_LFtRIWOSEd2mS_8SFTXMeQ"/>
- </pools>
-</bpmn:BpmnDiagram>
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn_diagram
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn_diagram 2008-08-12 12:24:55 UTC (rev 1876)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn_diagram 2008-08-12 14:30:22 UTC (rev 1877)
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmi:id="_AXGZYGOSEd2mS_8SFTXMeQ" type="Bpmn" name="parallel-join.bpmn_diagram" measurementUnit="Pixel">
- <children xmi:type="notation:Node" xmi:id="_AXIOkGOSEd2mS_8SFTXMeQ" type="1001">
- <children xmi:type="notation:Node" xmi:id="_AXI1oGOSEd2mS_8SFTXMeQ" type="4008"/>
- <children xmi:type="notation:Node" xmi:id="_AXI1oWOSEd2mS_8SFTXMeQ" type="5001">
- <children xmi:type="notation:Node" xmi:id="_EPve4GOSEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_EPwF8GOSEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_EPve4WOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_EPve4mOSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_EPve42OSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_EPve5GOSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="parallel-join.bpmn#_EPuQwWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EPve5WOSEd2mS_8SFTXMeQ" x="108" y="72"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_FY--4GOSEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_FY_l8GOSEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_FY--4WOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_FY--4mOSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_FY--42OSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_FY--5GOSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="parallel-join.bpmn#_FY9wwWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FY--5WOSEd2mS_8SFTXMeQ" x="43" y="23"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_Foc-QGOSEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_FodlUGOSEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_Foc-QWOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_Foc-QmOSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_Foc-Q2OSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Foc-RGOSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="parallel-join.bpmn#_FobwIWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Foc-RWOSEd2mS_8SFTXMeQ" x="36" y="144"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_LFt4MGOSEd2mS_8SFTXMeQ" type="2001">
- <children xmi:type="notation:Node" xmi:id="_LFufRWOSEd2mS_8SFTXMeQ" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_LFufQGOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_LFufQWOSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_LFufQmOSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_LFufQ2OSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="parallel-join.bpmn#_LFtRIWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LFufRGOSEd2mS_8SFTXMeQ" x="204" y="84"/>
- </children>
- <styles xmi:type="notation:DrawerStyle" xmi:id="_AXI1omOSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_AXI1o2OSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_AXI1pGOSEd2mS_8SFTXMeQ"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_AXIOkWOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_AXIOkmOSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_AXIOk2OSEd2mS_8SFTXMeQ" fillColor="16771304"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_AXIOlGOSEd2mS_8SFTXMeQ" lineColor="11119017"/>
- <element xmi:type="bpmn:Pool" href="parallel-join.bpmn#_AXHAcWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AXI1pWOSEd2mS_8SFTXMeQ" x="16" y="16" width="345" height="200"/>
- </children>
- <styles xmi:type="notation:PageStyle" xmi:id="_AXGZYWOSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:GuideStyle" xmi:id="_AXGZYmOSEd2mS_8SFTXMeQ"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_AXGZY2OSEd2mS_8SFTXMeQ"/>
- <element xmi:type="bpmn:BpmnDiagram" href="parallel-join.bpmn#_AXFyUWOSEd2mS_8SFTXMeQ"/>
- <edges xmi:type="notation:Edge" xmi:id="_ImomoGOSEd2mS_8SFTXMeQ" type="3001" source="_FY--4GOSEd2mS_8SFTXMeQ" target="_EPve4GOSEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_Imp0wGOSEd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_Imp0wWOSEd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Imp0wmOSEd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Imp0w2OSEd2mS_8SFTXMeQ" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_ImomoWOSEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_ImomomOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Imomo2OSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="parallel-join.bpmn#_ImmxcWOSEd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ImompGOSEd2mS_8SFTXMeQ" points="[15, 11, -73, -63]$[106, 80, 18, 6]"/>
- </edges>
- <edges xmi:type="notation:Edge" xmi:id="_JC_ygGOSEd2mS_8SFTXMeQ" type="3001" source="_Foc-QGOSEd2mS_8SFTXMeQ" target="_EPve4GOSEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_JDAZkGOSEd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_JDAZkWOSEd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_JDAZkmOSEd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_JDAZk2OSEd2mS_8SFTXMeQ" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_JC_ygWOSEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_JC_ygmOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_JC_yg2OSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="parallel-join.bpmn#_JC-kYWOSEd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JC_yhGOSEd2mS_8SFTXMeQ" points="[15, -8, -70, 42]$[95, -35, 10, 15]"/>
- </edges>
- <edges xmi:type="notation:Edge" xmi:id="_Lxq_QGOSEd2mS_8SFTXMeQ" type="3001" source="_EPve4GOSEd2mS_8SFTXMeQ" target="_LFt4MGOSEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_LxrmUGOSEd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_LxrmUWOSEd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_LxrmUmOSEd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_LxrmU2OSEd2mS_8SFTXMeQ" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_Lxq_QWOSEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_Lxq_QmOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Lxq_Q2OSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="parallel-join.bpmn#_LxpxIWOSEd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Lxq_RGOSEd2mS_8SFTXMeQ" points="[24, -1, -86, -3]$[125, -4, 15, -6]"/>
- </edges>
-</notation:Diagram>
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn (from rev 1866, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn 2008-08-12 14:30:22 UTC (rev 1877)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_AXFyUWOSEd2mS_8SFTXMeQ" iD="_AXFyUGOSEd2mS_8SFTXMeQ">
+ <pools xmi:type="bpmn:Pool" xmi:id="_AXHAcWOSEd2mS_8SFTXMeQ" iD="_AXHAcGOSEd2mS_8SFTXMeQ" name="Pool">
+ <vertices xmi:type="bpmn:Activity" xmi:id="_EPuQwWOSEd2mS_8SFTXMeQ" iD="_EPuQwGOSEd2mS_8SFTXMeQ" outgoingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" incomingEdges="_ImmxcWOSEd2mS_8SFTXMeQ _JC-kYWOSEd2mS_8SFTXMeQ" activityType="GatewayParallel"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_FY9wwWOSEd2mS_8SFTXMeQ" iD="_FY9wwGOSEd2mS_8SFTXMeQ" outgoingEdges="_ImmxcWOSEd2mS_8SFTXMeQ" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_FobwIWOSEd2mS_8SFTXMeQ" iD="_FobwIGOSEd2mS_8SFTXMeQ" outgoingEdges="_JC-kYWOSEd2mS_8SFTXMeQ" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_LFtRIWOSEd2mS_8SFTXMeQ" iD="_LFtRIGOSEd2mS_8SFTXMeQ" incomingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" activityType="EventEndEmpty"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_ImmxcWOSEd2mS_8SFTXMeQ" iD="_ImmxcGOSEd2mS_8SFTXMeQ" source="_FY9wwWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_JC-kYWOSEd2mS_8SFTXMeQ" iD="_JC-kYGOSEd2mS_8SFTXMeQ" source="_FobwIWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_LxpxIWOSEd2mS_8SFTXMeQ" iD="_LxpxIGOSEd2mS_8SFTXMeQ" source="_EPuQwWOSEd2mS_8SFTXMeQ" target="_LFtRIWOSEd2mS_8SFTXMeQ"/>
+ </pools>
+</bpmn:BpmnDiagram>
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram (from rev 1866, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-join.bpmn_diagram)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram 2008-08-12 14:30:22 UTC (rev 1877)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmi:id="_AXGZYGOSEd2mS_8SFTXMeQ" type="Bpmn" name="parallel-merge.bpmn_diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_AXIOkGOSEd2mS_8SFTXMeQ" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_AXI1oGOSEd2mS_8SFTXMeQ" type="4008"/>
+ <children xmi:type="notation:Node" xmi:id="_AXI1oWOSEd2mS_8SFTXMeQ" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_EPve4GOSEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_EPwF8GOSEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_EPve4WOSEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_EPve4mOSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_EPve42OSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_EPve5GOSEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_EPuQwWOSEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EPve5WOSEd2mS_8SFTXMeQ" x="108" y="72"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_FY--4GOSEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_FY_l8GOSEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_FY--4WOSEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_FY--4mOSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_FY--42OSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_FY--5GOSEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_FY9wwWOSEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FY--5WOSEd2mS_8SFTXMeQ" x="43" y="23"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_Foc-QGOSEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_FodlUGOSEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Foc-QWOSEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_Foc-QmOSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_Foc-Q2OSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_Foc-RGOSEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_FobwIWOSEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Foc-RWOSEd2mS_8SFTXMeQ" x="36" y="144"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_LFt4MGOSEd2mS_8SFTXMeQ" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_LFufRWOSEd2mS_8SFTXMeQ" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_LFufQGOSEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_LFufQWOSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_LFufQmOSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_LFufQ2OSEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_LFtRIWOSEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LFufRGOSEd2mS_8SFTXMeQ" x="204" y="84"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_AXI1omOSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AXI1o2OSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AXI1pGOSEd2mS_8SFTXMeQ"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_AXIOkWOSEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_AXIOkmOSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_AXIOk2OSEd2mS_8SFTXMeQ" fillColor="16771304"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_AXIOlGOSEd2mS_8SFTXMeQ" lineColor="11119017"/>
+ <element xmi:type="bpmn:Pool" href="parallel-merge.bpmn#_AXHAcWOSEd2mS_8SFTXMeQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AXI1pWOSEd2mS_8SFTXMeQ" x="16" y="16" width="345" height="200"/>
+ </children>
+ <styles xmi:type="notation:PageStyle" xmi:id="_AXGZYWOSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:GuideStyle" xmi:id="_AXGZYmOSEd2mS_8SFTXMeQ"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_AXGZY2OSEd2mS_8SFTXMeQ"/>
+ <element xmi:type="bpmn:BpmnDiagram" href="parallel-merge.bpmn#_AXFyUWOSEd2mS_8SFTXMeQ"/>
+ <edges xmi:type="notation:Edge" xmi:id="_ImomoGOSEd2mS_8SFTXMeQ" type="3001" source="_FY--4GOSEd2mS_8SFTXMeQ" target="_EPve4GOSEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_Imp0wGOSEd2mS_8SFTXMeQ" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_Imp0wWOSEd2mS_8SFTXMeQ" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_Imp0wmOSEd2mS_8SFTXMeQ" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Imp0w2OSEd2mS_8SFTXMeQ" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_ImomoWOSEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ImomomOSEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_Imomo2OSEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_ImmxcWOSEd2mS_8SFTXMeQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ImompGOSEd2mS_8SFTXMeQ" points="[15, 11, -73, -63]$[106, 80, 18, 6]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_JC_ygGOSEd2mS_8SFTXMeQ" type="3001" source="_Foc-QGOSEd2mS_8SFTXMeQ" target="_EPve4GOSEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_JDAZkGOSEd2mS_8SFTXMeQ" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_JDAZkWOSEd2mS_8SFTXMeQ" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_JDAZkmOSEd2mS_8SFTXMeQ" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JDAZk2OSEd2mS_8SFTXMeQ" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_JC_ygWOSEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JC_ygmOSEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_JC_yg2OSEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_JC-kYWOSEd2mS_8SFTXMeQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JC_yhGOSEd2mS_8SFTXMeQ" points="[15, -8, -70, 42]$[95, -35, 10, 15]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_Lxq_QGOSEd2mS_8SFTXMeQ" type="3001" source="_EPve4GOSEd2mS_8SFTXMeQ" target="_LFt4MGOSEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_LxrmUGOSEd2mS_8SFTXMeQ" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_LxrmUWOSEd2mS_8SFTXMeQ" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_LxrmUmOSEd2mS_8SFTXMeQ" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LxrmU2OSEd2mS_8SFTXMeQ" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_Lxq_QWOSEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Lxq_QmOSEd2mS_8SFTXMeQ" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_Lxq_Q2OSEd2mS_8SFTXMeQ" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_LxpxIWOSEd2mS_8SFTXMeQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Lxq_RGOSEd2mS_8SFTXMeQ" points="[24, -1, -86, -3]$[125, -4, 15, -6]"/>
+ </edges>
+</notation:Diagram>
17 years, 8 months
JBoss JBPM SVN: r1876 - jbpm4/pvm/trunk/modules/core/src/main/resources/org/jbpm/pvm.
by do-not-reply@jboss.org
Author: porcherg
Date: 2008-08-12 08:24:55 -0400 (Tue, 12 Aug 2008)
New Revision: 1876
Modified:
jbpm4/pvm/trunk/modules/core/src/main/resources/org/jbpm/pvm/hibernate.wire.hbm.xml
Log:
persistence for ProvidedObjectDescriptor
Modified: jbpm4/pvm/trunk/modules/core/src/main/resources/org/jbpm/pvm/hibernate.wire.hbm.xml
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/main/resources/org/jbpm/pvm/hibernate.wire.hbm.xml 2008-08-12 11:47:55 UTC (rev 1875)
+++ jbpm4/pvm/trunk/modules/core/src/main/resources/org/jbpm/pvm/hibernate.wire.hbm.xml 2008-08-12 12:24:55 UTC (rev 1876)
@@ -7,25 +7,26 @@
<!-- ### DESCRIPTORS #################################################### -->
<class name="AbstractDescriptor" table="JBPM_DESCRIPTOR" abstract="true" discriminator-value="abstract">
<!--
- byte : ByteDescriptor
- string : StringDescriptor
- char : CharacterDescriptor
- class : ClassDescriptor
- double : DoubleDescriptor
- expr : ExpressionDescriptor
- float : FloatDescriptor
- long : LongDescriptor
- int : IntegerDescriptor
- short : ShortDescriptor
- coll : CollectionDescriptor
- map : MapDescriptor
- list : ListDescriptor
- set : SetDescriptor
- object : ObjectDescriptor
- ref : ReferenceDescriptor
- null : NullDescriptor
- true : TrueDescriptor
- false : FalseDescriptor
+ byte : ByteDescriptor
+ string : StringDescriptor
+ char : CharacterDescriptor
+ class : ClassDescriptor
+ double : DoubleDescriptor
+ expr : ExpressionDescriptor
+ float : FloatDescriptor
+ long : LongDescriptor
+ int : IntegerDescriptor
+ short : ShortDescriptor
+ coll : CollectionDescriptor
+ map : MapDescriptor
+ list : ListDescriptor
+ set : SetDescriptor
+ object : ObjectDescriptor
+ ref : ReferenceDescriptor
+ null : NullDescriptor
+ true : TrueDescriptor
+ false : FalseDescriptor
+ provided : ProvidedObjectDescriptor
-->
<id name="dbid" column="DBID_">
<generator class="native" />
@@ -101,7 +102,7 @@
<subclass name="ObjectDescriptor" discriminator-value="object">
<property name="className" column="TEXT_" />
<property name="methodName" column="METHOD_" />
- <property name="isAutoWireEnabled" column="AUTOWIRE_" />
+ <property name="isAutoWireEnabled" column="BOOLVAL_" />
<property name="factoryObjectName" column="FACTORYNAME_" />
<many-to-one name="factoryDescriptor"
@@ -128,6 +129,13 @@
<property name="language" column="METHOD_" />
</subclass>
+ <subclass name="ProvidedObjectDescriptor" discriminator-value="provided">
+ <any name="providedObject" id-type="long" cascade="all">
+ <column name="TEXT_" />
+ <column name="LONGVAL_" />
+ </any>
+ <property name="exposeType" column="BOOLVAL_" />
+ </subclass>
</class>
<!-- ### OPERATIONS ##################################################### -->
17 years, 8 months
JBoss JBPM SVN: r1875 - jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/samples.
by do-not-reply@jboss.org
Author: porcherg
Date: 2008-08-12 07:47:55 -0400 (Tue, 12 Aug 2008)
New Revision: 1875
Modified:
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/samples/pvm.cfg.xml
Log:
fix samples environment xml
Modified: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/samples/pvm.cfg.xml
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/samples/pvm.cfg.xml 2008-08-12 11:46:56 UTC (rev 1874)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/samples/pvm.cfg.xml 2008-08-12 11:47:55 UTC (rev 1875)
@@ -2,18 +2,22 @@
<contexts xmlns="http://jbpm.org/pvm/1.0/wire">
- <environment-factory>
-
- <job-test-helper />
-
+ <environment-factory>
<process-service />
+ <execution-service />
+ <management-service />
+ <job-executor threads="1" auto-start="false" />
+
+
<command-service>
<retry-interceptor />
<environment-interceptor />
- <transaction-interceptor />
+ <standard-transaction-interceptor />
</command-service>
+ <job-test-helper />
+
<deployer-manager resource="pvm.language.deployers.xml">
<language name="api">
<verify-version />
@@ -45,8 +49,8 @@
<transaction />
<hibernate-session />
<pvm-db-session />
- <message-session target="test" />
- <timer-session target="test" />
+ <message-session />
+ <timer-session />
</environment>
</contexts>
17 years, 8 months
JBoss JBPM SVN: r1874 - jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor.
by do-not-reply@jboss.org
Author: porcherg
Date: 2008-08-12 07:46:56 -0400 (Tue, 12 Aug 2008)
New Revision: 1874
Added:
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor/JobExecutorIsolationDbTest.java
Log:
job executor test with read committed isolation level
Added: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor/JobExecutorIsolationDbTest.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor/JobExecutorIsolationDbTest.java (rev 0)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor/JobExecutorIsolationDbTest.java 2008-08-12 11:46:56 UTC (rev 1874)
@@ -0,0 +1,82 @@
+/**
+ * Copyright (C) 2007 Bull S. A. S.
+ * Bull, Rue Jean Jaures, B.P.68, 78340, Les Clayes-sous-Bois
+ * This library 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
+ * version 2.1 of the License.
+ * This library 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
+ * program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+ * Floor, Boston, MA 02110-1301, USA.
+ **/
+package org.jbpm.pvm.internal.jobexecutor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.internal.job.CommandMessage;
+import org.jbpm.pvm.internal.log.Log;
+import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
+import org.jbpm.pvm.job.Message;
+import org.jbpm.pvm.session.MessageSession;
+import org.jbpm.pvm.session.PvmDbSession;
+import org.jbpm.pvm.test.base.DbTestCase;
+
+
+/**
+ * This class contains job executor tests which requires to have a read commited isolation level.
+ *
+ * @author Guillaume Porcher
+ *
+ */
+public class JobExecutorIsolationDbTest extends DbTestCase {
+
+ static int jobExecutorTimeoutMillis = 500;
+ static int checkInterval = 400;
+
+ public static class SimpleTestCommand implements Command<Object> {
+ private static final Log log = Log.getLog(SimpleTestCommand.class.getName());
+
+ public Object execute(Environment environment) throws Exception {
+ log.debug("command executed !");
+ return null;
+ }
+ }
+
+ /*
+ * Basic test that only shows a simple situation in which we need to have a read commited isolation level.
+ */
+ public void testInsertMessage() throws InterruptedException {
+ JobExecutorTest.processedMessageIds = new ArrayList<Integer>();
+ JobExecutor jobExecutor = getEnvironmentFactory().get(JobExecutor.class);
+ jobExecutor.setIdleInterval(jobExecutorTimeoutMillis);
+ jobExecutor.start();
+ try {
+ commandService.execute(new Command<Object>() {
+ public Object execute(Environment environment) throws Exception {
+ MessageSession messageSession = environment.get(MessageSession.class);
+ CommandMessage commandMessage = new CommandMessage(new ObjectDescriptor(SimpleTestCommand.class));
+ messageSession.send(commandMessage);
+ List<Message> messages = environment.get(PvmDbSession.class).findMessages();
+ assertNotNull(messages);
+ assertEquals(1, messages.size());
+ Thread.sleep(jobExecutorTimeoutMillis * 2);
+ messages = environment.get(PvmDbSession.class).findMessages();
+ assertNotNull(messages);
+ assertEquals("Job has been executed before the transaction is committed !!", 1, messages.size());
+ return null;
+ }
+ });
+ Thread.sleep(jobExecutorTimeoutMillis * 2);
+ } finally {
+ jobExecutor.stop(true);
+ }
+
+
+ }
+
+}
Property changes on: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/jobexecutor/JobExecutorIsolationDbTest.java
___________________________________________________________________
Name: svn:keywords
+ Id
17 years, 8 months
JBoss JBPM SVN: r1873 - jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/db/model.
by do-not-reply@jboss.org
Author: porcherg
Date: 2008-08-12 07:43:55 -0400 (Tue, 12 Aug 2008)
New Revision: 1873
Modified:
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/db/model/HibernateJobDbSessionTest.java
Log:
migrate to EnvironmentDbTestCase (todo: check if these tests are really needed)
Modified: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/db/model/HibernateJobDbSessionTest.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/db/model/HibernateJobDbSessionTest.java 2008-08-12 11:36:35 UTC (rev 1872)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/db/model/HibernateJobDbSessionTest.java 2008-08-12 11:43:55 UTC (rev 1873)
@@ -1,210 +1,162 @@
package org.jbpm.pvm.internal.db.model;
-import org.jbpm.pvm.test.base.JbpmTestCase;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import org.jbpm.pvm.ManagementService;
+import org.jbpm.pvm.env.Environment;
+import org.jbpm.pvm.internal.job.JobImpl;
+import org.jbpm.pvm.internal.job.TimerImpl;
+import org.jbpm.pvm.internal.jobexecutor.JobDbSession;
+import org.jbpm.pvm.internal.model.ExecutionImpl;
+import org.jbpm.pvm.job.Timer;
+import org.jbpm.pvm.session.DbSession;
+import org.jbpm.pvm.test.base.EnvironmentDbTestCase;
+
/**
* @author Pascal Verdage
*/
-public abstract class HibernateJobDbSessionTest extends JbpmTestCase
+public class HibernateJobDbSessionTest extends EnvironmentDbTestCase
{
-
- /*
-
- // TODO use environment.cfg.xml resource in this package instead
- // TODO sub class from DbTestCase to get the db cleaning inbetween tests and automatic environment set up. use newTransaction() to demarcate new transaction
-
- protected static String xmlString =
- "<contexts>" +
- " <environment-factory>" +
- " <hibernate-configuration>" +
- " <properties resource='hibernate.properties' />" +
- " <mappings resources='org/jbpm/pvm/pvm.hibernate.mappings.xml' /> " +
- " <mapping resource='org/jbpm/svc/jobsession/JobSessionTest.hbm.xml' />" +
- " <cache-configuration resource='org/jbpm/pvm/pvm.cache.xml' usage='nonstrict-read-write' />" +
- " </hibernate-configuration>" +
- " <hibernate-session-factory />" +
- " <command-service />" +
- " <pvm-service />" +
- " </environment-factory>" +
- " <environment>" +
- " <transaction />" +
- " <hibernate-session />" +
- " <pvm-db-session />" +
- " <jobImpl-session />" +
- " </environment>" +
- "</contexts>";
-
- protected EnvironmentFactory environmentFactory;
protected long executionId;
@Override
public void setUp() throws Exception {
super.setUp();
- environmentFactory = PvmEnvironmentFactory.parseXmlString(xmlString));
- assertNull(Environment.getCurrent());
- environmentFactory.openEnvironment();
- try {
- ExecutionImpl execution = new ExecutionImpl();
- execution.setProcessInstance(execution);
- Environment.getCurrent().get(DbSession.class).save(execution);
- executionId = execution.getDbid();
- } finally {
- Environment.getCurrent().close();
- }
+ assertNotNull(Environment.getCurrent());
+
+ ExecutionImpl execution = new ExecutionImpl();
+ execution.setProcessInstance(execution);
+ Environment.getCurrent().get(DbSession.class).save(execution);
+ executionId = execution.getDbid();
+
+ newTransaction();
}
@Override
public void tearDown() throws Exception {
- environmentFactory.openEnvironment();
- try {
- DbSession dbSession = Environment.getCurrent().get(DbSession.class);
- dbSession.delete(dbSession.get(ExecutionImpl.class, executionId));
- executionId = 0;
- } finally {
- Environment.getCurrent().close();
- }
- DbTestCase.cleanDb(environmentFactory);
+ newTransaction();
+
+ DbSession dbSession = Environment.getCurrent().get(DbSession.class);
+ dbSession.delete(dbSession.get(ExecutionImpl.class, executionId));
+ executionId = 0;
+
super.tearDown();
}
private ExecutionImpl getExecution() {
assertNotNull(Environment.getCurrent());
- return Environment.getCurrent().get(DbSession.class)
- .get(ExecutionImpl.class, executionId);
+ return Environment.getCurrent().get(DbSession.class).get(ExecutionImpl.class, executionId);
}
- private void cleanJobs() {
- environmentFactory.openEnvironment();
- try {
- PvmService pvmService = Environment.getCurrent().get(PvmService.class);
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- for (JobImpl<?> jobImpl : pvmService.getJobs()) {
- jobDbSession.delete(jobImpl);
- }
- } finally {
- Environment.getCurrent().close();
+ private void cleanTimers() {
+ ManagementService pvmService = Environment.getCurrent().get(ManagementService.class);
+ JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ for (Timer jobImpl : pvmService.getTimers()) {
+ jobDbSession.delete(jobImpl);
}
}
- /** Test the methods save, get and delete with only one jobImpl
+ /** Test the methods save, get and delete with only one jobImpl */
public void testSaveGetDelete() {
long id;
- environmentFactory.openEnvironment();
- try {
- JobImpl<?> jobImpl = new TestJob();
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- assertNull(jobDbSession.getJob(jobImpl.getDbid()));
- assertEquals(0,jobImpl.getDbid());
- jobDbSession.save(jobImpl);
- id = jobImpl.getDbid();
- assertNotSame(0, jobDbSession.getJob(id));
- assertNotNull(id);
- } finally {
- Environment.getCurrent().close();
- }
- environmentFactory.openEnvironment();
- try {
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- JobImpl<?> jobImpl = jobDbSession.getJob(id);
- assertNotNull(jobImpl);
- jobDbSession.delete(jobImpl);
- assertNull(jobDbSession.getJob(id));
- } finally {
- Environment.getCurrent().close();
- }
+
+ JobImpl<?> jobImpl = new TimerImpl();
+ JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ assertNull(jobDbSession.getJob(jobImpl.getDbid()));
+ assertEquals(0,jobImpl.getDbid());
+ jobDbSession.save(jobImpl);
+ id = jobImpl.getDbid();
+ assertNotSame(0, jobDbSession.getJob(id));
+ assertNotNull(id);
+
+ newTransaction();
+
+ jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ jobImpl = jobDbSession.getJob(id);
+ assertNotNull(jobImpl);
+ jobDbSession.delete(jobImpl);
+ assertNull(jobDbSession.getJob(id));
}
/**
* Test the method save with two jobs:
* check that the jobs are given different ids.
+ */
public void testSaveTwoJobs() {
- environmentFactory.openEnvironment();
- try {
- JobImpl<?> job1 = new TestJob();
- JobImpl<?> job2 = new TestJob();
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- jobDbSession.save(job1);
- jobDbSession.save(job2);
- assertNotSame(job1.getDbid(), job2.getDbid());
- jobDbSession.delete(job1);
- jobDbSession.delete(job2);
- } finally {
- Environment.getCurrent().close();
- }
+ JobImpl<?> job1 = new TimerImpl();
+ JobImpl<?> job2 = new TimerImpl();
+ JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ jobDbSession.save(job1);
+ jobDbSession.save(job2);
+ assertNotSame(job1.getDbid(), job2.getDbid());
+ jobDbSession.delete(job1);
+ jobDbSession.delete(job2);
}
/**
- * Test the method getFirstAcquirableJob.
+ * Test the method findFirstAcquirableJob.
* test cases are:
- * <ul>
- * <li>no jobImpl scheduled</li>
- * <li>invalid jobs scheduled: locked or not due</li>
- * <li>comparison between valid cases. The comparison is made on the
+ * - no jobImpl scheduled
+ * - invalid jobs scheduled: locked or not due
+ * - comparison between valid cases. The comparison is made on the
* acquiring order according to the fields dueDate and lockExpirationTime.
* the awaited result is:
- * <ol>
- * <li>none field null, dueDate previous to case 2</li>
- * <li>lockExpirationTime null</li>
- * <li>dueDate null</li>
- * <li>both fields null</li>
- * </ol>The last two jobs can come in any order</li>
- * </ul>
- public void testGetFirstAcquirableJob() {
+ * 1- none field null, dueDate previous to case 2
+ * 2- lockExpirationTime null
+ * 3- dueDate null
+ * 4- both fields null
+ * The last two jobs can come in any order.
+ */
+ public void testFindFirstAcquirableJob() {
long id1, id2, id3, id4;
long timestamp = System.currentTimeMillis();
- environmentFactory.openEnvironment();
- try {
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- // no jobImpl scheduled
- assertNull(jobDbSession.findFirstAcquirableJob());
+
+ JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ // no jobImpl scheduled
+ assertNull(jobDbSession.findFirstAcquirableJob());
- // unavailable jobs
- JobImpl<?> job1 = new TestJob();
- JobImpl<?> job2 = new TestJob();
- job1.setLockExpirationTime(new Date(Long.MAX_VALUE));
- job2.setDueDate(new Date(Long.MAX_VALUE));
- jobDbSession.save(job1);
- jobDbSession.save(job2);
- } finally {
- Environment.getCurrent().close();
- }
- environmentFactory.openEnvironment();
- try {
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- assertNull(jobDbSession.findFirstAcquirableJob());
+ // unavailable jobs
+ JobImpl<?> job1 = new TimerImpl();
+ JobImpl<?> job2 = new TimerImpl();
+ job1.setLockExpirationTime(new Date(Long.MAX_VALUE));
+ job2.setDueDate(new Date(Long.MAX_VALUE));
+ jobDbSession.save(job1);
+ jobDbSession.save(job2);
- // valid jobs
- JobImpl<?> job1 = new TestJob();
- JobImpl<?> job2 = new TestJob();
- JobImpl<?> job3 = new TestJob();
- JobImpl<?> job4 = new TestJob();
- job3.setDueDate(new Date(timestamp));
- job4.setDueDate(new Date(timestamp - 200));
- job2.setLockExpirationTime(new Date(timestamp));
- job4.setLockExpirationTime(new Date(timestamp));
- jobDbSession.save(job1);
- jobDbSession.save(job2);
- jobDbSession.save(job3);
- jobDbSession.save(job4);
- id1 = job1.getDbid();
- id2 = job2.getDbid();
- id3 = job3.getDbid();
- id4 = job4.getDbid();
- } finally {
- Environment.getCurrent().close();
- }
+ newTransaction();
+
+ jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ assertNull(jobDbSession.findFirstAcquirableJob());
+
+ // valid jobs
+ job1 = new TimerImpl();
+ job2 = new TimerImpl();
+ JobImpl<?> job3 = new TimerImpl();
+ JobImpl<?> job4 = new TimerImpl();
+ job3.setDueDate(new Date(timestamp));
+ job4.setDueDate(new Date(timestamp - 200));
+ job2.setLockExpirationTime(new Date(timestamp));
+ job4.setLockExpirationTime(new Date(timestamp));
+ jobDbSession.save(job1);
+ jobDbSession.save(job2);
+ jobDbSession.save(job3);
+ jobDbSession.save(job4);
+ id1 = job1.getDbid();
+ id2 = job2.getDbid();
+ id3 = job3.getDbid();
+ id4 = job4.getDbid();
+
+ newTransaction();
+
List<Long> ids = new ArrayList<Long>();
- environmentFactory.openEnvironment();
- try {
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- JobImpl<?> jobImpl = jobDbSession.findFirstAcquirableJob();
- while (jobImpl != null) {
- ids.add(jobImpl.getDbid());
- jobDbSession.delete(jobImpl);
- jobImpl = jobDbSession.findFirstAcquirableJob();
- }
- } finally {
- Environment.getCurrent().close();
+ jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ JobImpl<?> jobImpl = jobDbSession.findFirstAcquirableJob();
+ while (jobImpl != null) {
+ ids.add(jobImpl.getDbid());
+ jobDbSession.delete(jobImpl);
+ jobImpl = jobDbSession.findFirstAcquirableJob();
}
assertEquals(4, ids.size());
assertEquals(id4, ids.get(0).longValue());
@@ -218,132 +170,122 @@
/**
* Test the findExclusiveJobs method.
* Considered jobImpl are:
- * <ul><li>a jobImpl not registered for the example execution</li>
- * <li>a locked jobImpl</li>
- * <li>a non-exclusive jobImpl</li>
- * <li>a non available jobImpl</li>
- * <li>two valid jobs, exclusive, available and registered
- * for the example execution</li></ul>
-
- TODO html in unit test docs is not necessary. this docs are only intended for the one trying to understand the test case. so he's already in the source code. he/she shouldn't be forced to generate and read the javadocs.
-
+ * - a jobImpl not registered for the example execution
+ * - a locked jobImpl
+ * - a non-exclusive jobImpl
+ * - a non available jobImpl
+ * - two valid jobs, exclusive, available and registered
+ * for the example execution
+ */
public void testFindExclusiveJobs() {
long id5, id6;
- environmentFactory.openEnvironment();
- try {
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- ExecutionImpl execution = getExecution();
- assertEquals(0, jobDbSession.findExclusiveJobs(execution).size());
- // a jobImpl does not belong to the execution
- JobImpl<?> job1 = new TestJob();
- JobImpl<?> job2 = new TestJob(execution);
- JobImpl<?> job3 = new TestJob(execution);
- JobImpl<?> job4 = new TestJob(execution);
- JobImpl<?> job5 = new TestJob(execution);
- JobImpl<?> job6 = new TestJob(execution);
- // a jobImpl is not exclusive
- job1.setExclusive(true);
- job2.setExclusive(true);
- job3.setExclusive(false);
- job4.setExclusive(true);
- job5.setExclusive(true);
- job6.setExclusive(true);
- // a jobImpl is locked
- job2.setLockOwner("a jobExecutor");
- // a jobImpl's due date is not past
- job1.setDueDate(null);
- job2.setDueDate(null);
- job3.setDueDate(null);
- job4.setDueDate(new Date(Long.MAX_VALUE));
- job5.setDueDate(null);
- job6.setDueDate(new Date());
- jobDbSession.save(job1);
- jobDbSession.save(job2);
- jobDbSession.save(job3);
- jobDbSession.save(job4);
- jobDbSession.save(job5);
- jobDbSession.save(job6);
- id5 = job5.getDbid();
- id6 = job6.getDbid();
- } finally {
- Environment.getCurrent().close();
- }
- environmentFactory.openEnvironment();
- try {
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- ExecutionImpl processInstance = getExecution();
- List<JobImpl<?>> list = jobDbSession.findExclusiveJobs(processInstance);
- assertEquals(2, list.size());
- long result1 = list.get(0).getDbid();
- long result2 = list.get(1).getDbid();
- assertTrue( (result1==id5 && result2==id6) ||
- (result1==id6 && result2==id5));
- } finally {
- Environment.getCurrent().close();
- }
- cleanJobs();
+
+ JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ ExecutionImpl execution = getExecution();
+ assertEquals(0, jobDbSession.findExclusiveJobs(execution).size());
+ // a jobImpl does not belong to the execution
+ JobImpl<?> job1 = new TimerImpl();
+ JobImpl<?> job2 = new TimerImpl();
+ job2.setExecution(execution);
+ JobImpl<?> job3 = new TimerImpl();
+ job3.setExecution(execution);
+ JobImpl<?> job4 = new TimerImpl();
+ job4.setExecution(execution);
+ JobImpl<?> job5 = new TimerImpl();
+ job5.setExecution(execution);
+ JobImpl<?> job6 = new TimerImpl();
+ job6.setExecution(execution);
+ // a jobImpl is not exclusive
+ job1.setExclusive(true);
+ job2.setExclusive(true);
+ job3.setExclusive(false);
+ job4.setExclusive(true);
+ job5.setExclusive(true);
+ job6.setExclusive(true);
+ // a jobImpl is locked
+ job2.setLockOwner("a jobExecutor");
+ // a jobImpl's due date is not past
+ job1.setDueDate(null);
+ job2.setDueDate(null);
+ job3.setDueDate(null);
+ job4.setDueDate(new Date(Long.MAX_VALUE));
+ job5.setDueDate(null);
+ job6.setDueDate(new Date());
+ jobDbSession.save(job1);
+ jobDbSession.save(job2);
+ jobDbSession.save(job3);
+ jobDbSession.save(job4);
+ jobDbSession.save(job5);
+ jobDbSession.save(job6);
+ id5 = job5.getDbid();
+ id6 = job6.getDbid();
+
+ newTransaction();
+
+ jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ ExecutionImpl processInstance = getExecution();
+ List<JobImpl<?>> list = jobDbSession.findExclusiveJobs(processInstance);
+ assertEquals(2, list.size());
+ long result1 = list.get(0).getDbid();
+ long result2 = list.get(1).getDbid();
+ assertTrue( (result1==id5 && result2==id6) ||
+ (result1==id6 && result2==id5));
+
+ newTransaction();
+ cleanTimers();
}
- public void testGetFirstDueJob() {
+ public void testFindFirstDueJob() {
long id2, id3, id4;
long timestamp = System.currentTimeMillis();
- environmentFactory.openEnvironment();
- try {
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- assertNull(jobDbSession.findFirstDueJob());
- JobImpl<?> job1 = new TestJob();
- JobImpl<?> job2 = new TestJob();
- JobImpl<?> job3 = new TestJob();
- JobImpl<?> job4 = new TestJob();
- // a jobImpl is locked
- job1.setLockOwner("a jobExecutor");
- job2.setDueDate(null);
- job3.setDueDate(new Date(timestamp - 200));
- job4.setDueDate(new Date(timestamp));
- jobDbSession.save(job1);
- jobDbSession.save(job2);
- jobDbSession.save(job3);
- jobDbSession.save(job4);
- id2 = job2.getDbid();
- id3 = job3.getDbid();
- id4 = job4.getDbid();
- } finally {
- Environment.getCurrent().close();
- }
+
+ JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ assertNull(jobDbSession.findFirstDueJob());
+ JobImpl<?> job1 = new TimerImpl();
+ JobImpl<?> job2 = new TimerImpl();
+ JobImpl<?> job3 = new TimerImpl();
+ JobImpl<?> job4 = new TimerImpl();
+ // a jobImpl is locked
+ job1.setLockOwner("a jobExecutor");
+ job2.setDueDate(null);
+ job3.setDueDate(new Date(timestamp - 200));
+ job4.setDueDate(new Date(timestamp));
+ jobDbSession.save(job1);
+ jobDbSession.save(job2);
+ jobDbSession.save(job3);
+ jobDbSession.save(job4);
+ id2 = job2.getDbid();
+ id3 = job3.getDbid();
+ id4 = job4.getDbid();
+
+ newTransaction();
List<Long> ids = new ArrayList<Long>();
- environmentFactory.openEnvironment();
- try {
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
- JobImpl<?> jobImpl = jobDbSession.findFirstDueJob();
- while (jobImpl != null) {
- ids.add(jobImpl.getDbid());
- jobDbSession.delete(jobImpl);
- jobImpl = jobDbSession.findFirstDueJob();
- }
- } finally {
- Environment.getCurrent().close();
+
+ jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ JobImpl<?> jobImpl = jobDbSession.findFirstDueJob();
+ while (jobImpl != null) {
+ ids.add(jobImpl.getDbid());
+ jobDbSession.delete(jobImpl);
+ jobImpl = jobDbSession.findFirstDueJob();
}
+
assertEquals(3, ids.size());
assertEquals(id2, ids.get(0).longValue());
assertEquals(id3, ids.get(1).longValue());
assertEquals(id4, ids.get(2).longValue());
- cleanJobs();
+ newTransaction();
+ cleanTimers();
}
-
- TODO don't put a comment if it doesn't explain more then what you can easily
- read in the code. in this case the comment doesn't explain more then the method name.
- i have removed following such comments already
-
- /** Test the method findAllTimers
+ /*
public void testFindAllTimers() {
long id1, id2;
environmentFactory.openEnvironment();
try {
- JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
+ JobDbSession jobDbSession = Environment.getCurrent().get(PvmDbSession.class);
assertTrue(jobDbSession.findAllTimers().isEmpty());
ExecutionImpl execution = getExecution();
- JobImpl<?> jobImpl = new TestJob();
+ JobImpl<?> jobImpl = new TimerImpl();
JobImpl<?> timer1 = new TimerImpl(execution);
JobImpl<?> timer2 = new TimerImpl(execution);
timer1.setDueDate(new Date());
@@ -371,7 +313,7 @@
assertEquals(id2, timers.get(0).getDbid());
assertEquals(id1, timers.get(1).getDbid());
}
- cleanJobs();
+ cleanTimers();
}
public void testFindTimers() {
@@ -417,7 +359,7 @@
assertEquals(id2, timers.get(0).getDbid());
assertEquals(id1, timers.get(1).getDbid());
}
- cleanJobs();
+ cleanTimers();
environmentFactory.openEnvironment();
try {
DbSession dbSession = Environment.getCurrent().get(DbSession.class);
@@ -433,7 +375,7 @@
try {
JobDbSession jobDbSession = Environment.getCurrent().get(JobDbSession.class);
ExecutionImpl execution = getExecution();
- JobImpl<?> jobImpl = new TestJob();
+ JobImpl<?> jobImpl = new TimerImpl();
JobImpl<?> timer1 = execution.createTimer("e", "s", "200 millis");
JobImpl<?> timer2 = new TimerImpl(execution);
JobImpl<?> timer3 = new TimerImpl(execution);
@@ -467,8 +409,7 @@
assertEquals(id1, ids.get(0).longValue());
assertEquals(id3, ids.get(1).longValue());
assertEquals(id2, ids.get(2).longValue());
- cleanJobs();
+ cleanTimers();
}
-
- */
+*/
}
17 years, 8 months
JBoss JBPM SVN: r1872 - jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/job.
by do-not-reply@jboss.org
Author: porcherg
Date: 2008-08-12 07:36:35 -0400 (Tue, 12 Aug 2008)
New Revision: 1872
Modified:
jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/job/CommandMessage.java
Log:
job is deleted after being executed
Modified: jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/job/CommandMessage.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/job/CommandMessage.java 2008-08-12 11:06:47 UTC (rev 1871)
+++ jbpm4/pvm/trunk/modules/core/src/main/java/org/jbpm/pvm/internal/job/CommandMessage.java 2008-08-12 11:36:35 UTC (rev 1872)
@@ -23,6 +23,7 @@
import org.jbpm.pvm.env.Environment;
import org.jbpm.pvm.internal.cmd.Command;
+import org.jbpm.pvm.internal.jobexecutor.JobDbSession;
import org.jbpm.pvm.internal.wire.Descriptor;
import org.jbpm.pvm.internal.wire.WireContext;
@@ -44,6 +45,9 @@
public Object execute(Environment environment) throws Exception {
Command<Object> command = (Command<Object>) WireContext.create(commandDescriptor);
command.execute(environment);
+
+ JobDbSession jobDbSession = environment.get(JobDbSession.class);
+ jobDbSession.delete(this);
return null;
}
17 years, 8 months