[jbpm-commits] JBoss JBPM SVN: r2268 - in projects/jbpm-spec/trunk/modules: api/src/main/java/org/jboss/bpm/test and 6 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Sep 17 04:08:03 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-09-17 04:08:02 -0400 (Wed, 17 Sep 2008)
New Revision: 2268

Added:
   projects/jbpm-spec/trunk/modules/cts/src/test/resources/cts/processmanager/
   projects/jbpm-spec/trunk/modules/cts/src/test/resources/cts/processmanager/processmanager-api10.xml
Modified:
   projects/jbpm-spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
   projects/jbpm-spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
   projects/jbpm-spec/trunk/modules/cts/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java
   projects/jbpm-spec/trunk/modules/cts/src/test/java/org/jboss/bpm/cts/task/ReceiveTaskTest.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ActivityImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AssignmentImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ComplexGatewayImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EndEventImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EntityImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventDetailImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExclusiveGatewayDataBasedImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExclusiveGatewayImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExpressionImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowObjectImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GateImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GatewayImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GraphicalElementImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/HandlerImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InclusiveGatewayImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InputSetImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/IntermediateEventImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageEventDetailImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageFlowImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/NoneTaskImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/OutputSetImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ParallelGatewayImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ParticipantImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/PropertyImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ReceiveTaskImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/RoleImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SendTaskImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SequenceFlowImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SignalEventDetailImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SubProcessImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SupportingElementImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TaskImpl.java
Log:
Explicitly registered processes

Modified: projects/jbpm-spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
===================================================================
--- projects/jbpm-spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -79,7 +79,8 @@
   }
 
   /**
-   * Create a Process from a XML string in one of the supported formats
+   * Create a Process from a XML string in one of the supported formats.
+   * Note, the Process is not automatically registered.
    */
   public final Process createProcess(String pXML)
   {
@@ -89,7 +90,8 @@
   }
 
   /**
-   * Create a Process from an URL to a XML descritor in one of the supported formats
+   * Create a Process from an URL to a XML descritor in one of the supported formats.
+   * Note, the Process is not automatically registered.
    */
   public final Process createProcess(URL pURL) throws IOException
   {
@@ -108,7 +110,9 @@
   }
 
   /**
-   * Find the set of Processes for a given name
+   * Get a set of Processes for a given name and status.
+   * <p/>
+   * If the given status is null, all processes with the given name are included.
    * 
    * @param name The process name
    * @param status The optional process status
@@ -138,24 +142,32 @@
   }
 
   /**
-   * Register a Process.
+   * Register a Process explicitly.
+   * <p/>
+   * A Process that is registered explicitly, can be started by name.
+   * <p/>
+   * An implementation may replace the given process with a copy of itself. The copy
+   * can then be started without effecting the just registered process.
+   * <p/>
+   * 
    */
-  public void registerProcess(Process proc)
+  public Process registerProcess(Process proc)
   {
     if (ProcessEngine.locateProcessEngine().isPrepareForShutdown())
       throw new EngineShutdownException("Cannot register a process while engine is shutting down");
 
     log.debug("registerProcess: " + proc);
     procs.put(proc.getID(), proc);
+    return proc;
   }
 
   /**
    * Unregister a Process.
    */
-  public void unregisterProcess(Process proc)
+  public Process unregisterProcess(ObjectName procID)
   {
-    log.debug("unregisterProcess: " + proc);
-    procs.remove(proc.getID());
+    log.debug("unregisterProcess: " + procID);
+    return procs.remove(procID);
   }
 
   private URI getNamespaceURI(InputStream inStream)

Modified: projects/jbpm-spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- projects/jbpm-spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -97,26 +97,6 @@
     msgManager.addMessageListener(getMessageListener());
   }
 
