[jbpm-commits] JBoss JBPM SVN: r1877 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/model and 16 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Aug 12 10:30:23 EDT 2008


Author: thomas.diesler at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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>




More information about the jbpm-commits mailing list