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

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Aug 14 09:29:28 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-08-14 09:29:28 -0400 (Thu, 14 Aug 2008)
New Revision: 1889

Added:
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeAPITest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitAPITest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeAPITest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitAPITest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeAPITest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitAPITest.java
Removed:
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java
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/model/Property.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBActivity.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBGateway.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBIntermediateEvent.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBStartEvent.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/client/internal/RunnableToken.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/InclusiveGatewayImpl.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/PropertyImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
   jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml
   jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-stp-api10.xml
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
Log:
Add gateway API tests. Optimize thread handling

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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -23,6 +23,8 @@
 
 import java.net.URL;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.jboss.bpm.BPMException;
 import org.jboss.bpm.client.internal.EmbeddedBeansDeployer;
 import org.jboss.kernel.Kernel;
@@ -41,6 +43,9 @@
  */
 public class ProcessEngine
 {
+  // provide logging
+  private static final Log log = LogFactory.getLog(ProcessEngine.class);
+  
   /** The process engine bean name - jBPMEngine */
   public static final String BEAN_NAME = "jBPMProcessEngine";
   /** The default bean config: jbpm-beans.xml */
@@ -110,6 +115,7 @@
    */
   public void prepareForShutdown()
   {
+    log.debug("prepareForShutdown");
     prepareForShutdown = true;
   }
 
@@ -126,6 +132,7 @@
    */
   public void cancelShutdown()
   {
+    log.debug("cancelShutdown");
     prepareForShutdown = false;
   }
 

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -48,7 +48,7 @@
    * Each Property has a Type (e.g., type=”String”). Properties may be defined
    * hierarchically.
    */
-  PropertyType getType();
+  PropertyType getPropertyType();
   
   /**
    * Each Property MAY have a Value specified.

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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -76,7 +76,7 @@
     return fromRef;
   }
 
-  public SignalType getType()
+  public SignalType getSignalType()
   {
     return type;
   }

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -26,10 +26,12 @@
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.Writer;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 
 import javax.management.ObjectName;
 
@@ -101,6 +103,16 @@
     MessageManager messageManager = MessageManager.locateMessageManager();
     messageManager.removeMessageListener(getMessageListenerID());
     
+    // Check that there are no registered processes left 
+    ProcessManager procManager = ProcessManager.locateProcessManager();
+    Set<Process> procs = procManager.getProcesses();
+    if (procs.size() > 0)
+    {
+      String logMsg = "Registered processes on tear down of " + getName() + ": " + procs;
+      System.out.println(logMsg);
+      log.warn(logMsg);
+    }
+    
     super.tearDown();
   }
 
@@ -163,7 +175,7 @@
     List<Signal> retSignals = new ArrayList<Signal>();
     for (Signal sig : signals)
     {
-      if (sig.getType() == type)
+      if (sig.getSignalType() == type)
         retSignals.add(sig); 
     }
     return Collections.unmodifiableList(retSignals);
@@ -200,15 +212,24 @@
     return Collections.unmodifiableList(messages);
   }
   
-  public void marshallProcess(Process proc) 
+  /**
+   * Marshall the given process
+   * @param out if null, the proces is marshalled to a file
+   */
+  public void marshallProcess(Process proc, Writer out) 
   {
     try
     {
-      File file = new File(getName() + "-api10.xml");
+      if (out == null)
+      {
+        File file = new File("target/" + getName() + "-api10.xml");
+        out = new FileWriter(file);
+        System.out.println("Marshall process to: " + file.getCanonicalPath());
+      }
+      
       ProcessManager pm = ProcessManager.locateProcessManager();
       DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
-      dhapi.marshallProcess(proc, new FileWriter(file));
-      System.out.println("marshalled: " + file.getCanonicalPath());
+      dhapi.marshallProcess(proc, out);
     }
     catch (IOException ex)
     {

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -50,6 +50,8 @@
 import org.jboss.bpm.dialect.api10.model.JAXBProcess;
 import org.jboss.bpm.dialect.api10.model.JAXBProperty;
 import org.jboss.bpm.dialect.api10.model.JAXBSequenceFlow;
+import org.jboss.bpm.dialect.api10.model.JAXBSignal;
+import org.jboss.bpm.dialect.api10.model.JAXBSignalEventDetail;
 import org.jboss.bpm.dialect.api10.model.JAXBSignalHandler;
 import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
 import org.jboss.bpm.dialect.api10.model.JAXBTask;
@@ -57,6 +59,7 @@
 import org.jboss.bpm.model.ComplexGateway;
 import org.jboss.bpm.model.EndEvent;
 import org.jboss.bpm.model.Event;
+import org.jboss.bpm.model.EventDetail;
 import org.jboss.bpm.model.ExclusiveGateway;
 import org.jboss.bpm.model.Expression;
 import org.jboss.bpm.model.ConnectingObject;
@@ -74,8 +77,11 @@
 import org.jboss.bpm.model.ReceiveTask;
 import org.jboss.bpm.model.SendTask;
 import org.jboss.bpm.model.SequenceFlow;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalEventDetail;
 import org.jboss.bpm.model.StartEvent;
 import org.jboss.bpm.model.Task;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
 import org.jboss.bpm.model.SequenceFlow.ConditionType;
 import org.jboss.bpm.runtime.ExecutionHandler;
 import org.jboss.bpm.runtime.FlowHandler;
@@ -143,7 +149,24 @@
     {
       StartEvent start = (StartEvent)event;
       JAXBStartEvent jaxbStart = new JAXBStartEvent();
+      jaxbStart.setName(start.getName());
       jaxbStart.setOutFlow(getJAXBFlow(start.getOutFlow()));
+      for (EventDetail trigger : start.getTrigger())
+      {
+        EventDetailType type = trigger.getEventDetailType();
+        if (type == EventDetailType.Signal)
+        {
+          SignalEventDetail signalTrigger = (SignalEventDetail)trigger;
+          Signal signal = signalTrigger.getSignalRef();
+          JAXBSignalEventDetail jaxbTrigger = new JAXBSignalEventDetail();
+          jaxbTrigger.setSignal(new JAXBSignal(signal.getSignalType(), signal.getMessage()));
+          jaxbStart.getTrigger().add(jaxbTrigger);
+        }
+        else
+        {
+          throw new NotImplementedException("Trigger: " + type);
+        }
+      }
       jaxb = jaxbStart;
     }
     else if (event instanceof EndEvent)

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -42,6 +42,7 @@
 import org.jboss.bpm.dialect.api10.model.JAXBComplexGateway;
 import org.jboss.bpm.dialect.api10.model.JAXBEndEvent;
 import org.jboss.bpm.dialect.api10.model.JAXBEvent;
+import org.jboss.bpm.dialect.api10.model.JAXBEventDetail;
 import org.jboss.bpm.dialect.api10.model.JAXBExclusiveGateway;
 import org.jboss.bpm.dialect.api10.model.JAXBExpression;
 import org.jboss.bpm.dialect.api10.model.JAXBFlow;
@@ -58,10 +59,13 @@
 import org.jboss.bpm.dialect.api10.model.JAXBProcess;
 import org.jboss.bpm.dialect.api10.model.JAXBProperty;
 import org.jboss.bpm.dialect.api10.model.JAXBSequenceFlow;
+import org.jboss.bpm.dialect.api10.model.JAXBSignal;
+import org.jboss.bpm.dialect.api10.model.JAXBSignalEventDetail;
 import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
 import org.jboss.bpm.dialect.api10.model.JAXBSupportingElement;
 import org.jboss.bpm.dialect.api10.model.JAXBTask;
 import org.jboss.bpm.dialect.api10.model.ObjectFactory;
+import org.jboss.bpm.model.EventBuilder;
 import org.jboss.bpm.model.GatewayBuilder;
 import org.jboss.bpm.model.MessageBuilder;
 import org.jboss.bpm.model.Process;
@@ -184,8 +188,21 @@
   {
     if (jaxb instanceof JAXBStartEvent)
     {
-      procBuilder.addStartEvent("Start");
       JAXBStartEvent jaxbStart = (JAXBStartEvent)jaxb;
+      EventBuilder eventBuilder = procBuilder.addStartEvent(jaxbStart.getName());
+      for(JAXBEventDetail jaxbTrigger : jaxbStart.getTrigger())
+      {
+        if (jaxbTrigger instanceof JAXBSignalEventDetail)
+        {
+          JAXBSignalEventDetail jaxbSignalTrigger = (JAXBSignalEventDetail)jaxbTrigger;
+          JAXBSignal jaxbSignal = jaxbSignalTrigger.getSignal();
+          eventBuilder.addSignalTrigger(jaxbSignal.getType(), jaxbSignal.getMessage());
+        }
+        else
+        {
+          throw new NotImplementedException("Trigger: " + jaxbTrigger);
+        }
+      }
       addOutFlow(procBuilder, jaxbStart.getOutFlow());
     }
     else if (jaxb instanceof JAXBEndEvent)

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBActivity.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBActivity.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBActivity.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -40,18 +40,11 @@
 {
   private String name;
   
-  /**
-   * Get the name
-   */
   public String getName()
   {
     return name;
   }
 
-  /**
-   * Set the name. 
-   * Note, this MUST NOT leak into the public API.
-   */
   @XmlAttribute(required = true)
   public void setName(String name)
   {

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -40,18 +40,11 @@
 {
   private String name;
 
-  /**
-   * Get the name
-   */
   public String getName()
   {
     return name;
   }
 
-  /**
-   * Set the name. 
-   * Note, this MUST NOT leak into the public API.
-   */
   @XmlAttribute(required = true)
   public void setName(String name)
   {

Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,37 @@
+/*
+ * 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.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The base of all supported event details
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at XmlType(name = "EventDetail")
+public class JAXBEventDetail extends JAXBSupportingElement
+{
+}
\ No newline at end of file


Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBGateway.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBGateway.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBGateway.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -57,10 +57,6 @@
     return name;
   }
 
-  /**
-   * Set the name. 
-   * Note, this MUST NOT leak into the public API.
-   */
   @XmlAttribute(required = true)
   public void setName(String name)
   {

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBIntermediateEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBIntermediateEvent.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBIntermediateEvent.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -21,7 +21,6 @@
  */
 package org.jboss.bpm.dialect.api10.model;
 
-import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlTransient;
@@ -43,32 +42,12 @@
 @XmlType(name="ItermediateEvent")
 public class JAXBIntermediateEvent extends JAXBEvent
 {
-  private String name;
-  
   @XmlElements( { 
     @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class), 
     @XmlElement(name = "msgflow", type = JAXBMessageFlow.class) 
     })
   private JAXBFlow outFlow;
   
-  public String getName()
-  {
-    return name;
-  }
-
-  /**
-   * Set the name. 
-   * Note, this MUST NOT leak into the public API.
-   */
-  @XmlAttribute(required = true)
-  public void setName(String name)
-  {
-    if (this.name != null)
-      throw new IllegalStateException("Cannot rename: " + name);
-
-    this.name = name;
-  }
-  
   public JAXBFlow getOutFlow()
   {
     return outFlow;

Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,75 @@
+/*
+ * 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.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.bpm.model.Signal.SignalType;
+
+/**
+ * The base of all supported event details
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at XmlType(name = "Signal")
+public class JAXBSignal
+{
+  private SignalType type;
+  private String message;
+
+  public JAXBSignal()
+  {
+  }
+
+  public JAXBSignal(SignalType type, String message)
+  {
+    this.type = type;
+    this.message = message;
+  }
+
+  public SignalType getType()
+  {
+    return type;
+  }
+
+  @XmlAttribute(required = true)
+  public void setType(SignalType type)
+  {
+    this.type = type;
+  }
+
+  public String getMessage()
+  {
+    return message;
+  }
+
+  @XmlElement
+  public void setMessage(String message)
+  {
+    this.message = message;
+  }
+}
\ No newline at end of file


Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,51 @@
+/*
+ * 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.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The Signal event detail
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at XmlType(name = "SignalEventDetail")
+public class JAXBSignalEventDetail extends JAXBEventDetail
+{
+  private JAXBSignal signal;
+
+  public JAXBSignal getSignal()
+  {
+    return signal;
+  }
+
+  @XmlElement
+  public void setSignal(JAXBSignal signal)
+  {
+    this.signal = signal;
+  }
+  
+}
\ No newline at end of file


Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBStartEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBStartEvent.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBStartEvent.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -23,26 +23,49 @@
 
 //$Id$
 
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 /**
- * A Start Event indicates where a particular Process will start. In terms of Sequence Flow, the Start Event starts the Flow of the Process, and thus, will not have any
- * incoming Sequence Flow. A Start Event can have a Trigger that indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
+ * A Start Event indicates where a particular Process will start. In terms of Sequence Flow, the Start Event starts the
+ * Flow of the Process, and thus, will not have any incoming Sequence Flow. A Start Event can have a Trigger that
+ * indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
  * 
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at XmlType(name = "AbstractStartEvent")
+ at XmlType(name = "AbstractStartEvent", propOrder = { "outFlow", "trigger" })
 public class JAXBStartEvent extends JAXBEvent
 {
   @XmlElements( { 
-    @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class), 
+    @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class),
     @XmlElement(name = "msgflow", type = JAXBMessageFlow.class) })
   private JAXBFlow outFlow;
 
+  @XmlElements( { 
+    @XmlElement(name = "signal-trigger", type = JAXBSignalEventDetail.class)
+    })
+  private List<JAXBEventDetail> trigger = new ArrayList<JAXBEventDetail>();
+
+  private String name;
+
+  public String getName()
+  {
+    return name;
+  }
+
+  @XmlAttribute(required = false)
+  public void setName(String name)
+  {
+    this.name = name;
+  }
+  
   public JAXBFlow getOutFlow()
   {
     return outFlow;
@@ -53,4 +76,15 @@
   {
     this.outFlow = outFlow;
   }
+
+  public List<JAXBEventDetail> getTrigger()
+  {
+    return trigger;
+  }
+
+  @XmlTransient
+  public void setTrigger(List<JAXBEventDetail> trigger)
+  {
+    this.trigger = trigger;
+  }
 }
\ No newline at end of file

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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -60,7 +60,7 @@
   {
     ProcessImpl procImpl = (ProcessImpl)proc;
     procImpl.setProcessStatus(ProcessStatus.Active);
-    
+
     SignalManager signalManager = SignalManager.locateSignalManager();
     signalManager.throwSignal(proc.getName(), new Signal(proc.getName(), SignalType.SYSTEM_PROCESS_ENTER));
 
@@ -73,16 +73,16 @@
         new Thread(runner).start();
       }
     };
-    TokenExecutor scheduler = new TokenExecutorImpl(rtProc, callback);
-    rtProc.setTokenExecutor(scheduler);
+    TokenExecutor tokenExecutor = new TokenExecutorImpl(rtProc, callback);
+    rtProc.setTokenExecutor(tokenExecutor);
     addRuntimeProcess(rtProc);
-    
+
     StartEvent start = getStartEvent(proc);
     if (start != null)
     {
       TokenImpl token = new TokenImpl(att);
-      scheduler.create(token, new InitialFlow(start));
-      scheduler.start(token);
+      tokenExecutor.create(token, new InitialFlow(start));
+      tokenExecutor.start(token);
     }
   }
 
@@ -113,7 +113,7 @@
       setTargetRef(start);
     }
   }
-  
+
   class RunnableProcess implements Runnable
   {
     RuntimeProcess rtProc;
@@ -127,31 +127,38 @@
 
     public void run()
     {
-      TokenExecutor scheduler = rtProc.getTokenExecutor();
+      TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
       ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
+      procImpl.setExecutorThread(Thread.currentThread());
+
       String procName = procImpl.getName();
-
       ProcessStatus procStatus = procImpl.getProcessStatus();
+      boolean hasActiveTokens = tokenExecutor.hasActiveTokens();
       try
       {
-        while (procStatus == ProcessStatus.Active && scheduler.hasActiveTokens())
+        while (procStatus == ProcessStatus.Active && hasActiveTokens)
         {
-          Thread.sleep(100);
+          try
+          {
+            Thread.sleep(100);
+          }
+          catch (InterruptedException ex)
+          {
+            log.error("Executor thread interrupted");
+          }
           procStatus = procImpl.getProcessStatus();
+          hasActiveTokens = tokenExecutor.hasActiveTokens();
         }
+        log.debug("End execution thread [status=" + procStatus + ",tokens=" + tokenExecutor.getActiveTokens() + "]");
       }
-      catch (InterruptedException ex)
-      {
-        log.error(ex);
-      }
       finally
       {
         SignalManager signalManager = SignalManager.locateSignalManager();
         signalManager.throwSignal(procName, new Signal(procName, Signal.SignalType.SYSTEM_PROCESS_EXIT));
-        
+
         if (procStatus == ProcessStatus.Active)
           procImpl.setProcessStatus(ProcessStatus.Completed);
-          
+
         ProcessManager procManager = ProcessManager.locateProcessManager();
         procManager.destroyProcess(rtProc.getProcess());
         removeRuntimeProcess(rtProc);

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -50,7 +50,7 @@
 {
   // provide logging
   private static final Log log = LogFactory.getLog(ProcessManagerImpl.class);
-  
+
   public void setDialectHandlers(Map<String, DialectHandler> dialectHandlers)
   {
     this.dialectHandlers = dialectHandlers;
@@ -85,6 +85,9 @@
     if (status == ProcessStatus.None || status == ProcessStatus.Ready)
       throw new IllegalStateException("Cannot wait for process in state: " + status);
 
+    // Get the executor thread for interuption
+    Thread executorThread = procImpl.getExecutorThread();
+    
     // Wait a little for the process to end
     boolean forever = (timeout < 1);
     long now = System.currentTimeMillis();
@@ -93,32 +96,44 @@
     {
       while (forever || now < until)
       {
-        status = proc.getProcessStatus();
-        if (status == ProcessStatus.Cancelled || status == ProcessStatus.Completed)
+        if (status == ProcessStatus.Cancelled || status == ProcessStatus.Completed || status == ProcessStatus.Aborted)
         {
-          return status;
-        }
-        else if (status == ProcessStatus.Aborted)
-        {
           RuntimeException rte = procImpl.getRuntimeException();
-          if (rte == null)
-            return status;
-          else
+          if (rte != null)
             throw new BPMException("Process aborted", rte);
+          
+          break;
         }
-        Thread.sleep(100);
+        
+        // Join the executor thread
+        executorThread.join(timeout);
         now = System.currentTimeMillis();
+        status = proc.getProcessStatus();
       }
+      
+      // Throw timeout exception if it took too long
+      if (status != ProcessStatus.Cancelled && status != ProcessStatus.Completed && status != ProcessStatus.Aborted)
+      {
+        ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + procID);
+        log.error(rte);
+        
+        log.error("Interrupt executor thread");
+        executorThread.interrupt();
+        
+        throw rte;
+      }
     }
     catch (InterruptedException ex)
     {
       log.warn(ex);
     }
-
-    // Throw timeout exception if it took too long
-    ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + procID);
-    log.error(rte);
-    throw rte;
+    finally
+    {
+      // Destroy the process
+      destroyProcess(procImpl);
+    }
+    
+    return status;
   }
 
   private Process getProcessStrict(ObjectName procID)

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -67,7 +67,7 @@
   public void run()
   {
     SignalManager signalManager = SignalManager.locateSignalManager();
-    TokenExecutor scheduler = rtProc.getTokenExecutor();
+    TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
     ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
 
     token.setTokenStatus(TokenStatus.Started);
@@ -98,7 +98,7 @@
             target.execute(token);
             
             // Transfer the token to the FlowHandler
-            flowHandler.execute(scheduler, token);
+            flowHandler.execute(tokenExecutor, token);
           }
           catch(RuntimeException rte)
           {
@@ -129,6 +129,10 @@
       procImpl.setProcessStatus(ProcessStatus.Aborted);
       procImpl.setRuntimeException(rte);
     }
+//    finally
+//    {
+//      procImpl.notifyAll();
+//    }
   }
 
   private SignalHandler getSignalHandler(FlowObject target)

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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -307,9 +307,9 @@
     {
       handler = new FlowHandler()
       {
-        public void execute(TokenExecutor scheduler, Token token)
+        public void execute(TokenExecutor tokenExecutor, Token token)
         {
-          scheduler.move(token, outFlow);
+          tokenExecutor.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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -84,10 +84,10 @@
     {
       handler = new FlowHandler()
       {
-        public void execute(TokenExecutor scheduler, Token token)
+        public void execute(TokenExecutor tokenExecutor, Token token)
         {
           log.debug("End reached in: " + getName());
-          scheduler.destroy(token);
+          tokenExecutor.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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -98,7 +98,7 @@
     {
       handler = new FlowHandler()
       {
-        public void execute(TokenExecutor scheduler, Token token)
+        public void execute(TokenExecutor tokenExecutor, Token token)
         {
           GraphicalElement sourceRef = token.getFlow().getSourceRef();
           
@@ -108,13 +108,13 @@
             log.debug("Propagate token comming from: " + sourceRef);
             Gate selectedGate = getSelectedGate(token);
             SequenceFlow outFlow = selectedGate.getOutgoingSequenceFlow();
-            scheduler.move(token, outFlow);
+            tokenExecutor.move(token, outFlow);
           }
           // Ignore all other tokens
           else
           {
             log.debug("Ignore token comming from: " + sourceRef);
-            scheduler.destroy(token);
+            tokenExecutor.destroy(token);
           }
 
           // Reset the gateway

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -76,7 +76,7 @@
     {
       handler = new FlowHandler()
       {
-        public void execute(TokenExecutor scheduler, Token token)
+        public void execute(TokenExecutor tokenExecutor, Token token)
         {
           GraphicalElement sourceRef = token.getFlow().getSourceRef();
           log.debug("Propagate token comming from: " + sourceRef);
@@ -88,20 +88,20 @@
           // Destroy the incomming token if there are 
           // more than one applicable gates
           if (applicableGates.size() > 1)
-            scheduler.destroy(token);
+            tokenExecutor.destroy(token);
           
           for (Gate aux : applicableGates)
           {
             SequenceFlow outFlow = aux.getOutgoingSequenceFlow();
             if (applicableGates.size() == 1)
             {
-              scheduler.move(token, outFlow);
+              tokenExecutor.move(token, outFlow);
             }
             else
             {
               Token outToken = token.copyToken();
-              scheduler.create(outToken, outFlow);
-              scheduler.start(outToken);
+              tokenExecutor.create(outToken, outFlow);
+              tokenExecutor.start(outToken);
             }
           }
         }

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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -77,9 +77,9 @@
     {
       handler = new FlowHandler()
       {
-        public void execute(TokenExecutor scheduler, Token token)
+        public void execute(TokenExecutor tokenExecutor, Token token)
         {
-          scheduler.move(token, getOutFlow());
+          tokenExecutor.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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -90,10 +90,10 @@
 
       handler = new FlowHandler()
       {
-        public void execute(TokenExecutor scheduler, Token token)
+        public void execute(TokenExecutor tokenExecutor, Token token)
         {
           // In any case, the incomming token is not propagated
-          scheduler.suspend(token);
+          tokenExecutor.suspend(token);
           
           // If the gateway has a single incomming flow the outgoing token is the incomming token 
           Token outToken = (getInFlows().size() == 1 ? token : null);
@@ -123,14 +123,14 @@
             {
               SequenceFlow outFlow = gate.getOutgoingSequenceFlow();
               Token copyToken = outToken.copyToken();
-              scheduler.create(copyToken, outFlow);
-              scheduler.start(copyToken);
+              tokenExecutor.create(copyToken, outFlow);
+              tokenExecutor.start(copyToken);
             }
             
             // Destroy the received tokens
             for (Token auxToken : receivedTokens)
             {
-              scheduler.destroy(auxToken);
+              tokenExecutor.destroy(auxToken);
             }
             
             // Reset the gateway

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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -75,6 +75,8 @@
   private ProcessStatus status = ProcessStatus.None;
   // The possible exception that caused the process to abort
   private RuntimeException runtimeException;
+  // The thread of the executor
+  private Thread executorThread;
 
   public ProcessImpl(String name)
   {
@@ -234,7 +236,7 @@
   public void waitForEnd()
   {
     ProcessManager pm = ProcessManager.locateProcessManager();
-    pm.waitForEnd(getID(), -1);
+    pm.waitForEnd(getID(), 0);
   }
 
   public void waitForEnd(long timeout)
@@ -286,6 +288,16 @@
     this.status = status;
   }
   
+  public Thread getExecutorThread()
+  {
+    return executorThread;
+  }
+
+  public void setExecutorThread(Thread executorThread)
+  {
+    this.executorThread = executorThread;
+  }
+
   public List<Message> getMessages()
   {
     return Collections.unmodifiableList(messages);

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -62,7 +62,7 @@
     this.name = name;
   }
 
-  public PropertyType getType()
+  public PropertyType getPropertyType()
   {
     return PropertyType.String;
   }

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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -66,7 +66,7 @@
 
   public StartEventImpl(String name)
   {
-    super(name);
+    super(name == null ? "Start" : name);
   }
 
   public List<EventDetail> getTrigger()
@@ -102,9 +102,9 @@
     {
       handler = new FlowHandler()
       {
-        public void execute(TokenExecutor scheduler, Token token)
+        public void execute(TokenExecutor tokenExecutor, Token token)
         {
-          scheduler.move(token, outFlow);
+          tokenExecutor.move(token, outFlow);
         }
       };
     }
@@ -145,17 +145,17 @@
       {
         public void catchSignal(Signal signal)
         {
-          if (startSignal.getType() == signal.getType() && startSignal.getMessage().equals(signal.getMessage()))
+          if (startSignal.getSignalType() == signal.getSignalType() && startSignal.getMessage().equals(signal.getMessage()))
           {
             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();
+              TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
               TokenImpl token = new TokenImpl(null);
-              scheduler.create(token, getOutFlow());
-              scheduler.start(token);
+              tokenExecutor.create(token, getOutFlow());
+              tokenExecutor.start(token);
             }
             else
             {

Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml	2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,5 +1,5 @@
 <ns2:process name='Airticket' xmlns:ns2='urn:bpm.jboss:pdl-0.1'>
- <start>
+ <start name='Start'>
   <seqflow to='ReceiveReq'/>
  </start>
  <task name='ReceiveReq' taskType='Receive'>

Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-stp-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-stp-api10.xml	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-stp-api10.xml	2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,6 +1,6 @@
 <ns2:process name='Airticket' xmlns:ns2='urn:bpm.jboss:pdl-0.1'>
   <include namespace="http://stp.eclipse.org/bpmn" location="samples/airticket/airticket.bpmn" />
-  <!-- start>
+  <!-- start name='Start'>
     <seqflow to='ReceiveReq' />
   </start-->
   <task name='ReceiveReq' taskType='Receive'>

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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -39,24 +39,14 @@
  */
 public class EngineShutdownTest extends DefaultEngineTestCase
 {
-  private ProcessEngine engine;
-  
-  private URL jpdlURL;
-  
-  @Override
-  protected void setUp() throws Exception
-  {
-    super.setUp();
-    jpdlURL = getResourceURL("cts/engine/basic-engine-" + getDialect() + ".xml");
-    engine = ProcessEngine.locateProcessEngine();
-    engine.cancelShutdown();
-  }
-
   /**
    * Try to create a Process during shutdown
    */
   public void testCreateProcess() throws Exception 
   {
+    ProcessEngine engine = ProcessEngine.locateProcessEngine();
+    URL jpdlURL = getResourceURL("cts/engine/basic-engine-" + getDialect() + ".xml");
+    
     // Create a Process through the ProcessManager
     ProcessManager pm = ProcessManager.locateProcessManager();
     Process proc = pm.createProcess(jpdlURL);
@@ -75,6 +65,7 @@
     finally
     {
       pm.destroyProcess(proc);
+      engine.cancelShutdown();
     }
   }
 }

Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeAPITest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeAPITest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.exclusive;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * ExclusiveMergeTest using the API Descriptor
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 06-Aug-2008
+ */
+public class ExclusiveMergeAPITest extends ExclusiveMergeTest
+{
+  @Override
+  public Process getProcess()
+  {
+    Process proc = super.getProcess();
+    
+    // Marshall the process to a string
+    StringWriter strwr = new StringWriter();
+    marshallProcess(proc, strwr);
+    String procXML = strwr.toString();
+
+    // Recreate the process from the marshalled process
+    ProcessManager procManager = ProcessManager.locateProcessManager();
+    proc = procManager.createProcess(procXML);
+    
+    return proc;
+  }
+}

Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,60 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.exclusive;
-
-// $Id$
-
-import org.jboss.bpm.model.EventBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Gateway.GatewayType;
-import org.jboss.bpm.model.Signal.SignalType;
-
-/**
- * ExclusiveMergeTest using the ProcessBuilder
- * 
- * @author thomas.diesler at jboss.com
- * @since 06-Aug-2008
- */
-public class ExclusiveMergeProcBuilderTest extends ExclusiveMergeTest
-{
-  @Override
-  public Process getProcess()
-  {
-    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
-    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
-    procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
-    eventBuilder = procBuilder.addStartEvent("StartB");
-    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
-    procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
-    procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
-    procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
-    procBuilder.addEndEvent("End");
-    Process proc = procBuilder.getProcess();
-    
-    //marshallProcess(proc);
-    
-    return proc;
-  }
-}

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -25,8 +25,12 @@
 
 import org.jboss.bpm.client.SignalListener;
 import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
 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.runtime.ExecutionContext;
 import org.jboss.bpm.runtime.ExecutionHandler;
@@ -41,7 +45,7 @@
  * @author thomas.diesler at jboss.com
  * @since 06-Aug-2008
  */
-public abstract class ExclusiveMergeTest extends DefaultEngineTestCase
+public class ExclusiveMergeTest extends DefaultEngineTestCase
 {
   public void testGateA() throws Exception
   {
@@ -123,7 +127,21 @@
     assertEquals("TaskA", TaskC.taskValue);
   }
 
-  public abstract Process getProcess();
+  public Process getProcess()
+  {
+    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+    procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+    eventBuilder = procBuilder.addStartEvent("StartB");
+    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+    procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
+    procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
+    procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
+    procBuilder.addEndEvent("End");
+    Process proc = procBuilder.getProcess();
+    return proc;
+  }
 
   public static class MergeListener implements SignalListener
   {
@@ -138,7 +156,7 @@
 
     public void catchSignal(Signal signal)
     {
-      if (signal.getType() == SignalType.SYSTEM_GATEWAY_ENTER)
+      if (signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER)
       {
         if (nextSignal != null)
         {

Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitAPITest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitAPITest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.exclusive;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * ExclusiveSplitTest using the API Descriptor
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 06-Aug-2008
+ */
+public class ExclusiveSplitAPITest extends ExclusiveSplitTest
+{
+  @Override
+  public Process getProcess()
+  {
+    Process proc = super.getProcess();
+    
+    // Marshall the process to a string
+    StringWriter strwr = new StringWriter();
+    marshallProcess(proc, strwr);
+    String procXML = strwr.toString();
+
+    // Recreate the process from the marshalled process
+    ProcessManager procManager = ProcessManager.locateProcessManager();
+    proc = procManager.createProcess(procXML);
+    
+    return proc;
+  }
+}

Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,53 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.exclusive;
-
-// $Id$
-
-import org.jboss.bpm.model.GatewayBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Expression.ExpressionLanguage;
-import org.jboss.bpm.model.Gateway.GatewayType;
-
-/**
- * ExclusiveSplitTest using the ProcessBuilder
- * 
- * @author thomas.diesler at jboss.com
- * @since 06-Aug-2008
- */
-public class ExclusiveSplitProcBuilderTest extends ExclusiveSplitTest
-{
-  @Override
-  public Process getProcess()
-  {
-    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
-    GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Exclusive);
-    gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
-    gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo > 10");
-    procBuilder.addEndEvent("EndA").addEndEvent("EndB");
-    Process proc = procBuilder.getProcess();
-    return proc;
-  }
-}

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -25,8 +25,13 @@
 
 import java.util.List;
 
+import org.jboss.bpm.model.GatewayBuilder;
 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.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.Gateway.GatewayType;
 import org.jboss.bpm.runtime.BasicAttachments;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
@@ -37,7 +42,7 @@
  * @author thomas.diesler at jboss.com
  * @since 06-Aug-2008
  */
-public abstract class ExclusiveSplitTest extends DefaultEngineTestCase
+public class ExclusiveSplitTest extends DefaultEngineTestCase
 {
   public void testGateA() throws Exception
   {
@@ -85,5 +90,15 @@
     }
   }
 
-  public abstract Process getProcess();
+  public Process getProcess()
+  {
+    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
+    GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Exclusive);
+    gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
+    gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo > 10");
+    procBuilder.addEndEvent("EndA").addEndEvent("EndB");
+    Process proc = procBuilder.getProcess();
+    return proc;
+  }
 }

Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeAPITest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeAPITest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.inclusive;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * InclusiveMergeTest using the API Descriptor
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 06-Aug-2008
+ */
+public class InclusiveMergeAPITest extends InclusiveMergeTest
+{
+  @Override
+  public Process getProcess()
+  {
+    Process proc = super.getProcess();
+    
+    // Marshall the process to a string
+    StringWriter strwr = new StringWriter();
+    marshallProcess(proc, strwr);
+    String procXML = strwr.toString();
+
+    // Recreate the process from the marshalled process
+    ProcessManager procManager = ProcessManager.locateProcessManager();
+    proc = procManager.createProcess(procXML);
+    
+    return proc;
+  }
+}

Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,54 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.inclusive;
-
-// $Id$
-
-import org.jboss.bpm.model.EventBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Gateway.GatewayType;
-import org.jboss.bpm.model.Signal.SignalType;
-
-/**
- * InclusiveMergeTest using the ProcessBuilder
- * 
- * @author thomas.diesler at jboss.com
- * @since 06-Aug-2008
- */
-public class InclusiveMergeProcBuilderTest extends InclusiveMergeTest
-{
-  @Override
-  public Process getProcess()
-  {
-    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
-    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
-    eventBuilder = procBuilder.addStartEvent("StartB");
-    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
-    procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
-    procBuilder.addEndEvent("End");
-    Process proc = procBuilder.getProcess();
-    return proc;
-  }
-}

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -26,8 +26,12 @@
 import java.util.List;
 
 import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
 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;
 
@@ -58,5 +62,16 @@
     assertEquals(2, endSignals.size());
   }
 
-  public abstract Process getProcess();
+  public Process getProcess()
+  {
+    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
+    eventBuilder = procBuilder.addStartEvent("StartB");
+    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
+    procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
+    procBuilder.addEndEvent("End");
+    Process proc = procBuilder.getProcess();
+    return proc;
+  }
 }

Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitAPITest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitAPITest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.inclusive;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * InclusiveSplitTest using the API Descriptor
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 06-Aug-2008
+ */
+public class InclusiveSplitAPITest extends InclusiveSplitTest
+{
+  @Override
+  public Process getProcess()
+  {
+    Process proc = super.getProcess();
+    
+    // Marshall the process to a string
+    StringWriter strwr = new StringWriter();
+    marshallProcess(proc, strwr);
+    String procXML = strwr.toString();
+
+    // Recreate the process from the marshalled process
+    ProcessManager procManager = ProcessManager.locateProcessManager();
+    proc = procManager.createProcess(procXML);
+    
+    return proc;
+  }
+}
\ No newline at end of file

Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,52 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.inclusive;
-
-// $Id$
-
-import org.jboss.bpm.model.GatewayBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Expression.ExpressionLanguage;
-import org.jboss.bpm.model.Gateway.GatewayType;
-
-/**
- * InclusiveSplitTest using the ProcessBuilder
- * 
- * @author thomas.diesler at jboss.com
- * @since 06-Aug-2008
- */
-public class InclusiveSplitProcBuilderTest extends InclusiveSplitTest
-{
-  public Process getProcess()
-  {
-    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
-    GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Inclusive);
-    gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
-    gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
-    procBuilder.addEndEvent("EndA").addEndEvent("EndB");
-    Process proc = procBuilder.getProcess();
-    return proc;
-  }
-}
\ No newline at end of file

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -25,8 +25,13 @@
 
 import java.util.List;
 
+import org.jboss.bpm.model.GatewayBuilder;
 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.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.Gateway.GatewayType;
 import org.jboss.bpm.runtime.BasicAttachments;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
@@ -37,7 +42,7 @@
  * @author thomas.diesler at jboss.com
  * @since 06-Aug-2008
  */
-public abstract class InclusiveSplitTest extends DefaultEngineTestCase
+public class InclusiveSplitTest extends DefaultEngineTestCase
 {
   public void testGateA() throws Exception
   {
@@ -66,5 +71,15 @@
     assertEquals("EndB", endSignals.get(0).getFromRef());
   }
 
-  public abstract Process getProcess();
+  public Process getProcess()
+  {
+    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
+    GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Inclusive);
+    gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
+    gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
+    procBuilder.addEndEvent("EndA").addEndEvent("EndB");
+    Process proc = procBuilder.getProcess();
+    return proc;
+  }
 }
\ No newline at end of file

Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeAPITest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeAPITest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.parallel;
+
+//$Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+
+/**
+ * ParallelMergeTest using the API Descriptor
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 06-Aug-2008
+ */
+public class ParallelMergeAPITest extends ParallelMergeTest
+{
+  @Override
+  public Process getProcess()
+  {
+    Process proc = super.getProcess();
+    
+    // Marshall the process to a string
+    StringWriter strwr = new StringWriter();
+    marshallProcess(proc, strwr);
+    String procXML = strwr.toString();
+
+    // Recreate the process from the marshalled process
+    ProcessManager procManager = ProcessManager.locateProcessManager();
+    proc = procManager.createProcess(procXML);
+    
+    return proc;
+  }
+}

Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,56 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.parallel;
-
-// $Id$
-
-import org.jboss.bpm.model.EventBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Gateway.GatewayType;
-import org.jboss.bpm.model.Signal.SignalType;
-
-/**
- * ParallelMergeTest using the ProcessBuilder
- * 
- * @author thomas.diesler at jboss.com
- * @since 06-Aug-2008
- */
-public class ParallelMergeProcBuilderTest extends ParallelMergeTest
-{
-  public Process getProcess()
-  {
-    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
-    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
-    procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
-    eventBuilder = procBuilder.addStartEvent("StartB");
-    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
-    procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
-    procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
-    procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
-    procBuilder.addEndEvent("End");
-    Process proc = procBuilder.getProcess();
-    return proc;
-  }
-}

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -25,8 +25,12 @@
 
 import org.jboss.bpm.client.SignalListener;
 import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
 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.runtime.ExecutionContext;
 import org.jboss.bpm.runtime.ExecutionHandler;
@@ -41,7 +45,7 @@
  * @author thomas.diesler at jboss.com
  * @since 06-Aug-2008
  */
-public abstract class ParallelMergeTest extends DefaultEngineTestCase
+public class ParallelMergeTest extends DefaultEngineTestCase
 {
   public void testParallelMerge() throws Exception
   {
@@ -124,7 +128,21 @@
     assertEquals("TaskA:TaskB", TaskC.taskValue);
   }
 
-  public abstract Process getProcess();
+  public Process getProcess()
+  {
+    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+    procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+    eventBuilder = procBuilder.addStartEvent("StartB");
+    eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+    procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
+    procBuilder.addGateway("Merge", GatewayType.Parallel).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
   {
@@ -139,7 +157,7 @@
 
     public void catchSignal(Signal signal)
     {
-      if (signal.getType() == SignalType.SYSTEM_GATEWAY_ENTER)
+      if (signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER)
       {
         if (nextSignal != null)
         {

Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitAPITest.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitAPITest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.parallel;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * ParallelSplitTest using the API Descriptor
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 06-Aug-2008
+ */
+public class ParallelSplitAPITest extends ParallelSplitTest
+{
+  @Override
+  public Process getProcess()
+  {
+    Process proc = super.getProcess();
+    
+    // Marshall the process to a string
+    StringWriter strwr = new StringWriter();
+    marshallProcess(proc, strwr);
+    String procXML = strwr.toString();
+
+    // Recreate the process from the marshalled process
+    ProcessManager procManager = ProcessManager.locateProcessManager();
+    proc = procManager.createProcess(procXML);
+    
+    return proc;
+  }
+}

Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -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.cts.gateway.parallel;
-
-// $Id$
-
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Gateway.GatewayType;
-
-/**
- * ParallelMergeTest using the ParallelSplitTest
- * 
- * @author thomas.diesler at jboss.com
- * @since 06-Aug-2008
- */
-public class ParallelSplitProcBuilderTest extends ParallelSplitTest
-{
-  public 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/cts/gateway/parallel/ParallelSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -26,7 +26,10 @@
 import java.util.List;
 
 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;
 
@@ -37,7 +40,7 @@
  * @author thomas.diesler at jboss.com
  * @since 06-Aug-2008
  */
-public abstract class ParallelSplitTest extends DefaultEngineTestCase
+public class ParallelSplitTest extends DefaultEngineTestCase
 {
   public void testParallelSplit() throws Exception 
   {
@@ -53,5 +56,11 @@
     assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndB"));
   }
 
-  public abstract Process getProcess();
+  public 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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -77,13 +77,13 @@
 
     // Validate received signals
     List<Signal> signals = getSignals();
-    assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getType());
-    assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getType());
-    assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getType());
-    assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getType());
-    assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getType());
-    assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getType());
-    assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getType());
-    assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getType());
+    assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getSignalType());
   }
 }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java	2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java	2008-08-14 13:29:28 UTC (rev 1889)
@@ -77,13 +77,13 @@
 
     // Validate received signals
     List<Signal> signals = getSignals();
-    assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getType());
-    assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getType());
-    assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getType());
-    assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getType());
-    assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getType());
-    assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getType());
-    assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getType());
-    assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getType());
+    assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getSignalType());
+    assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getSignalType());
   }
 }




More information about the jbpm-commits mailing list