-  private void clearAllSignalListeners()
-  {
-    SignalManager sigManager = SignalManager.locateSignalManager();
-    Set<SignalListener> sigListeners = sigManager.getSignalListeners();
-    for (SignalListener sigListener : sigListeners)
-    {
-      sigManager.removeSignalListener(sigListener);
-    }
-  }
-
-  private void clearAllMessageListeners()
-  {
-    MessageManager msgManager = MessageManager.locateMessageManager();
-    Set<MessageListener> msgListeners = msgManager.getMessageListeners();
-    for (MessageListener msgListener : msgListeners)
-    {
-      msgManager.removeMessageListener(msgListener.getID());
-    }
-  }
-
   @Override
   protected void tearDown() throws Exception
   {
@@ -135,32 +115,49 @@
     Set<Process> procs = procManager.getProcesses();
     if (procs.size() > 0)
     {
-      String logMsg = "Registered processes on tear down of " + getName() + ": " + procs;
-      System.out.println(logMsg);
-      log.warn(logMsg);
+      System.out.println("FIXME: Registered processes on tear down of " + getName() + ": " + procs);
+      System.exit(1);
     }
 
     // Check that there are no registered signal listeners left
     Set<SignalListener> sigListeners = signalManager.getSignalListeners();
     if (sigListeners.size() > 0)
     {
-      String logMsg = "Registered signal listeners on tear down of " + getName() + ": " + sigListeners;
-      System.out.println(logMsg);
-      log.warn(logMsg);
+      System.out.println("FIXME: Registered signal listeners on tear down of " + getName() + ": " + sigListeners);
+      System.exit(1);
     }
 
     // Check that there are no registered signal listeners left
     Set<MessageListener> msgListeners = messageManager.getMessageListeners();
     if (msgListeners.size() > 0)
     {
-      String logMsg = "Registered message listeners on tear down of " + getName() + ": " + msgListeners;
-      System.out.println(logMsg);
-      log.warn(logMsg);
+      System.out.println("FIXME: Registered message listeners on tear down of " + getName() + ": " + msgListeners);
+      System.exit(1);
     }
 
     super.tearDown();
   }
 
