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

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Aug 11 06:56:42 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-08-11 06:56:42 -0400 (Mon, 11 Aug 2008)
New Revision: 1864

Added:
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java
Removed:
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/NoneEventDetail.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/NoneEventDetailImpl.java
Modified:
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Activity.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/IntermediateEvent.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
   jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java
   jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java
   jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayBuilderImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.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/SequenceFlowImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
   jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
   jbossbpm/spec/trunk/modules/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/process/ProcessIntegrityTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/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:
More work on Gateway CTS

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -96,7 +96,7 @@
   {
     ProcessManager pm = getProcessEngine().getProcessManager();
     Process proc = pm.getProcessByID(procID);
-    FlowObject target = proc.getFlowObjectByName(targetName);
+    FlowObject target = proc.getFlowObject(targetName);
     if (target == null)
       throw new IllegalArgumentException("Cannot find message target: " + targetName);
     if (target instanceof MessageListener == false)

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -40,7 +40,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.jboss.bpm.BPMException;
 import org.jboss.bpm.EngineShutdownException;
-import org.jboss.bpm.ProcessTimeoutException;
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.model.Process.Status;
 import org.jboss.bpm.runtime.Attachments;
@@ -70,14 +69,14 @@
   {
   }
 
-  /** 
+  /**
    * Get the ProcessEngine
    */
   public ProcessEngine getProcessEngine()
   {
     return ProcessEngineLocator.locateProcessEngine();
   }
-  
+
   /**
    * Locate the ProcessManager
    */
@@ -86,7 +85,7 @@
     ProcessEngine engine = ProcessEngineLocator.locateProcessEngine();
     return engine.getProcessManager();
   }
-  
+
   /**
    * Create a Process from a XML string in one of the supported formats
    */
@@ -130,7 +129,7 @@
    * @param status The optional process status
    * @return An empty set if the process cannot be found
    */