+  private void clearAllSignalListeners()
+  {
+    SignalManager sigManager = SignalManager.locateSignalManager();
+    Set<SignalListener> sigListeners = sigManager.getSignalListeners();
+    for (SignalListener sigListener : sigListeners)
+    {
+      sigManager.removeSignalListener(sigListener);
+    }
+  }
+
+  private void clearAllMessageListeners()
+  {
+    MessageManager msgManager = MessageManager.locateMessageManager();
+    Set<MessageListener> msgListeners = msgManager.getMessageListeners();
+    for (MessageListener msgListener : msgListeners)
+    {
+      msgManager.removeMessageListener(msgListener.getID());
+    }
+  }
+
   // Deploy a beans config
   protected void deployBeans(String resourceName)
   {

Modified: projects/jbpm-spec/trunk/modules/cts/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java
===================================================================
--- projects/jbpm-spec/trunk/modules/cts/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/cts/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -23,6 +23,11 @@
 
 // $Id$
 
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.Set;
+
 import javax.management.ObjectName;
 
 import org.jboss.bpm.client.ProcessManager;
@@ -32,6 +37,7 @@
 import org.jboss.bpm.model.ProcessBuilder;
 import org.jboss.bpm.model.ProcessBuilderFactory;
 import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Process.ProcessStatus;
 import org.jboss.bpm.model.Signal.SignalType;
 import org.jboss.bpm.test.DefaultEngineTestCase;
 
@@ -43,32 +49,80 @@
  */
 public class ProcessManagerTest extends DefaultEngineTestCase
 {
+  /**
+   * Test process create from XML string.
+   * 
+   * Verify, that the process is not automatically registered.
+   */
+  public void testCreateProcessXML() throws Exception
+  {
+    StringBuilder procXML = new StringBuilder();
+    URL procURL = getResourceURL("cts/processmanager/processmanager-" + getDialect() + ".xml");
+    BufferedReader br = new BufferedReader(new InputStreamReader(procURL.openStream()));
+    String line = br.readLine();
+    while (line != null)
+    {
+      procXML.append(line);
+      line = br.readLine();
+    }
+    assertTrue("Process XML expected", procXML.length() > 0);
+
+    ProcessManager pm = ProcessManager.locateProcessManager();
+    Process proc = pm.createProcess(procXML.toString());
+    assertNotNull("Process expected", proc);
+    assertNotNull("Process ID expected", proc.getID());
+
+    assertNull("A process is not registered automatically", pm.getProcessByID(proc.getID()));
+
+    assertEquals("Process is initially in status Ready", ProcessStatus.Ready, proc.getProcessStatus());
+  }
+
+  /**
+   * Test process create from XML string.
+   * 
+   * Verify, that the process is not automatically registered.
+   */
+  public void testCreateProcessURL() throws Exception
+  {
+    URL procURL = getResourceURL("cts/processmanager/processmanager-" + getDialect() + ".xml");
+
+    ProcessManager pm = ProcessManager.locateProcessManager();
+    Process proc = pm.createProcess(procURL);
+    assertNotNull("Process expected", proc);
+    assertNotNull("Process ID expected", proc.getID());
+
+    assertNull("A process is not registered automatically", pm.getProcessByID(proc.getID()));
+
+    assertEquals("Process is initially in status Ready", ProcessStatus.Ready, proc.getProcessStatus());
+  }
+
+  /**
+   * Verify, that a process created by the ProcessBuilder is not automatically registered.
+   * 
+   * Starting the Process registers it automatically.
+   * 
+   * A terminated Process is automatically removed.
+   */
   public void testStartProcess() throws Exception
   {
-    final Process proc = getProcess();
-    final ObjectName procID = proc.getID();
+    Process proc = getProcess();
+    ObjectName procID = proc.getID();
 
-    final ProcessManager pm = ProcessManager.locateProcessManager();
-    assertNull("A process created through the builder is not registered automatically", pm.getProcessByID(procID));
+    assertNotNull("Process ID expected", procID);
 
-    SignalListener sigListener = new SignalListener()
-    {
-      public boolean acceptSignal(Signal signal)
-      {
-        return signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER;
-      }
+    ProcessManager pm = ProcessManager.locateProcessManager();
+    assertNull("A process is not registered automatically", pm.getProcessByID(procID));
 
-      public void catchSignal(Signal signal)
-      {
-        assertNotNull(pm.getProcessByID(procID));
-      }
-    };
+    assertEquals("Process is initially in status Ready", ProcessStatus.Ready, proc.getProcessStatus());
+
+    TestSignalListener sigListener = new TestSignalListener(proc.getName());
     SignalManager sigManager = SignalManager.locateSignalManager();
     sigManager.addSignalListener(sigListener);
 
     try
     {
       // Start the process, which automatically adds it to the registery
+      // The SignalListener should be able to access the registered process
       assertEquals(procID, proc.startProcess());
       proc.waitForEnd();
     }
@@ -77,9 +131,54 @@
       sigManager.removeSignalListener(sigListener);
     }
 
-    assertNull("A terminated process is removed from the registry", pm.getProcessByID(procID));
+    // Verify the the signal lister has seen the registered process
+    assertSame("Registered process expected", proc, sigListener.procActive);
+    
+    assertNull("A terminated process is unregistered", pm.getProcessByID(procID));
   }
 
+  /**
+   * Test that an explicitly registered process is copied and stays registered
+   */
+  public void testRegisterExplicitly() throws Exception
+  {
+    Process procOrg = getProcess();
+
+    ProcessManager pm = ProcessManager.locateProcessManager();
+    Process proc = pm.registerProcess(procOrg);
+    
+    assertSame("Process is registered", procOrg, pm.getProcessByID(procOrg.getID()));
+    
+    TestSignalListener sigListener = new TestSignalListener(proc.getName());
+    SignalManager sigManager = SignalManager.locateSignalManager();
+    sigManager.addSignalListener(sigListener);
+
+    try
+    {
+      // Start the process, which automatically adds it to the registery
+      // The SignalListener should be able to access the registered process
+      assertEquals(proc.getID(), proc.startProcess());
+      proc.waitForEnd();
+    }
+    finally
+    {
+      sigManager.removeSignalListener(sigListener);
+    }
+
+    // Verify the the signal lister has seen the registered process
+    assertSame("Registered process expected", proc, sigListener.procActive);
+    assertNull("A terminated process is unregistered", pm.getProcessByID(proc.getID()));
+    
+    Process procReady = sigListener.procReady;
+    assertNotNull("Process copy not null", procReady);
+    assertSame("Process copy same", procOrg, procReady);
+    assertSame("Registered process expected", procReady, pm.getProcessByID(procReady.getID()));
+
+    // Unregister the original
+    pm.unregisterProcess(procOrg.getID());
+    assertEquals("Process is unregistered", 0, pm.getProcesses().size());
+  }
+
   private Process getProcess()
   {
     ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
@@ -87,4 +186,34 @@
     Process proc = builder.addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
     return proc;
   }
+
+  static class TestSignalListener implements SignalListener
+  {
+    String procName;
+    Process procActive;
+    Process procReady;
+
+    public TestSignalListener(String procName)
+    {
+      this.procName = procName;
+    }
+
+    public boolean acceptSignal(Signal signal)
+    {
+      return signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER;
+    }
+
+    public void catchSignal(Signal signal)
+    {
+      ProcessManager pm = ProcessManager.locateProcessManager();
+      
+      Set<Process> procs = pm.getProcesses(procName, ProcessStatus.Active);
+      if (procs.size() > 0)
+        procActive = procs.iterator().next();
+      
+      procs = pm.getProcesses(procName, ProcessStatus.Ready);
+      if (procs.size() > 0)
+        procReady = procs.iterator().next();
+    }
+  }
 }

Modified: projects/jbpm-spec/trunk/modules/cts/src/test/java/org/jboss/bpm/cts/task/ReceiveTaskTest.java
===================================================================
--- projects/jbpm-spec/trunk/modules/cts/src/test/java/org/jboss/bpm/cts/task/ReceiveTaskTest.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/cts/src/test/java/org/jboss/bpm/cts/task/ReceiveTaskTest.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -86,19 +86,25 @@
   public void testSuspendedMessage() throws Exception
   {
     Process proc = getProcess();
-    ProcessManager procManager = ProcessManager.locateProcessManager();
-    procManager.registerProcess(proc);
+    ProcessManager pm = ProcessManager.locateProcessManager();
+    pm.registerProcess(proc);
+    try
+    {
+      // Send the message before the process is started
+      MessageManager msgManager = MessageManager.locateMessageManager();
+      msgManager.sendMessage(proc.getID(), "TaskA", getMessage());
 
-    // Send the message before the process is started
-    MessageManager msgManager = MessageManager.locateMessageManager();
-    msgManager.sendMessage(proc.getID(), "TaskA", getMessage());
+      proc.startProcess();
+      proc.waitForEnd();
 
-    proc.startProcess();
-    proc.waitForEnd();
-
-    Message endMsg = getMessages().get(0);
-    assertNotNull("End message expected", endMsg);
-    assertEquals("bar", endMsg.getPropertyValue("foo"));
+      Message endMsg = getMessages().get(0);
+      assertNotNull("End message expected", endMsg);
+      assertEquals("bar", endMsg.getPropertyValue("foo"));
+    }
+    finally
+    {
+      pm.unregisterProcess(proc.getID());
+    }
   }
 
   public void testSuspendedToken() throws Exception

Added: projects/jbpm-spec/trunk/modules/cts/src/test/resources/cts/processmanager/processmanager-api10.xml
===================================================================
--- projects/jbpm-spec/trunk/modules/cts/src/test/resources/cts/processmanager/processmanager-api10.xml	                        (rev 0)
+++ projects/jbpm-spec/trunk/modules/cts/src/test/resources/cts/processmanager/processmanager-api10.xml	2008-09-17 08:08:02 UTC (rev 2268)
@@ -0,0 +1,6 @@
+<ns2:process name="ProcessManager" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
+  <start name="Start">
+    <seqflow to="End" />
+  </start>
+  <end name="End"/>
+</ns2:process>
\ No newline at end of file


Property changes on: projects/jbpm-spec/trunk/modules/cts/src/test/resources/cts/processmanager/processmanager-api10.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -76,14 +76,14 @@
   {
     // Prepare the process for start
     startProcessPrepare(proc);
-    
+
     // Get the None Start Event if there is one and start the initial flow
     StartEvent start = getNoneStartEvent(proc);
     if (start != null)
     {
       if (proc.getProcessStatus() == ProcessStatus.Active)
         throw new IllegalStateException("Cannot start an already active process");
-      
+
       startProcessInternal(start, att);
     }
   }
@@ -93,36 +93,37 @@
   {
     // Prepare the process for start
     startProcessPrepare(start.getProcess());
-    
+
     startProcessInternal(start, att);
   }
 
   private synchronized void startProcessInternal(StartEvent start, Attachments att)
   {
-    @SuppressWarnings("serial")
     class InitialFlow extends SequenceFlowImpl
     {
+      private static final long serialVersionUID = 1L;
+
       InitialFlow(StartEvent start)
       {
         super(start.getName());
         setTargetRef(start);
       }
     }
-    
+
     Process proc = start.getProcess();
     RuntimeProcess rtProc = getRuntimeProcess(proc, false);
-    boolean startProcessThread = (rtProc == null); 
+    boolean startProcessThread = (rtProc == null);
 
     // Create initial Token
     TokenImpl initialToken = new TokenImpl(att);
     InitialFlow initialFlow = new InitialFlow(start);
     initialToken.setFlow(initialFlow);
-    
-    // Register the initial Token 
+
+    // Register the initial Token
     rtProc = getRuntimeProcess(proc, true);
     TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
     tokenExecutor.create(initialToken, initialFlow);
-    
+
     // Start a new process thread
     if (startProcessThread)
     {
@@ -143,10 +144,10 @@
         }
       }
     }
-    
+
     // Do the start time assignments
     startTimeAssignments(proc, initialToken);
-    
+
     // Start the initial token
     tokenExecutor.start(initialToken);
   }
@@ -157,15 +158,15 @@
     ProcessImpl procImpl = (ProcessImpl)proc;
     if (isProcessTerminated(proc))
       procImpl.resetProcess();