-  public Set<Process> findProcessByName(String name, Process.Status status)
+  public Set<Process> getProcesses(String name, Process.Status status)
   {
     Set<Process> procSet = new HashSet<Process>();
     for (Process aux : procs)
@@ -160,17 +159,16 @@
   }
 
   /**
-   * Register a Process. 
-   * This is not part of the API.
+   * Register a Process. This is not part of the API.
    */
   protected void registerProcess(Process proc)
   {
+    log.debug("registerProcess: " + proc);
     procs.add(proc);
   }
 
   /**
-   * Remove a Process
-   * This is not part of the API.
+   * Remove a Process This is not part of the API.
    */
   protected void removeProcess(Process proc)
   {
@@ -182,60 +180,6 @@
    */
   public abstract ObjectName startProcess(String name, Attachments att);
 
-  /**
-   * Wait for the Process to end. All Tokens that are generated at the Start Event for that Process must eventually
-   * arrive at an End Event. The Process will be in a running state until all Tokens are consumed. 
-   * <p/> 
-   * If the process was aborted this method throws the causing RuntimeException if avaialable.
-   * 
-   */
-  public Status waitForEnd(ObjectName procID, long timeout)
-  {
-    Process proc = getProcessByID(procID);
-    Status status = proc.getStatus();
-
-    if (status == Status.None || status == Status.Ready)
-      throw new IllegalStateException("Cannot wait for process in state: " + status);
-
-    // Wait a little for the process to end
-    boolean forever = (timeout < 1);
-    long now = System.currentTimeMillis();
-    long until = now + timeout;
-    try
-    {
-      while (forever || now < until)
-      {
-        status = proc.getStatus();
-        if (status == Status.Cancelled || status == Status.Completed)
-        {
-          return status;
-        }
-        else if (status == Status.Aborted)
-        {
-          RuntimeException rte = proc.getRuntimeException();
-          if (rte == null)
-            return status;
-          else
-            throw rte;
-        }
-        Thread.sleep(100);
-        now = System.currentTimeMillis();
-      }
-    }
-    catch (InterruptedException ex)
-    {
-      log.warn(ex);
-    }
-    finally
-    {
-      // Remove the process
-      removeProcess(proc);
-    }
-
-    // Throw timeout exception if it took too long
-    throw new ProcessTimeoutException("Process timeout for: " + procID);
-  }
-
   private String getNamespaceURI(InputStream inStream)
   {
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
@@ -259,9 +203,17 @@
     return nsURI;
   }
 
-  /** 
-   * Get the handler for the dialect with the given namespace URI 
+  /**
+   * Wait for the Process to end. All Tokens that are generated at the Start Event for that Process must eventually
+   * arrive at an End Event. The Process will be in a running state until all Tokens are consumed. <p/> If the process
+   * was aborted this method throws the causing RuntimeException if avaialable.
+   * 
    */
+  public abstract Status waitForEnd(ObjectName procID, long timeout);
+
+  /**
+   * Get the handler for the dialect with the given namespace URI
+   */
   public DialectHandler getDialectHandler(String nsURI)
   {
     String dialectId = dialectRegistry.getDialect(nsURI);

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Activity.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Activity.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Activity.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -32,7 +32,7 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
-public interface Activity extends FlowObject, NameSupport, PropertySupport
+public interface Activity extends FlowObject, PropertySupport
 {
   /**
    * The ActivityType MUST be of type Task or Sub-Process.

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -35,7 +35,7 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
-public interface EndEvent extends Event, NameSupport, SingleInFlowSupport
+public interface EndEvent extends Event, SingleInFlowSupport
 {
   /** 
    * Result defines the type of result expected for an End Event. 

Copied: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java (from rev 1863, jbossbpm/spec/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java)
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -0,0 +1,40 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.model;
+
+//$Id$
+
+import org.jboss.bpm.model.Signal.SignalType;
+
+/**
+ * The EventBuilder can be used to build an {@link Event} dynamically.
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public interface EventBuilder extends ProcessBuilder
+{
+  /**
+   * Add a signal trigger to the last added {@link Event}
+   */
+  EventBuilder addSignalTrigger(String fromRef, SignalType signalType, String signalMessage);
+}
\ No newline at end of file

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -36,7 +36,7 @@
    */
   public enum EventDetailType
   {
-    None, Message, Timer, Error, Conditional, Link, Signal, Compensate, Cancel, Terminate 
+    Message, Timer, Error, Conditional, Link, Signal, Compensate, Cancel, Terminate 
   };
   
   /**

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -30,7 +30,7 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
-public interface FlowObject extends GraphicalElement
+public interface FlowObject extends GraphicalElement, NameSupport
 {
   /**
    * Get the associated Process

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -35,7 +35,7 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
-public interface Gateway extends FlowObject, NameSupport, MultipleInFlowSupport
+public interface Gateway extends FlowObject, MultipleInFlowSupport
 {
   /**
    * The GatewayType

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/IntermediateEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/IntermediateEvent.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/IntermediateEvent.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -33,6 +33,6 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
-public interface IntermediateEvent extends Event, NameSupport, SingleInFlowSupport, SingleOutFlowSupport
+public interface IntermediateEvent extends Event, SingleInFlowSupport, SingleOutFlowSupport
 {
 }
\ No newline at end of file

Deleted: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/NoneEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/NoneEventDetail.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/NoneEventDetail.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -1,35 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.model;
-
-//$Id$
-
-/**
- * The Cancel event detail 
- * 
- * @author thomas.diesler at jboss.com
- * @since 21-Jul-2008
- */
-public interface NoneEventDetail extends EventDetail
-{
-
-}

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -27,7 +27,6 @@
 
 import javax.management.ObjectName;
 
-import org.jboss.bpm.BPMException;
 import org.jboss.bpm.runtime.Attachments;
 
 /**
@@ -70,6 +69,17 @@
   List<FlowObject> getFlowObjects();
 
   /**
+   * Get a list of flow objects of a given type.
+   */
+  <T extends FlowObject> List<T> getFlowObjects(Class<T> clazz);
+
+  /**
+   * Get a flow object by name.
+   * @return null if not found
+   */
+  FlowObject getFlowObject(String name);
+  
+  /**
    * One or more Performers MAY be entered. The Performers attribute defines the resource that will be responsible for
    * the Process. The Performers entry could be in the form of a specific individual, a group, an organization role or
    * position, or an organization.
@@ -97,42 +107,26 @@
    */
   List<OutputSet> getOutputSets();
 
-  // Not Part of BPMN ========================================================================
-
   /**
-   * Make a deep copy of the process
+   * Get the list of associated {@link Message} objects.
+   * @return An empty list if there are none
    */
-  Process copyProcess();
-  
-  /**
-   * Get the possible runtime exception when the process was aborted.
-   */
-  RuntimeException getRuntimeException();
+  List<Message> getMessages();
 
   /**
-   * Get the start event
-   * @throws BPMException if there are other than exactly one start event of type None  
+   * Get an associated {@link Message} by name.
+   * @return null if not found
    */
-  StartEvent getStartEvent();
+  Message getMessage(String msgName);
+  
+  // Not Part of BPMN ========================================================================
 
   /**
-   * Get a start event by name
-   * @return null if there is none
+   * Make a deep copy of the process
    */
-  StartEvent getStartEvent(String name);
-
+  Process copyProcess();
+  
   /**
-   * Get the set of end events
-   */
-  List<EndEvent> getEndEvents();
-
-  /**
-   * Get an end event by name
-   * @return null if there is none
-   */
-  EndEvent getEndEvent(String name);
-
-  /**
    * Start the process
    */
   ObjectName startProcess();
@@ -143,24 +137,6 @@
   ObjectName startProcess(Attachments att);
 
   /**
-   * Find a flow object by name
-   * @return null if not found
-   */
-  FlowObject getFlowObjectByName(String name);
-
-  /**
-   * Get the list of associated {@link Message} objects.
-   * @return An empty list if there are none
-   */
-  List<Message> getMessages();
-
-  /**
-   * Get an associated {@link Message} by name.
-   * @return null if not found
-   */
-  Message getMessageByName(String msgName);
-  
-  /**
    * All Tokens that are generated at the Start Event for that Process must eventually arrive at an End Event. 
    * The Process will be in a running state until all Tokens are consumed.
    * <p/>

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -76,19 +76,19 @@
   ProcessBuilder addMessageFlow(String targetName);
 
   /**
-   * Add a {@link StartEvent}
+   * Add a {@link StartEvent} with a given name
    */
-  ProcessBuilder addStartEvent();
+  EventBuilder addStartEvent(String name);
 
   /**
    * Add an {@link IntermediateEvent} with a given name
    */
-  ProcessBuilder addEvent(String name);
+  EventBuilder addEvent(String name);
 
   /**
    * Add an {@link EndEvent} with a given name
    */
-  ProcessBuilder addEndEvent(String name);
+  EventBuilder addEndEvent(String name);
 
   /**
    * Add a {@link Task} of {@link TaskType} NONE with a given name

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -34,17 +34,24 @@
   /**
    * Defines the types of supported Signals
    */
-  public enum Type
+  public enum SignalType
   {
-    ENTER_START_EVENT, EXIT_START_EVENT, ENTER_EVENT, EXIT_EVENT, ENTER_END_EVENT, EXIT_END_EVENT, ENTER_GATEWAY, EXIT_GATEWAY, ENTER_PROCESS, EXIT_PROCESS, ENTER_SUB_PROCESS, EXIT_SUB_PROCESS, ENTER_TASK, EXIT_TASK, USER_SIGNAL
+    ENTER_START_EVENT, EXIT_START_EVENT, START_TRIGGER,
+    ENTER_EVENT, EXIT_EVENT, EVENT_TRIGGER,
+    ENTER_END_EVENT, EXIT_END_EVENT, END_TRIGGER, 
+    ENTER_GATEWAY, EXIT_GATEWAY, 
+    ENTER_PROCESS, EXIT_PROCESS, 
+    ENTER_SUB_PROCESS, EXIT_SUB_PROCESS, 
+    ENTER_TASK, EXIT_TASK, TASK_TRIGGER, 
+    USER_SIGNAL
   }
 
-  private Type type;
+  private SignalType type;
   private String message;
   private String fromRef;
 
   /** Create the signal for a given process */
-  public Signal(String fromRef, Type type)
+  public Signal(String fromRef, SignalType type)
   {
     this.fromRef = fromRef;
     this.type = type;
@@ -55,7 +62,7 @@
   }
 
   /** Create the signal for a given process */
-  public Signal(String fromRef, Type type, String message)
+  public Signal(String fromRef, SignalType type, String message)
   {
     this(fromRef, type);
     this.message = message;
@@ -66,7 +73,7 @@
     return fromRef;
   }
 
-  public Type getType()
+  public SignalType getType()
   {
     return type;
   }

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -24,8 +24,8 @@
 //$Id$
 
 import org.jboss.bpm.client.ProcessEngine;
-import org.jboss.bpm.model.ConnectingObject;
 import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.SequenceFlow;
 
 /**
  * The {@link ProcessEngine} invokes the FlowHandler on an {@link HandlerSupport} 
@@ -39,8 +39,8 @@
   /**
    * Execute the the FlowHandler.
    * <p/>
-   * The FlowHandler will add the active outgoing {@link ConnectingObject}s to
-   * some {@link ConnectingObject} queue for the {@link ProcessEngine} to execute.    
+   * The FlowHandler will add the active outgoing {@link SequenceFlow}s to
+   * the the {@link FlowScheduler} for the {@link ProcessEngine} to execute.    
    */
   void execute(FlowScheduler scheduler, Token token);
 

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -121,7 +121,7 @@
     return Collections.unmodifiableList(signals);
   }
 
-  public List<Signal> getSignals(Signal.Type type)
+  public List<Signal> getSignals(Signal.SignalType type)
   {
     List<Signal> retSignals = new ArrayList<Signal>();
     for (Signal sig : signals)

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -184,7 +184,7 @@
   {
     if (jaxb instanceof JAXBStartEvent)
     {
-      procBuilder.addStartEvent();
+      procBuilder.addStartEvent("Start");
       JAXBStartEvent jaxbStart = (JAXBStartEvent)jaxb;
       addOutFlow(procBuilder, jaxbStart.getOutFlow());
     }

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -42,7 +42,7 @@
     ProcessManager pm = ProcessManager.locateProcessManager();
     Process proc = pm.createProcess(getResourceURL("include/proc-api10.xml"));
 
-    ReceiveTask recTask = (ReceiveTask)proc.getFlowObjectByName("A");
+    ReceiveTask recTask = (ReceiveTask)proc.getFlowObject("A");
     Message msg = recTask.getMessageRef();
     assertEquals("FooMsg", msg.getName());
     assertEquals("bar", msg.getPropertyValue("foo"));

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -48,7 +48,7 @@
   public void testProcessMessage() throws Exception
   {
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("End").addEndEvent("End");
+    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("End").addEndEvent("End");
     MessageBuilder msgBuilder = procBuilder.addMessage("FooMsg");
     msgBuilder.addProperty("foo", "bar");
     Process expProc = procBuilder.getProcess();
@@ -60,14 +60,14 @@
     dh.marshallProcess(expProc, strwr);
     
     Process wasProc = dh.createProcess(strwr.toString(), false);
-    Message msg = wasProc.getMessageByName("FooMsg");
+    Message msg = wasProc.getMessage("FooMsg");
     assertEquals("bar", msg.getPropertyValue("foo"));
   }
   
   public void testReceiveTaskWithMessage() throws Exception
   {
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("A");
+    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("A");
     TaskBuilder taskBuilder = procBuilder.addTask("A", TaskType.Receive);
     MessageBuilder msgBuilder = taskBuilder.addMessage("FooMsg");
     msgBuilder.addProperty("foo", "bar");
@@ -81,7 +81,7 @@
     dh.marshallProcess(expProc, strwr);
     
     Process wasProc = dh.createProcess(strwr.toString(), false);
-    ReceiveTask recTask = (ReceiveTask)wasProc.getFlowObjectByName("A");
+    ReceiveTask recTask = (ReceiveTask)wasProc.getFlowObject("A");
     Message msg = recTask.getMessageRef();
     assertEquals("FooMsg", msg.getName());
     assertEquals("bar", msg.getPropertyValue("foo"));
@@ -90,7 +90,7 @@
   public void testReceiveTaskWithMessageRef() throws Exception
   {
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("A");
+    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("A");
     MessageBuilder msgBuilder = procBuilder.addMessage("FooMsg");
     msgBuilder.addProperty("foo", "bar");
     TaskBuilder taskBuilder = procBuilder.addTask("A", TaskType.Receive);
@@ -105,7 +105,7 @@
     dh.marshallProcess(expProc, strwr);
     
     Process wasProc = dh.createProcess(strwr.toString(), false);
-    ReceiveTask recTask = (ReceiveTask)wasProc.getFlowObjectByName("A");
+    ReceiveTask recTask = (ReceiveTask)wasProc.getFlowObject("A");
     Message msg = recTask.getMessageRef();
     assertEquals("FooMsg", msg.getName());
     assertEquals("bar", msg.getPropertyValue("foo"));

Modified: jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -84,7 +84,7 @@
 
   private void adaptStartState(ProcessBuilder builder, JPDL32StartState jpdlStart)
   {
-    builder.addStartEvent();
+    builder.addStartEvent("Start");
     adaptTransitions(builder, jpdlStart.getDescriptionOrTaskOrTransition());
   }
 

Modified: jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -157,7 +157,7 @@
     ActivityType activityType = stpActivity.getActivityType();
     if (activityType == ActivityType.EVENT_START_EMPTY)
     {
-      builder.addStartEvent();
+      builder.addStartEvent("Start");
       adaptOutgoingEdges(builder, stpActivity);
     }
     else if (activityType == ActivityType.EVENT_END_EMPTY)

Modified: jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -53,7 +53,7 @@
       {
         if (xpdlEvent.getStartEvent() != null)
         {
-          builder.addStartEvent();
+          builder.addStartEvent("Start");
         }
         else if (xpdlEvent.getEndEvent() != null)
         {

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -33,6 +33,7 @@
 import org.jboss.bpm.model.Signal;
 import org.jboss.bpm.model.StartEvent;
 import org.jboss.bpm.model.Process.Status;
+import org.jboss.bpm.model.Signal.SignalType;
 import org.jboss.bpm.model.internal.ProcessImpl;
 import org.jboss.bpm.model.internal.RuntimeProcessImpl;
 import org.jboss.bpm.model.internal.SequenceFlowImpl;
@@ -74,7 +75,7 @@
     String procName = proc.getName();
 
     SignalManager signalManager = getProcessEngine().getSignalManager();
-    signalManager.throwSignal(procName, new Signal(procName, Signal.Type.ENTER_PROCESS));
+    signalManager.throwSignal(procName, new Signal(procName, SignalType.ENTER_PROCESS));
     MutableFlowScheduler flowScheduler = rtProc.getFlowScheduler();
     try
     {
@@ -121,7 +122,7 @@
     }
     finally
     {
-      signalManager.throwSignal(procName, new Signal(procName, Signal.Type.EXIT_PROCESS));
+      signalManager.throwSignal(procName, new Signal(procName, Signal.SignalType.EXIT_PROCESS));
     }
   }
 

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -28,11 +28,15 @@
 
 import javax.management.ObjectName;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.ProcessTimeoutException;
 import org.jboss.bpm.client.DialectHandler;
 import org.jboss.bpm.client.DialectRegistry;
 import org.jboss.bpm.client.ExecutionManager;
 import org.jboss.bpm.client.ProcessManager;
 import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.internal.ProcessImpl;
 import org.jboss.bpm.model.Process.Status;
 import org.jboss.bpm.runtime.Attachments;
 
@@ -44,6 +48,9 @@
  */
 public class ProcessManagerImpl extends ProcessManager
 {
+  // provide logging
+  private static final Log log = LogFactory.getLog(ProcessManagerImpl.class);
+  
   public void setDialectHandlers(Map<String, DialectHandler> dialectHandlers)
   {
     this.dialectHandlers = dialectHandlers;
@@ -70,7 +77,7 @@
 
   public ObjectName startProcess(String name, Attachments att)
   {
-    Set<Process> procSet = findProcessByName(name, Status.Ready);
+    Set<Process> procSet = getProcesses(name, Status.Ready);
     if (procSet.size() == 0)
       throw new IllegalStateException("Cannot obtain process with name: " + name);
     if (procSet.size() > 1)
@@ -91,4 +98,52 @@
     
     return proc.getID();
   }
+
+  @Override
+  public Status waitForEnd(ObjectName procID, long timeout)
+  {
+    ProcessImpl proc = (ProcessImpl)getProcessByID(procID);
+    Status status = proc.getStatus();
+
+    if (status == Status.None || status == Status.Ready)
+      throw new IllegalStateException("Cannot wait for process in state: " + status);
+
+    // Wait a little for the process to end
+    boolean forever = (timeout < 1);
+    long now = System.currentTimeMillis();
+    long until = now + timeout;
+    try
+    {
+      while (forever || now < until)
+      {
+        status = proc.getStatus();
+        if (status == Status.Cancelled || status == Status.Completed)
+        {
+          return status;
+        }
+        else if (status == Status.Aborted)
+        {
+          RuntimeException rte = proc.getRuntimeException();
+          if (rte == null)
+            return status;
+          else
+            throw rte;
+        }
+        Thread.sleep(100);
+        now = System.currentTimeMillis();
+      }
+    }
+    catch (InterruptedException ex)
+    {
+      log.warn(ex);
+    }
+    finally
+    {
+      // Remove the process
+      removeProcess(proc);
+    }
+
+    // Throw timeout exception if it took too long
+    throw new ProcessTimeoutException("Process timeout for: " + procID);
+  }
 }

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -56,7 +56,6 @@
 public abstract class ActivityImpl extends FlowObjectImpl implements Activity, MutablePropertySupport,
     SingleInFlowSetterSupport, SingleOutFlowSetterSupport
 {
-  private String name;
   private List<InputSet> inputSets = new ArrayList<InputSet>();
   private List<OutputSet> outputSets = new ArrayList<OutputSet>();
   private List<Expression> ioRules = new ArrayList<Expression>();
@@ -66,19 +65,9 @@
 
   public ActivityImpl(String name)
   {
-    this.name = name;
+    super(name);
   }
 
-  public String getName()
-  {
-    return name;
-  }
-
-  public void setName(String name)
-  {
-    this.name = name;
-  }
-
   public int getStartQuantity()
   {
     throw new NotImplementedException();

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -51,20 +51,14 @@
   // provide logging
   private static final Log log = LogFactory.getLog(EndEventImpl.class);
 
-  private String name;
   private Set<EventDetail> result;
   private ConnectingObject inFlow;
 
   public EndEventImpl(String name)
   {
-    this.name = name;
+    super(name);
   }
 
-  public String getName()
-  {
-    return name;
-  }
-
   public ConnectingObject getInFlow()
   {
     return inFlow;
@@ -108,12 +102,12 @@
       {
         public Signal getEnterSignal()
         {
-          return new Signal(getName(), Signal.Type.ENTER_END_EVENT);
+          return new Signal(getName(), Signal.SignalType.ENTER_END_EVENT);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(getName(), Signal.Type.EXIT_END_EVENT);
+          return new Signal(getName(), Signal.SignalType.EXIT_END_EVENT);
         }
       };
     }

Copied: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java (from rev 1863, jbossbpm/spec/branches/tdiesler/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java)
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.model.Event;
+import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.StartEvent;
+import org.jboss.bpm.model.Signal.SignalType;
+
+/**
+ * The EventBuilder can be used to build an {@link Event} dynamically.
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public class EventBuilderImpl extends ProcessBuilderImpl implements EventBuilder
+{
+  public EventBuilderImpl(ProcessImpl proc, FlowObjectImpl flowObject)
+  {
+    super(proc, flowObject);
+  }
+
+  public EventBuilder addSignalTrigger(String fromRef, SignalType signalType, String message)
+  {
+    EventImpl event = getEvent();
+    if (event instanceof StartEvent)
+    {
+      StartEventImpl start = (StartEventImpl)event;
+      Signal signal = new Signal(fromRef, signalType, message);
+      start.addTrigger(new SignalEventDetailImpl(signal));
+    }
+    else
+    {
+      throw new NotImplementedException("Trigger on: " + event);
+    }
+    return this;
+  }
+
+  private EventImpl getEvent()
+  {
+    if (flowObject instanceof Event == false)
+      throw new IllegalStateException("Last added flow object is not an Event: " + flowObject);
+    return (EventImpl)flowObject;
+  }
+}
\ No newline at end of file

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -36,5 +36,8 @@
 @SuppressWarnings("serial")
 public abstract class EventImpl extends FlowObjectImpl implements Event
 {
-
+  public EventImpl(String name)
+  {
+    super(name);
+  }
 }
\ No newline at end of file

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -26,12 +26,12 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.jboss.bpm.NotImplementedException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.model.ConnectingObject;
 import org.jboss.bpm.model.ExclusiveGateway;
 import org.jboss.bpm.model.Expression;
-import org.jboss.bpm.model.ConnectingObject;
 import org.jboss.bpm.model.Gate;
-import org.jboss.bpm.model.Gateway;
 import org.jboss.bpm.model.SequenceFlow;
 import org.jboss.bpm.model.Expression.ExpressionLanguage;
 import org.jboss.bpm.model.SequenceFlow.ConditionType;
@@ -52,6 +52,9 @@
 @SuppressWarnings("serial")
 public abstract class ExclusiveGatewayImpl extends GatewayImpl implements ExclusiveGateway
 {
+  // provide logging
+  private static final Log log = LogFactory.getLog(ExclusiveGatewayImpl.class);
+  
   public ExclusiveGatewayImpl(String name)
   {
     super(name);
@@ -65,80 +68,101 @@
   @Override
   public void addInFlow(ConnectingObject inFlow)
   {
-    if (getInFlows().size() > 0)
-      throw new NotImplementedException("ExclusiveGateway with multiple inFlows");
-    
     super.addInFlow(inFlow);
   }
 
   @Override
   public FlowHandler getFlowHandler()
   {
-    final Gateway gateway = this;
     FlowHandler handler = super.getFlowHandler();
-    if (handler == null && getGates().size() > 1)
+    if (handler == null)
     {
       handler = new FlowHandler()
       {
         public void execute(FlowScheduler scheduler, Token token)
         {
-          Gate selectedGate = null;
-          for (Gate auxGate : getGates())
+          // Schedule the first token that arrives 
+          if (receivedTokens.size() == 1)
           {
-            SequenceFlow seqFlow = auxGate.getOutgoingSequenceFlow();
-            if (seqFlow.getConditionType() == ConditionType.Expression)
-            {
-              Expression expr = seqFlow.getConditionExpression();
-              if (expr.getExpressionLanguage() == ExpressionLanguage.MVEL)
-              {
-                String mvel = expr.getExpressionBody();
-                ExecutionContext exContext = token.getExecutionContext();
-                Map<String, Object> vars = new HashMap<String, Object>();
-                for (Key key : exContext.getAttachmentKeys())
-                {
-                  String name = key.getNamePart();
-                  Object value = exContext.getAttachment(name);
-                  vars.put(name, value);
-                }
-                Boolean result = (Boolean)MVEL.eval(mvel, vars);
-                if (result == true)
-                {
-                  selectedGate = auxGate;
-                  break;
-                }
-              }
-              else
-              {
-                throw new IllegalStateException("Unsupported expression language: " + expr.getExpressionLanguage());
-              }
-            }
+            Gate selectedGate = getSelectedGate(token);
+            SequenceFlow outFlow = selectedGate.getOutgoingSequenceFlow();
+            scheduler.scheduleTuple(outFlow, token);
           }
-
-          // Fallback to the default gate if there is one
-          if (selectedGate == null)
+          // Ignore all other tokens 
+          else
           {
-            for (Gate auxGate : getGates())
-            {
-              SequenceFlow seqFlow = auxGate.getOutgoingSequenceFlow();
-              if (seqFlow.getConditionType() == ConditionType.Default)
-              {
-                selectedGate = auxGate;
-                break;
-              }
-            }
+            log.debug("Ignore token: " + token);
           }
           
-          if (selectedGate == null)
-            throw new IllegalStateException("Cannot select applicable gate in: " + gateway);
-
-          SequenceFlow outFlow = selectedGate.getOutgoingSequenceFlow();
-          scheduler.scheduleTuple(outFlow, token);
+          // Reset the gateway
+          if (expectedFlows.size() == 0)
+          {
+            expectedFlows.addAll(inFlows);
+            receivedTokens.clear();
+          }
         }
       };
     }
     return handler;
   }
 
+  // Get a single selected gate which' condition evaluates to TRUE
+  // Fall back to the default gate if there is one
+  // Choke if there is no selected gate
+  private Gate getSelectedGate(Token token)
+  {
+    Gate selectedGate = null;
+    for (Gate auxGate : getGates())
+    {
+      SequenceFlow seqFlow = auxGate.getOutgoingSequenceFlow();
+      if (seqFlow.getConditionType() == ConditionType.Expression)
+      {
+        Expression expr = seqFlow.getConditionExpression();
+        if (expr.getExpressionLanguage() == ExpressionLanguage.MVEL)
+        {
+          String mvel = expr.getExpressionBody();
+          ExecutionContext exContext = token.getExecutionContext();
+          Map<String, Object> vars = new HashMap<String, Object>();
+          for (Key key : exContext.getAttachmentKeys())
+          {
+            String name = key.getNamePart();
+            Object value = exContext.getAttachment(name);
+            vars.put(name, value);
+          }
+          Boolean result = (Boolean)MVEL.eval(mvel, vars);
+          if (result == true)
+          {
+            selectedGate = auxGate;
+            break;
+          }
+        }
+        else
+        {
+          throw new IllegalStateException("Unsupported expression language: " + expr.getExpressionLanguage());
+        }
+      }
+    }
+    
+    // Fallback to the default gate if there is one
+    if (selectedGate == null)
+    {
+      for (Gate auxGate : getGates())
+      {
+        SequenceFlow seqFlow = auxGate.getOutgoingSequenceFlow();
+        if (seqFlow.getConditionType() == ConditionType.Default)
+        {
+          selectedGate = auxGate;
+          break;
+        }
+      }
+    }
+    
+    if (selectedGate == null)
+      throw new IllegalStateException("Cannot select applicable gate in: " + this);
+    
+    return selectedGate;
+  }
+  
   public String toString()
   {
     return "ExclusiveGateway[" + getName() + "]";

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -50,16 +50,32 @@
 @SuppressWarnings("serial")
 public abstract class FlowObjectImpl extends GraphicalElementImpl implements FlowObject, HandlerSetterSupport, Executable
 {
+  private String name;
   private Process proc;
   private FlowHandler flowHandler;
   private SignalHandler signalHandler;
   private ExecutionHandler executionHandler;
   
+  public FlowObjectImpl(String name)
+  {
+    this.name = name;
+  }
+
   public Process getProcess()
   {
     return proc;
   }
 
+  public String getName()
+  {
+    return name;
+  }
+
+  public void setName(String name)
+  {
+    this.name = name;
+  }
+
   public ExecutionHandler getExecutionHandler()
   {
     return executionHandler;
@@ -171,7 +187,7 @@
     if (flow != null)
     {
       String name = flow.getTargetName();
-      FlowObject target = proc.getFlowObjectByName(name);
+      FlowObject target = proc.getFlowObject(name);
       if (target == null)
         throw new InvalidProcessException("Cannot find target for out flow: " + name);
 

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayBuilderImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayBuilderImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -68,7 +68,7 @@
   private GatewayImpl getGateway()
   {
     if (flowObject instanceof Gateway == false)
-      throw new IllegalStateException("Last added flow object is not a Gateway");
+      throw new IllegalStateException("Last added flow object is not a Gateway: " + flowObject);
     return (GatewayImpl)flowObject;
   }
 }
\ No newline at end of file

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -25,28 +25,22 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jboss.bpm.model.ConnectingObject;
 import org.jboss.bpm.model.Gate;
 import org.jboss.bpm.model.Gateway;
-import org.jboss.bpm.model.GraphicalElement;
-import org.jboss.bpm.model.NameSupport;
+import org.jboss.bpm.model.Process;
 import org.jboss.bpm.model.SequenceFlow;
 import org.jboss.bpm.model.Signal;
 import org.jboss.bpm.model.SequenceFlow.ConditionType;
 import org.jboss.bpm.runtime.ExecutionHandler;
-import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.FlowScheduler;
 import org.jboss.bpm.runtime.SignalHandler;
 import org.jboss.bpm.runtime.Token;
-import org.jboss.bpm.runtime.internal.TokenImpl;
 
 /**
  * Gateways are modelling elements that are used to control how Sequence Flow interact as they converge and diverge
@@ -61,24 +55,20 @@
   // provide logging
   private static final Log log = LogFactory.getLog(GatewayImpl.class);
 
-  private String name;
+  // The list of incomming flows
   protected List<ConnectingObject> inFlows = new ArrayList<ConnectingObject>();
+  // The list of outgoing gates
   private Map<String, Gate> gates = new LinkedHashMap<String, Gate>();
+  // The list of flows from which a token is expected
+  protected List<ConnectingObject> expectedFlows;
+  // The list of received tokens
+  protected List<Token> receivedTokens;
 
-  // Sync management
-  private Set<ConnectingObject> outstandingFlows;
-  private Set<Token> mergeTokens;
-
   public GatewayImpl(String name)
   {
-    this.name = name;
+    super(name);
   }
 
-  public String getName()
-  {
-    return name;
-  }
-
   public List<Gate> getGates()
   {
     return Collections.unmodifiableList(new ArrayList<Gate>(gates.values()));
@@ -124,28 +114,27 @@
   @Override
   public void execute(Token token)
   {
-    // Multiple incomingFlows must be synchronized
-    if (getInFlows().size() > 1)
+    // Initialize the gateway
+    if (expectedFlows == null)
     {
-      if (outstandingFlows == null)
-      {
-        outstandingFlows = new HashSet<ConnectingObject>(inFlows);
-        mergeTokens = new HashSet<Token>();
-      }
-
-      ConnectingObject flow = token.getFlow();
-      outstandingFlows.remove(flow);
-
-      if (outstandingFlows.size() > 0)
-        mergeTokens.add(token);
+      expectedFlows = new ArrayList<ConnectingObject>(inFlows);
+      receivedTokens = new ArrayList<Token>();
     }
+    
+    // Check that token from flow is valid
+    ConnectingObject flow = token.getFlow();
+    if (expectedFlows.contains(flow) == false)
+      throw new IllegalStateException("Unexpected token from: " + flow);
+    
+    // Call execution handler
+    ExecutionHandler exHandler = getExecutionHandler();
+    exHandler.execute(token);
 
-    // Call the execution handler with the InputSet
-    ExecutionHandler handler = getExecutionHandler();
-    if (handler != null)
-    {
-      handler.execute(token);
-    }
+    // Remove the flow from the expected list  
+    expectedFlows.remove(flow);
+    
+    // Store the received token for processing in the FlowHandler
+    receivedTokens.add(token);
   }
 
   public ExecutionHandler getExecutionHandler()
@@ -164,60 +153,6 @@
     return handler;
   }
 
-  public FlowHandler getFlowHandler()
-  {
-    FlowHandler handler = super.getFlowHandler();
-    if (handler == null && gates.size() == 1)
-    {
-      Gate onlyGate = gates.values().iterator().next();
-      final SequenceFlow outFlow = onlyGate.getOutgoingSequenceFlow();
-      handler = new FlowHandler()
-      {
-        public void execute(FlowScheduler scheduler, Token token)
-        {
-          if (getInFlows().size() > 1)
-          {
-            if (outstandingFlows.size() == 0)
-            {
-              Token mergedToken = mergeTokens(token);
-              scheduler.scheduleTuple(outFlow, mergedToken);
-              outstandingFlows = null;
-              mergeTokens = null;
-            }
-            else
-            {
-              // Log the list of outstanding flows
-              Set<String> sourceNames = new HashSet<String>();
-              for (ConnectingObject flow : outstandingFlows)
-              {
-                GraphicalElement sourceRef = flow.getSourceRef();
-                if (sourceRef instanceof NameSupport)
-                  sourceNames.add(((NameSupport)sourceRef).getName());
-                else
-                  sourceNames.add(sourceRef.getID().getCanonicalName());
-              }
-              log.debug("Waiting for " + outstandingFlows + " in gateway: " + sourceNames);
-            }
-          }
-          else
-          {
-            scheduler.scheduleTuple(outFlow, token);
-          }
-        }
-      };
-    }
-    return handler;
-  }
-
-  private Token mergeTokens(Token token)
-  {
-    TokenImpl mergedToken = new TokenImpl(null);
-    for (Token auxToken : mergeTokens)
-      mergedToken.mergeToken(auxToken);
-
-    return mergedToken;
-  }
-
   public SignalHandler getSignalHandler()
   {
     SignalHandler handler = super.getSignalHandler();
@@ -227,12 +162,12 @@
       {
         public Signal getEnterSignal()
         {
-          return new Signal(getName(), Signal.Type.ENTER_GATEWAY);
+          return new Signal(getName(), Signal.SignalType.ENTER_GATEWAY);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(getName(), Signal.Type.EXIT_GATEWAY);
+          return new Signal(getName(), Signal.SignalType.EXIT_GATEWAY);
         }
       };
     }

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -48,20 +48,14 @@
   // provide logging
   private static final Log log = LogFactory.getLog(IntermediateEventImpl.class);
 
-  private String name;
   private ConnectingObject inFlow;
   private ConnectingObject outFlow;
 
   public IntermediateEventImpl(String name)
   {
-    this.name = name;
+    super(name);
   }
 
-  public String getName()
-  {
-    return name;
-  }
-
   public ConnectingObject getInFlow()
   {
     return inFlow;
@@ -123,12 +117,12 @@
       {
         public Signal getEnterSignal()
         {
-          return new Signal(getName(), Signal.Type.ENTER_EVENT);
+          return new Signal(getName(), Signal.SignalType.ENTER_EVENT);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(getName(), Signal.Type.EXIT_EVENT);
+          return new Signal(getName(), Signal.SignalType.EXIT_EVENT);
         }
       };
     }

Deleted: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/NoneEventDetailImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/NoneEventDetailImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/NoneEventDetailImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -1,41 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.model.internal;
-
-//$Id$
-
-import org.jboss.bpm.model.NoneEventDetail;
-
-/**
- * The None event detail. 
- * 
- * @author thomas.diesler at jboss.com
- * @since 08-Jul-2008
- */
- at SuppressWarnings("serial")
-public class NoneEventDetailImpl extends EventDetailImpl implements NoneEventDetail
-{
-  public EventDetailType getEventDetailType()
-  {
-    return EventDetailType.None;
-  }
-}
\ No newline at end of file

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -23,12 +23,22 @@
 
 //$Id$
 
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.model.ConnectingObject;
 import org.jboss.bpm.model.Gate;
+import org.jboss.bpm.model.GraphicalElement;
+import org.jboss.bpm.model.NameSupport;
 import org.jboss.bpm.model.ParallelGateway;
 import org.jboss.bpm.model.SequenceFlow;
+import org.jboss.bpm.runtime.ExecutionHandler;
 import org.jboss.bpm.runtime.FlowHandler;
 import org.jboss.bpm.runtime.FlowScheduler;
 import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.internal.TokenImpl;
 
 
 /**
@@ -40,6 +50,13 @@
 @SuppressWarnings("serial")
 public class ParallelGatewayImpl extends GatewayImpl implements ParallelGateway
 {
+  // provide logging
+  private static final Log log = LogFactory.getLog(ParallelGatewayImpl.class);
+
+  // Sync management
+  private Set<ConnectingObject> outstandingFlows;
+  private Set<Token> mergeTokens;
+
   public ParallelGatewayImpl(String name)
   {
     super(name);
@@ -50,18 +67,81 @@
     return GatewayType.Parallel;
   }
   
-  /**
-   * The default FlowHandler adds all out flows to the queue
-   */
+  @Override
+  public void execute(Token token)
+  {
+    // Multiple incomingFlows must be synchronized
+    if (getInFlows().size() > 1)
+    {
+      if (outstandingFlows == null)
+      {
+        outstandingFlows = new HashSet<ConnectingObject>(inFlows);
+        mergeTokens = new HashSet<Token>();
+      }
+
+      ConnectingObject flow = token.getFlow();
+      outstandingFlows.remove(flow);
+
+      if (outstandingFlows.size() > 0)
+        mergeTokens.add(token);
+    }
+
+    // Call the execution handler with the InputSet
+    ExecutionHandler handler = getExecutionHandler();
+    if (handler != null)
+    {
+      handler.execute(token);
+    }
+  }
+  
   public FlowHandler getFlowHandler()
   {
     FlowHandler handler = super.getFlowHandler();
-    if (handler == null)
+    if (handler == null && getGates().size() == 1)
     {
+      Gate onlyGate = getGates().iterator().next();
+      final SequenceFlow outFlow = onlyGate.getOutgoingSequenceFlow();
       handler = new FlowHandler()
       {
         public void execute(FlowScheduler scheduler, Token token)
         {
+          if (getInFlows().size() > 1)
+          {
+            if (outstandingFlows.size() == 0)
+            {
+              Token mergedToken = mergeTokens(token);
+              scheduler.scheduleTuple(outFlow, mergedToken);
+              outstandingFlows = null;
+              mergeTokens = null;
+            }
+            else
+            {
+              // Log the list of outstanding flows
+              Set<String> sourceNames = new HashSet<String>();
+              for (ConnectingObject flow : outstandingFlows)
+              {
+                GraphicalElement sourceRef = flow.getSourceRef();
+                if (sourceRef instanceof NameSupport)
+                  sourceNames.add(((NameSupport)sourceRef).getName());
+                else
+                  sourceNames.add(sourceRef.getID().getCanonicalName());
+              }
+              log.debug("Waiting for " + outstandingFlows + " in gateway: " + sourceNames);
+            }
+          }
+          else
+          {
+            scheduler.scheduleTuple(outFlow, token);
+          }
+        }
+      };
+    }
+    else if (handler == null && getGates().size() > 1)
+    {
+      handler = new FlowHandler()
+      {
+        public void execute(FlowScheduler scheduler, Token token)
+        {
           for(Gate gate : getGates())
           {
             SequenceFlow outFlow = gate.getOutgoingSequenceFlow();
@@ -73,6 +153,15 @@
     return handler;
   }
 
+  private Token mergeTokens(Token token)
+  {
+    TokenImpl mergedToken = new TokenImpl(null);
+    for (Token auxToken : mergeTokens)
+      mergedToken.mergeToken(auxToken);
+
+    return mergedToken;
+  }
+  
   public String toString()
   {
     return "ParallelGateway[" + getName() + "]";

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -24,6 +24,7 @@
 //$Id$
 
 import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.model.EventBuilder;
 import org.jboss.bpm.model.FlowObject;
 import org.jboss.bpm.model.Gateway;
 import org.jboss.bpm.model.GatewayBuilder;
@@ -136,26 +137,26 @@
     return this;
   }
 
-  public ProcessBuilder addStartEvent()
+  public EventBuilder addStartEvent(String name)
   {
-    flowObject = addFlowObject(new StartEventImpl());
-    return this;
+    flowObject = addFlowObject(new StartEventImpl(name));
+    return new EventBuilderImpl(proc, flowObject);
   }
 
-  public ProcessBuilder addEvent(String name)
+  public EventBuilder addEvent(String name)
   {
-    flowObject = (FlowObjectImpl)proc.getFlowObjectByName(name);
+    flowObject = (FlowObjectImpl)proc.getFlowObject(name);
     if (flowObject == null)
       flowObject = addFlowObject(new IntermediateEventImpl(name));
-    return this;
+    return new EventBuilderImpl(proc, flowObject);
   }
 
-  public ProcessBuilder addEndEvent(String name)
+  public EventBuilder addEndEvent(String name)
   {
-    flowObject = (FlowObjectImpl)proc.getFlowObjectByName(name);
+    flowObject = (FlowObjectImpl)proc.getFlowObject(name);
     if (flowObject == null)
       flowObject = addFlowObject(new EndEventImpl(name));
-    return this;
+    return new EventBuilderImpl(proc, flowObject);
   }
 
   public TaskBuilder addTask(String name)
@@ -165,7 +166,7 @@
   
   public TaskBuilder addTask(String name, TaskType type)
   {
-    flowObject = (FlowObjectImpl)proc.getFlowObjectByName(name);
+    flowObject = (FlowObjectImpl)proc.getFlowObject(name);
     if (flowObject == null)
     {
       if (type == TaskType.None || type == null)
@@ -191,7 +192,7 @@
 
   public GatewayBuilder addGateway(String name, GatewayType type)
   {
-    flowObject = (FlowObjectImpl)proc.getFlowObjectByName(name);
+    flowObject = (FlowObjectImpl)proc.getFlowObject(name);
     if (flowObject == null)
     {
       if (GatewayType.Exclusive == type)

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -180,7 +180,7 @@
 
   public StartEvent getStartEvent(String name)
   {
-    FlowObject fo = getFlowObjectByName(name);
+    FlowObject fo = getFlowObject(name);
     if (fo instanceof StartEvent == false)
       throw new IllegalArgumentException("Is not a start event: " + fo);
     
@@ -202,7 +202,7 @@
 
   public EndEvent getEndEvent(String name)
   {
-    FlowObject fo = getFlowObjectByName(name);
+    FlowObject fo = getFlowObject(name);
     if (fo instanceof EndEvent == false)
       throw new IllegalArgumentException("Is not an end event: " + fo);
     
@@ -253,7 +253,7 @@
       throw new IllegalStateException("Cannot start process in state: " + getStatus());
     
     // Register the process if needed
-    if (pm.findProcessByName(getName(), null).size() == 0)
+    if (pm.getProcesses(getName(), null).size() == 0)
     {
       pm.registerProcess(this);
     }
@@ -273,7 +273,7 @@
     pm.waitForEnd(getID(), timeout);
   }
 
-  public FlowObject getFlowObjectByName(String name)
+  public FlowObject getFlowObject(String name)
   {
     if (name == null)
       throw new IllegalArgumentException("Cannot find flow object with name: null");
@@ -294,6 +294,18 @@
     return flowObject;
   }
 
+  @SuppressWarnings("unchecked")
+  public <T extends FlowObject> List<T> getFlowObjects(Class<T> clazz)
+  {
+    List<T> retFlowObjects = new ArrayList<T>();
+    for (FlowObject fo : flowObjects)
+    {
+      if (clazz.isAssignableFrom(fo.getClass()))
+        retFlowObjects.add((T)fo);
+    }
+    return retFlowObjects;
+  }
+
   public Status getStatus()
   {
     return status;
@@ -311,13 +323,13 @@
 
   public void addMessage(Message msg)
   {
-    if (getMessageByName(msg.getName()) != null)
+    if (getMessage(msg.getName()) != null)
       throw new InvalidProcessException("Duplicate message: " + msg);
     
     messages.add(msg);
   }
   
-  public Message getMessageByName(String msgName)
+  public Message getMessage(String msgName)
   {
     for (Message msg : messages)
     {
@@ -342,10 +354,10 @@
       this.name = "AnonymousProcess#" + pm.getProcesses().size();
     }
 
-    if (getStartEvent() == null)
+    if (getFlowObjects(StartEvent.class).size() == 0)
       throw new InvalidProcessException("Process does not have a start event");
 
-    if (getEndEvents().size() == 0)
+    if (getFlowObjects(EndEvent.class).size() == 0)
       throw new InvalidProcessException("Process does not have end events");
 
     // Set the associated process

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -24,6 +24,8 @@
 //$Id$
 
 import org.jboss.bpm.model.Expression;
+import org.jboss.bpm.model.GraphicalElement;
+import org.jboss.bpm.model.NameSupport;
 import org.jboss.bpm.model.SequenceFlow;
 
 /**
@@ -60,4 +62,13 @@
   {
     return conditionExpression;
   }
+  
+  public String toString()
+  {
+    GraphicalElement sourceRef = getSourceRef();
+    GraphicalElement targetRef = getTargetRef();
+    String srcName = (sourceRef instanceof NameSupport ? ((NameSupport)sourceRef).getName() : sourceRef.getID().getCanonicalName());
+    String tarName = (targetRef instanceof NameSupport ? ((NameSupport)targetRef).getName() : targetRef.getID().getCanonicalName());
+    return "SequenceFlow[" + srcName + "->" + tarName + "]";
+  }
 }
\ No newline at end of file

Copied: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java (from rev 1863, jbossbpm/spec/branches/tdiesler/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java)
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java	                        (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalEventDetail;
+
+/**
+ * The Signal event detail
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at SuppressWarnings("serial")
+public class SignalEventDetailImpl extends SupportingElementImpl implements SignalEventDetail
+{
+  private Signal signal;
+  
+  public SignalEventDetailImpl(Signal signal)
+  {
+    this.signal = signal;
+  }
+
+  public EventDetailType getEventDetailType()
+  {
+    return EventDetailType.Signal;
+  }
+
+  public Signal getSignalRef()
+  {
+    return signal;
+  }
+}

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -56,11 +56,21 @@
   private ConnectingObject outFlow;
   private List<EventDetail> triggers = new ArrayList<EventDetail>();
 
+  public StartEventImpl(String name)
+  {
+    super(name);
+  }
+
   public List<EventDetail> getTrigger()
   {
     return Collections.unmodifiableList(triggers);
   }
 
+  public void addTrigger(EventDetail eventDetail)
+  {
+    triggers.add(eventDetail);
+  }
+
   public ConnectingObject getOutFlow()
   {
     return outFlow;
@@ -112,12 +122,12 @@
       {
         public Signal getEnterSignal()
         {
-          return new Signal("Start", Signal.Type.ENTER_START_EVENT);
+          return new Signal("Start", Signal.SignalType.ENTER_START_EVENT);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal("Start", Signal.Type.EXIT_START_EVENT);
+          return new Signal("Start", Signal.SignalType.EXIT_START_EVENT);
         }
       };
     }

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -55,12 +55,12 @@
       {
         public Signal getEnterSignal()
         {
-          return new Signal(getName(), Signal.Type.ENTER_SUB_PROCESS);
+          return new Signal(getName(), Signal.SignalType.ENTER_SUB_PROCESS);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(getName(), Signal.Type.EXIT_SUB_PROCESS);
+          return new Signal(getName(), Signal.SignalType.EXIT_SUB_PROCESS);
         }
       };
     }

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -63,12 +63,12 @@
       {
         public Signal getEnterSignal()
         {
-          return new Signal(getName(), Signal.Type.ENTER_TASK);
+          return new Signal(getName(), Signal.SignalType.ENTER_TASK);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(getName(), Signal.Type.EXIT_TASK);
+          return new Signal(getName(), Signal.SignalType.EXIT_TASK);
         }
       };
     }
@@ -83,7 +83,7 @@
   protected void initializeMessageRef(Process proc, Message msg)
   {
     String msgName = msg.getName();
-    MessageImpl procMsg = (MessageImpl)proc.getMessageByName(msgName);
+    MessageImpl procMsg = (MessageImpl)proc.getMessage(msgName);
     if (procMsg != null)
     {
       MessageImpl msgImpl = (MessageImpl)msg;

Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -98,7 +98,7 @@
     procBuilder.addProcess(PROCESS_NAME);
     
     // Add Start Event
-    procBuilder.addStartEvent().addSequenceFlow(TASK_RECEIVE_REQUEST);
+    procBuilder.addStartEvent("Start").addSequenceFlow(TASK_RECEIVE_REQUEST);
 
     // Build the ReceiveReqTask
     TaskBuilder taskBuilder = procBuilder.addTask(TASK_RECEIVE_REQUEST, TaskType.Receive);

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -24,6 +24,12 @@
 // $Id$
 
 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.Gateway.GatewayType;
+import org.jboss.bpm.model.Signal.SignalType;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
 /**
@@ -46,6 +52,20 @@
 
   public void testGateA() throws Exception
   {
-    System.out.println("FIXME: ExclusiveMergeTest");
+    Process proc = getProcess();
+    assertNotNull(proc);
   }
+
+  private Process getProcess()
+  {
+    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+    eventBuilder.addSignalTrigger(getName(), SignalType.START_TRIGGER, "A").addSequenceFlow("Merge");
+    eventBuilder = procBuilder.addStartEvent("StartB");
+    eventBuilder.addSignalTrigger(getName(), SignalType.START_TRIGGER, "B").addSequenceFlow("Merge");
+    procBuilder.addGateway("Merge", GatewayType.Exclusive);
+    procBuilder.addSequenceFlow("End").addEndEvent("End");
+    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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -62,7 +62,7 @@
     proc.startProcess(att);
     proc.waitForEnd();
 
-    List<Signal> endSignals = getSignals(Signal.Type.EXIT_END_EVENT);
+    List<Signal> endSignals = getSignals(Signal.SignalType.EXIT_END_EVENT);
     assertEquals(1, endSignals.size());
     assertEquals("EndA", endSignals.get(0).getFromRef());
   }
@@ -76,7 +76,7 @@
     proc.startProcess(att);
     proc.waitForEnd();
 
-    List<Signal> endSignals = getSignals(Signal.Type.EXIT_END_EVENT);
+    List<Signal> endSignals = getSignals(Signal.SignalType.EXIT_END_EVENT);
     assertEquals(1, endSignals.size());
     assertEquals("EndB", endSignals.get(0).getFromRef());
   }
@@ -102,7 +102,7 @@
   private Process getProcess()
   {
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("Split");
+    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");

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -23,8 +23,6 @@
 
 // $Id$
 
-import java.util.List;
-
 import org.jboss.bpm.InvalidProcessException;
 import org.jboss.bpm.model.EndEvent;
 import org.jboss.bpm.model.FlowObject;
@@ -47,19 +45,19 @@
   {
     // Create a Process through the ProcessBuilder
     ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    Process proc = builder.addProcess(null).addStartEvent().addSequenceFlow("taskA").addTask("taskA").
-    addSequenceFlow("end").addEndEvent("end").getProcess();
+    Process proc = builder.addProcess(null).addStartEvent("Start").addSequenceFlow("taskA").addTask("taskA").
+    addSequenceFlow("End").addEndEvent("End").getProcess();
     assertEquals("AnonymousProcess#0", proc.getName());
 
-    StartEvent start = proc.getStartEvent();
+    StartEvent start = (StartEvent)proc.getFlowObject("Start");
     assertNotNull("Start expected", start);
 
-    FlowObject nfo = proc.getFlowObjectByName("taskA");
+    FlowObject nfo = proc.getFlowObject("taskA");
     assertNotNull("FlowObject expected", nfo);
     assertTrue("Task expected", nfo instanceof Task);
 
-    List<EndEvent> ends = proc.getEndEvents();
-    assertEquals(1, ends.size());
+    EndEvent end = (EndEvent)proc.getFlowObject("End");
+    assertNotNull(end);
   }
 
   public void testNoStartState() throws Exception
@@ -83,7 +81,7 @@
     {
       // Create a Process through the ProcessBuilder
       ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-      builder.addProcess(null).addStartEvent().addSequenceFlow("taskA").addTask("taskA").addSequenceFlow("end").
+      builder.addProcess(null).addStartEvent("Start").addSequenceFlow("taskA").addTask("taskA").addSequenceFlow("end").
       addTask("end").getProcess();
       fail("InvalidProcessException expected");
     }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -65,7 +65,7 @@
   private Process getProcess()
   {
     ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    Process proc = builder.addProcess(getName()).addStartEvent().addSequenceFlow("taskA").
+    Process proc = builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("taskA").
     addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
     return proc;
   }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -75,7 +75,7 @@
   private Process getProcess()
   {
     ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    Process proc = builder.addProcess(getName()).addStartEvent().addSequenceFlow("taskA").
+    Process proc = builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("taskA").
     addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
     return proc;
   }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -40,7 +40,7 @@
   public void testReceiveTaskWithNoMessage() throws Exception
   {
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("A");
+    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("A");
     procBuilder.addTask("A", TaskType.Receive).addSequenceFlow("End").addEndEvent("End");
     try
     {
@@ -56,7 +56,7 @@
   public void testSendTaskWithNoMessage() throws Exception
   {
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("A");
+    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("A");
     procBuilder.addTask("A", TaskType.Send).addSequenceFlow("End").addEndEvent("End");
     try
     {

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/ParallelSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/ParallelSplitTest.java	2008-08-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/ParallelSplitTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -72,7 +72,7 @@
   {
     // Create a Process through the ProcessBuilder
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    Process proc = procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("gateway").addGateway("gateway", GatewayType.Parallel).
+    Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("gateway").addGateway("gateway", GatewayType.Parallel).
     addSequenceFlow("endA").addSequenceFlow("endB").addEndEvent("endA").addEndEvent("endB").getProcess();
     
     runProcess(proc);
@@ -86,12 +86,12 @@
     
     // Validate received signals
     List<Signal> signals = getSignals();
-    assertEquals(Signal.Type.ENTER_END_EVENT, signals.get(5).getType());
+    assertEquals(Signal.SignalType.ENTER_END_EVENT, signals.get(5).getType());
     assertEquals("endA", signals.get(5).getFromRef());
-    assertEquals(Signal.Type.EXIT_END_EVENT, signals.get(6).getType());
+    assertEquals(Signal.SignalType.EXIT_END_EVENT, signals.get(6).getType());
     
-    assertEquals(Signal.Type.ENTER_END_EVENT, signals.get(7).getType());
+    assertEquals(Signal.SignalType.ENTER_END_EVENT, signals.get(7).getType());
     assertEquals("endB", signals.get(7).getFromRef());
-    assertEquals(Signal.Type.EXIT_END_EVENT, signals.get(8).getType());
+    assertEquals(Signal.SignalType.EXIT_END_EVENT, signals.get(8).getType());
   }
 }

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -72,7 +72,7 @@
   {
     // Create a Process through the ProcessBuilder
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    Process proc = procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("stateA").addTask("stateA").
+    Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("stateA").addTask("stateA").
     addSequenceFlow("end").addEndEvent("end").getProcess();
 
     runProcess(proc);
@@ -86,13 +86,13 @@
 
     // Validate received signals
     List<Signal> signals = getSignals();
-    assertEquals(Signal.Type.ENTER_PROCESS, signals.get(0).getType());
-    assertEquals(Signal.Type.ENTER_START_EVENT, signals.get(1).getType());
-    assertEquals(Signal.Type.EXIT_START_EVENT, signals.get(2).getType());
-    assertEquals(Signal.Type.ENTER_TASK, signals.get(3).getType());
-    assertEquals(Signal.Type.EXIT_TASK, signals.get(4).getType());
-    assertEquals(Signal.Type.ENTER_END_EVENT, signals.get(5).getType());
-    assertEquals(Signal.Type.EXIT_END_EVENT, signals.get(6).getType());
-    assertEquals(Signal.Type.EXIT_PROCESS, signals.get(7).getType());
+    assertEquals(Signal.SignalType.ENTER_PROCESS, signals.get(0).getType());
+    assertEquals(Signal.SignalType.ENTER_START_EVENT, signals.get(1).getType());
+    assertEquals(Signal.SignalType.EXIT_START_EVENT, signals.get(2).getType());
+    assertEquals(Signal.SignalType.ENTER_TASK, signals.get(3).getType());
+    assertEquals(Signal.SignalType.EXIT_TASK, signals.get(4).getType());
+    assertEquals(Signal.SignalType.ENTER_END_EVENT, signals.get(5).getType());
+    assertEquals(Signal.SignalType.EXIT_END_EVENT, signals.get(6).getType());
+    assertEquals(Signal.SignalType.EXIT_PROCESS, signals.get(7).getType());
   }
 }

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-11 10:47:13 UTC (rev 1863)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java	2008-08-11 10:56:42 UTC (rev 1864)
@@ -72,7 +72,7 @@
   {
     // Create a Process through the ProcessBuilder
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-    Process proc = procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("stateA").addTask("stateA").
+    Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("stateA").addTask("stateA").
     addExecutionHandler(TaskA.class).addSequenceFlow("end").addEndEvent("end").getProcess();
 
     runProcess(proc);
@@ -86,13 +86,13 @@
 
     // Validate received signals
     List<Signal> signals = getSignals();
-    assertEquals(Signal.Type.ENTER_PROCESS, signals.get(0).getType());
-    assertEquals(Signal.Type.ENTER_START_EVENT, signals.get(1).getType());
-    assertEquals(Signal.Type.EXIT_START_EVENT, signals.get(2).getType());
-    assertEquals(Signal.Type.ENTER_TASK, signals.get(3).getType());
-    assertEquals(Signal.Type.EXIT_TASK, signals.get(4).getType());
-    assertEquals(Signal.Type.ENTER_END_EVENT, signals.get(5).getType());
-    assertEquals(Signal.Type.EXIT_END_EVENT, signals.get(6).getType());
-    assertEquals(Signal.Type.EXIT_PROCESS, signals.get(7).getType());
+    assertEquals(Signal.SignalType.ENTER_PROCESS, signals.get(0).getType());
+    assertEquals(Signal.SignalType.ENTER_START_EVENT, signals.get(1).getType());
+    assertEquals(Signal.SignalType.EXIT_START_EVENT, signals.get(2).getType());
+    assertEquals(Signal.SignalType.ENTER_TASK, signals.get(3).getType());
+    assertEquals(Signal.SignalType.EXIT_TASK, signals.get(4).getType());
+    assertEquals(Signal.SignalType.ENTER_END_EVENT, signals.get(5).getType());
+    assertEquals(Signal.SignalType.EXIT_END_EVENT, signals.get(6).getType());
+    assertEquals(Signal.SignalType.EXIT_PROCESS, signals.get(7).getType());
   }
 }




More information about the jbpm-commits mailing list