-    
+
     ProcessStatus procStatus = proc.getProcessStatus();
     if (procStatus != ProcessStatus.Ready && procStatus != ProcessStatus.Active)
       throw new IllegalStateException("Cannot start process in state: " + procStatus);
 
     // Register the process if needed
-    ProcessManager pm = ProcessManager.locateProcessManager();
+    ProcessManagerImpl pm = (ProcessManagerImpl)ProcessManager.locateProcessManager();
     if (pm.getProcessByID(proc.getID()) == null)
-      pm.registerProcess(proc);
+      pm.registerProcessInternal(procImpl);
   }
 
   public ProcessStatus waitForEnd(Process proc)
@@ -186,7 +187,7 @@
   private ProcessStatus waitForEndInternal(Process proc, long timeout)
   {
     ProcessImpl procImpl = (ProcessImpl)proc;
-    
+
     ProcessStatus status = proc.getProcessStatus();
     if (status == ProcessStatus.None)
       throw new IllegalStateException("Cannot wait for process in state: " + status);
@@ -212,18 +213,19 @@
               break;
             }
           }
-          
+
           // Start waiting to get notified
           long waitTimeout = forever ? 0 : until - now;
           proc.wait(waitTimeout);
         }
         now = System.currentTimeMillis();
       }
-      
+
       // Throw timeout exception if it took too long
       if (isProcessTerminated(proc) == false)
       {
-        RuntimeException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + proc.getID());
+        RuntimeException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: "
+            + proc.getID());
         procImpl.setRuntimeException(rte);
         log.error(rte);
         throw rte;
@@ -238,22 +240,21 @@
       // Unregister the process if not done already
       // this could happen when the Process never received a start signal
       // and then we get here because of a ProcessTimeoutException
-      ProcessManager procManager = ProcessManager.locateProcessManager();
+      ProcessManagerImpl procManager = (ProcessManagerImpl)ProcessManager.locateProcessManager();
       if (procManager.getProcessByID(proc.getID()) != null)
-        procManager.unregisterProcess(proc);
+        procManager.unregisterProcessInternal(procImpl);
     }
 
-    
     status = proc.getProcessStatus();
     return status;
   }
-  
+
   private boolean isProcessTerminated(Process proc)
   {
     ProcessStatus status = proc.getProcessStatus();
     return status == ProcessStatus.Cancelled || status == ProcessStatus.Completed || status == ProcessStatus.Aborted;
   }
-  
+
   private StartEvent getNoneStartEvent(Process proc)
   {
     StartEvent start = null;
@@ -321,7 +322,7 @@
       Process proc = rtProc.getProcess();
 
       SignalManager signalManager = SignalManager.locateSignalManager();
-      
+
       ObjectName procID = proc.getID();
       String procName = proc.getName();
       try
@@ -334,7 +335,7 @@
           // Notify that the process is now Active
           proc.notifyAll();
         }
-        
+
         synchronized (rtProc)
         {
           // Wait until there are no more runnable tokens
@@ -349,9 +350,9 @@
               log.error(ex);
             }
           }
-          
+
           log.debug("End execution thread [proc=" + procName + ",status=" + proc.getProcessStatus() + "]");
-          
+
           if (proc.getProcessStatus() == ProcessStatus.Active)
             procImpl.setProcessStatus(ProcessStatus.Completed);
         }
@@ -362,10 +363,10 @@
 
         synchronized (proc)
         {
-          ProcessManager procManager = ProcessManager.locateProcessManager();
-          procManager.unregisterProcess(proc);
+          ProcessManagerImpl pm = (ProcessManagerImpl)ProcessManager.locateProcessManager();
+          pm.unregisterProcessInternal(procImpl);
           runtimeProcesses.remove(procID);
-          
+
           // Notify that the process has now ended
           proc.notifyAll();
         }

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -25,11 +25,13 @@
 
 import java.util.Map;
 
+import org.jboss.bpm.InvalidProcessException;
 import org.jboss.bpm.client.DialectHandler;
 import org.jboss.bpm.client.DialectRegistry;
 import org.jboss.bpm.client.ProcessManager;
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.ri.model.impl.ProcessImpl;
+
 /**
  * The process manager is the entry point to create, find and otherwise manage processes.
  * 
@@ -49,18 +51,33 @@
   }
 
   @Override
-  public void registerProcess(Process proc)
+  public Process registerProcess(Process proc)
   {
     super.registerProcess(proc);
-    ProcessImpl procImpl = (ProcessImpl)proc;
-    procImpl.register(proc);
+
+    // An explicitly registered Process is replaced by a copy of itself
+    ProcessImpl procCopy;
+    try
+    {
+      ProcessImpl procImpl = (ProcessImpl)proc;
+      procCopy = procImpl.makeDeepCopy();
+    }
+    catch (Exception ex)
+    {
+      throw new InvalidProcessException("Cannot copy process", ex);
+    }
+    return procCopy;
   }
 
-  @Override
-  public void unregisterProcess(Process proc)
+  void registerProcessInternal(ProcessImpl procImpl)
   {
-    ProcessImpl procImpl = (ProcessImpl)proc;
-    procImpl.unregister(proc);
-    super.unregisterProcess(proc);
+    super.registerProcess(procImpl);
+    procImpl.register(procImpl);
   }
+
+  void unregisterProcessInternal(ProcessImpl procImpl)
+  {
+    procImpl.unregister(procImpl);
+    super.unregisterProcess(procImpl.getID());
+  }
 }

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -34,11 +34,13 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class AbstractElementImpl implements AbstractElement
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   // The cached ID
-  protected ObjectName id;
+  protected transient ObjectName id;
   
   /**
    * Get the ID of this element

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ActivityImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ActivityImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ActivityImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -53,12 +53,13 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class ActivityImpl extends FlowObjectImpl implements Activity, MutablePropertySupport,
     SingleInFlowSetterSupport, SingleOutFlowSetterSupport
 {
   // provide logging
   private static final Log log = LogFactory.getLog(ActivityImpl.class);
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
   
   private List<InputSet> inputSets = new ArrayList<InputSet>();
   private List<OutputSet> outputSets = new ArrayList<OutputSet>();

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AssignmentImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AssignmentImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AssignmentImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -33,9 +33,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class AssignmentImpl extends SupportingElementImpl implements Assignment
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private AssignTime assignTime;
   private Expression from;
   private Property to;

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ComplexGatewayImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ComplexGatewayImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ComplexGatewayImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -37,9 +37,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class ComplexGatewayImpl extends GatewayImpl implements ComplexGateway
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   public ComplexGatewayImpl(String name)
   {
     super(name);

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EndEventImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EndEventImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EndEventImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -56,11 +56,12 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class EndEventImpl extends EventImpl implements EndEvent, SingleInFlowSetterSupport
 {
   // provide logging
   private static final Log log = LogFactory.getLog(EndEventImpl.class);
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
 
   private List<EventDetail> resultSet = new ArrayList<EventDetail>();
   private SequenceFlow inFlow;
@@ -136,6 +137,8 @@
     {
       handler = new SignalHandler()
       {
+        private static final long serialVersionUID = 1L;
+        
         SignalManager signalManager = SignalManager.locateSignalManager();
         public void throwEnterSignal(Token token)
         {

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EntityImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EntityImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EntityImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -34,9 +34,10 @@
  * @author thomas.diesler at jboss.com
  * @since 21-Jul-2008
  */
- at SuppressWarnings("serial")
 public class EntityImpl extends ParticipantImpl implements Entity
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
 
   public EntityImpl(ObjectName name)
   {

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventDetailImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventDetailImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventDetailImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -32,9 +32,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class EventDetailImpl extends SupportingElementImpl implements EventDetail
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   protected void initialize(Event event)
   {
     // nothing to do

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -32,9 +32,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class EventImpl extends FlowObjectImpl implements Event
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   public EventImpl(String name)
   {
     super(name);

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExclusiveGatewayDataBasedImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExclusiveGatewayDataBasedImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExclusiveGatewayDataBasedImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -31,9 +31,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class ExclusiveGatewayDataBasedImpl extends ExclusiveGatewayImpl implements ExclusiveGatewayDataBased
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   public ExclusiveGatewayDataBasedImpl(String name)
   {
     super(name);

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExclusiveGatewayImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExclusiveGatewayImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExclusiveGatewayImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -45,11 +45,12 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class ExclusiveGatewayImpl extends GatewayImpl implements ExclusiveGateway
 {
   // provide logging
   private static final Log log = LogFactory.getLog(ExclusiveGatewayImpl.class);
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
 
   // Sync management
   private Set<ConnectingObject> outstandingFlows;

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExpressionImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExpressionImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ExpressionImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -32,9 +32,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class ExpressionImpl extends SupportingElementImpl implements Expression
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private Object body;
   private ExpressionLanguage lang;
 

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -33,9 +33,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class FlowImpl extends SupportingElementImpl implements ConnectingObject
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private String name;
   private String targetName;
   private FlowObject source;

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowObjectImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowObjectImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowObjectImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -52,9 +52,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class FlowObjectImpl extends GraphicalElementImpl implements FlowObject, HandlerSetterSupport
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private String name;
   private Process proc;
   private FlowHandler flowHandler;

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GateImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GateImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GateImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -39,9 +39,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class GateImpl extends SupportingElementImpl implements Gate
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private SequenceFlow seqFlow;
 
   public GateImpl(String targetName)

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GatewayImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GatewayImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GatewayImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -52,9 +52,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class GatewayImpl extends FlowObjectImpl implements Gateway, MultipleInFlowSetterSupport
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   // The list of incomming flows
   protected List<ConnectingObject> inFlows = new ArrayList<ConnectingObject>();
   // The list of outgoing gates
@@ -165,6 +167,8 @@
     {
       handler = new SignalHandler()
       {
+        private static final long serialVersionUID = 1L;
+        
         SignalManager signalManager = SignalManager.locateSignalManager();
         public void throwEnterSignal(Token token)
         {

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GraphicalElementImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GraphicalElementImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GraphicalElementImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -31,7 +31,8 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class GraphicalElementImpl extends AbstractElementImpl implements GraphicalElement
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
 }
\ No newline at end of file

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/HandlerImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/HandlerImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/HandlerImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -32,9 +32,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class HandlerImpl implements Handler
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private String className;
   private String beanRef;
   

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InclusiveGatewayImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InclusiveGatewayImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InclusiveGatewayImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -51,9 +51,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class InclusiveGatewayImpl extends GatewayImpl implements InclusiveGateway
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   // provide logging
   private static final Log log = LogFactory.getLog(InclusiveGatewayImpl.class);
 

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InputSetImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InputSetImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InputSetImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -40,9 +40,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class InputSetImpl extends SupportingElementImpl implements InputSet, MutablePropertySupport
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private List<ArtifactInput> artInputs = new ArrayList<ArtifactInput>();
   private Map<String,Property> props = new LinkedHashMap<String,Property>();
 

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/IntermediateEventImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/IntermediateEventImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/IntermediateEventImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -50,9 +50,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class IntermediateEventImpl extends EventImpl implements IntermediateEvent, SingleInFlowSetterSupport, SingleOutFlowSetterSupport
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private SequenceFlow inFlow;
   private SequenceFlow outFlow;
   private List<EventDetail> triggers = new ArrayList<EventDetail>();
@@ -117,6 +119,8 @@
     {
       handler = new SignalHandler()
       {
+        private static final long serialVersionUID = 1L;
+        
         SignalManager signalManager = SignalManager.locateSignalManager();
         public void throwEnterSignal(Token token)
         {

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageEventDetailImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageEventDetailImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageEventDetailImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -33,9 +33,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class MessageEventDetailImpl extends EventDetailImpl implements MessageEventDetail
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private Message messageRef;
   
   public EventDetailType getEventDetailType()

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageFlowImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageFlowImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageFlowImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -34,9 +34,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class MessageFlowImpl extends FlowImpl implements MessageFlow
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   public MessageFlowImpl(String targetName)
   {
     super(targetName);

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/MessageImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -40,9 +40,11 @@
  * @author thomas.diesler at jboss.com
  * @since 21-Jul-2008
  */
- at SuppressWarnings("serial")
 public class MessageImpl extends SupportingElementImpl implements Message, MutablePropertySupport
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private String name;
   private Participant fromRef;
   private Participant toRef;

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/NoneTaskImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/NoneTaskImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/NoneTaskImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -31,9 +31,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class NoneTaskImpl extends TaskImpl 
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   public NoneTaskImpl(String name)
   {
     super(name);

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/OutputSetImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/OutputSetImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/OutputSetImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -40,9 +40,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class OutputSetImpl extends SupportingElementImpl implements OutputSet, MutablePropertySupport
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private List<ArtifactOutput> artOutputs = new ArrayList<ArtifactOutput>();
   private Map<String,Property> props = new LinkedHashMap<String,Property>();
 

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ParallelGatewayImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ParallelGatewayImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ParallelGatewayImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -44,11 +44,12 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class ParallelGatewayImpl extends GatewayImpl implements ParallelGateway
 {
   // provide logging
   private static final Log log = LogFactory.getLog(ParallelGatewayImpl.class);
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
 
   // Sync management
   private Set<ConnectingObject> outstandingFlows;

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ParticipantImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ParticipantImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ParticipantImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -34,9 +34,11 @@
  * @author thomas.diesler at jboss.com
  * @since 21-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class ParticipantImpl extends SupportingElementImpl implements Participant
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   protected ObjectName name;
   
   public ParticipantImpl(ObjectName name)

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -23,6 +23,10 @@
 
 //$Id$
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -56,11 +60,12 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class ProcessImpl extends SupportingElementImpl implements Process, MutablePropertySupport
 {
   // provide logging
   private static final Log log = LogFactory.getLog(ProcessImpl.class);
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
 
   // The required process name
   private String name;
@@ -306,6 +311,17 @@
     }
     return null;
   }
+  
+  public ProcessImpl makeDeepCopy() throws Exception
+  {
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    ObjectOutputStream oos = new ObjectOutputStream(baos);
+    oos.writeObject(this);
+    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+    ObjectInputStream ois = new ObjectInputStream(bais);
+    ProcessImpl procCopy = (ProcessImpl)ois.readObject();
+    return procCopy;
+  }
 
   @Override
   public void create(Process proc)

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/PropertyImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/PropertyImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/PropertyImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -32,9 +32,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class PropertyImpl extends SupportingElementImpl implements Property
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private String name;
   private Expression expression;
   private boolean isCorrelation;

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ReceiveTaskImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ReceiveTaskImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ReceiveTaskImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -46,11 +46,12 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class ReceiveTaskImpl extends TaskImpl implements ReceiveTask, MessageListener
 {
   // provide logging
   private static final Log log = LogFactory.getLog(ReceiveTaskImpl.class);
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
 
   // A Web service is the default technology
   private Implementation implementation = Implementation.WebService;

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/RoleImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/RoleImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/RoleImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -35,9 +35,11 @@
  * @author thomas.diesler at jboss.com
  * @since 21-Jul-2008
  */
- at SuppressWarnings("serial")
 public class RoleImpl extends ParticipantImpl implements Role
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   public RoleImpl(ObjectName name)
   {
     super(name);

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SendTaskImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SendTaskImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SendTaskImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -37,9 +37,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class SendTaskImpl extends TaskImpl implements SendTask
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   // A Web service is the default technology
   private Implementation implementation = Implementation.WebService;
   private Message messageRef;

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SequenceFlowImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SequenceFlowImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SequenceFlowImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -34,9 +34,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class SequenceFlowImpl extends FlowImpl implements SequenceFlow
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private ConditionType conditionType = ConditionType.None;
   private Expression conditionExpression;
   

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SignalEventDetailImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SignalEventDetailImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SignalEventDetailImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -32,9 +32,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class SignalEventDetailImpl extends EventDetailImpl implements SignalEventDetail
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private Signal signalRef;
   
   public EventDetailType getEventDetailType()

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -57,15 +57,16 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class StartEventImpl extends EventImpl implements StartEvent, SingleOutFlowSetterSupport
 {
   // provide logging
   private static final Log log = LogFactory.getLog(StartEventImpl.class);
-
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   private SequenceFlow outFlow;
   private List<EventDetail> triggers = new ArrayList<EventDetail>();
-  private SignalListener startListener;
+  private transient SignalListener startListener;
 
   public StartEventImpl(String name)
   {
@@ -117,6 +118,8 @@
     {
       handler = new SignalHandler()
       {
+        private static final long serialVersionUID = 1L;
+        
         SignalManager signalManager = SignalManager.locateSignalManager();
 
         public void throwEnterSignal(Token token)

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SubProcessImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SubProcessImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SubProcessImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -40,9 +40,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public class SubProcessImpl extends ActivityImpl implements SubProcess, SingleInFlowSetterSupport, SingleOutFlowSetterSupport
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   public SubProcessImpl(String name)
   {
     super(name);
@@ -72,6 +74,8 @@
     {
       handler = new SignalHandler()
       {
+        private static final long serialVersionUID = 1L;
+        
         SignalManager signalManager = SignalManager.locateSignalManager();
         public void throwEnterSignal(Token token)
         {

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SupportingElementImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SupportingElementImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SupportingElementImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -36,9 +36,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class SupportingElementImpl extends AbstractElementImpl implements SupportingElement
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   @Override
   public ObjectName getID()
   {

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TaskImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TaskImpl.java	2008-09-16 15:41:56 UTC (rev 2267)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TaskImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
@@ -43,9 +43,11 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
- at SuppressWarnings("serial")
 public abstract class TaskImpl extends ActivityImpl implements Task
 {
+  // provide serial version UID
+  private static final long serialVersionUID = 1L;
+  
   public TaskImpl(String name)
   {
     super(name);
@@ -77,6 +79,8 @@
     {
       handler = new SignalHandler()
       {
+        private static final long serialVersionUID = 1L;
+        
         SignalManager signalManager = SignalManager.locateSignalManager();
 
         public void throwEnterSignal(Token token)




More information about the jbpm-commits mailing list