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

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Jul 31 06:18:48 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-07-31 06:18:48 -0400 (Thu, 31 Jul 2008)
New Revision: 1787

Modified:
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/BPMNElement.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/Message.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.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/model/internal/BPMNElementImpl.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/FlowObjectImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.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/SendTaskImpl.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/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java
   jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
   jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
   jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/ParallelSplitTest.java
Log:
GWT stateful service

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -106,10 +106,9 @@
   /** 
    * Throw a signal to all registered listeners 
    */
-  public void throwSignal(Signal signal)
+  public void throwSignal(String procName, Signal signal)
   {
     log.debug("throwSignal: " + signal);
-    String procName = signal.getProcessName();
     Set<SignalListener> set = signalListeners.get(procName);
     if (set != null)
     {

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/BPMNElement.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/BPMNElement.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/BPMNElement.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -41,9 +41,4 @@
    * Get the ID of this element
    */
   ObjectName getID();
-
-  /**
-   * Get the associated Process
-   */
-  Process getProcess();
 }
\ No newline at end of file

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -32,4 +32,8 @@
  */
 public interface FlowObject extends GraphicalElement
 {
+  /**
+   * Get the associated Process
+   */
+  Process getProcess();
 }
\ No newline at end of file

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -61,6 +61,11 @@
   Participant getFromRef();
   
   /**
+   * Get the source of the source {@link FlowObject} for this message
+   */
+  FlowObject getFrom();
+  
+  /**
    * This defines the target of the Message.
    */
   Participant getToRef();

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -23,7 +23,6 @@
 
 //$Id$
 
-
 /**
  * A Signal thrown by the ProcessEngine
  * 
@@ -37,41 +36,34 @@
    */
   public enum Type
   {
-    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, 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
   }
 
   private Type type;
-  private BPMNElement srcElement;
   private String message;
+  private String fromRef;
 
   /** Create the signal for a given process */
-  public Signal(BPMNElement srcElement, Type type)
+  public Signal(String fromRef, Type type)
   {
-    this.srcElement = srcElement;
+    this.fromRef = fromRef;
     this.type = type;
-    validateSignal();
+    if (fromRef == null)
+      throw new IllegalArgumentException("Signal fromRef cannot be null");
+    if (type == null)
+      throw new IllegalArgumentException("SignalType cannot be null");
   }
 
   /** Create the signal for a given process */
-  public Signal(FlowObject flowObject, Type type, String message)
+  public Signal(String fromRef, Type type, String message)
   {
-    this.srcElement = flowObject;
-    this.type = type;
+    this(fromRef, type);
     this.message = message;
-    validateSignal();
   }
 
-  /** Get the proccess name */
-  public String getProcessName()
+  public String getFromRef()
   {
-    return srcElement.getProcess().getName();
+    return fromRef;
   }
 
   public Type getType()
@@ -79,31 +71,14 @@
     return type;
   }
 
-  public String getFlowObject()
-  {
-    return srcElement.toString();
-  }
-
   public String getMessage()
   {
     return message;
   }
 
-  private void validateSignal()
-  {
-    if (srcElement == null)
-      throw new IllegalArgumentException("FlowObject cannot be null");
-    if (type == null)
-      throw new IllegalArgumentException("SignalType cannot be null");
-  }
-
   public String toString()
   {
-    StringBuilder string = new StringBuilder(type + "[" + getProcessName());
-    if (srcElement instanceof Process == false)
-    {
-      string.append(":" + srcElement);
-    }
+    StringBuilder string = new StringBuilder(type + "[" + fromRef);
     if (message != null)
     {
       string.append(":" + message);

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -71,9 +71,10 @@
   private void startProcessInternal(ProcessImpl proc, Attachments att)
   {
     RuntimeProcess rtProc = new RuntimeProcessImpl(proc);
+    String procName = proc.getName();
 
     SignalManager signalManager = getProcessEngine().getSignalManager();
-    signalManager.throwSignal(new Signal(proc, Signal.Type.ENTER_PROCESS));
+    signalManager.throwSignal(procName, new Signal(procName, Signal.Type.ENTER_PROCESS));
     MutableFlowScheduler flowScheduler = rtProc.getFlowScheduler();
     try
     {
@@ -96,12 +97,12 @@
         // Execute the FlowObject's ExecutionHandler
         try
         {
-          signalManager.throwSignal(sigHandler.getEnterSignal());
+          signalManager.throwSignal(procName, sigHandler.getEnterSignal());
           executable.execute(token);
         }
         finally
         {
-          signalManager.throwSignal(sigHandler.getExitSignal());
+          signalManager.throwSignal(procName, sigHandler.getExitSignal());
         }
 
         // Remove the head tuple
@@ -120,7 +121,7 @@
     }
     finally
     {
-      signalManager.throwSignal(new Signal(proc, Signal.Type.EXIT_PROCESS));
+      signalManager.throwSignal(procName, new Signal(procName, Signal.Type.EXIT_PROCESS));
     }
   }
 

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/BPMNElementImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/BPMNElementImpl.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/BPMNElementImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -44,18 +44,7 @@
 public class BPMNElementImpl implements BPMNElement
 {
   private ObjectName id;
-  private Process process;
 
-  public Process getProcess()
-  {
-    return process;
-  }
-
-  public void setProcess(Process process)
-  {
-    this.process = process;
-  }
-
   public ObjectName getID()
   {
     return id;
@@ -66,7 +55,6 @@
    */
   protected void initialize(Process proc)
   {
-    setProcess(proc);
     assignElementID();
   }
 

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -27,7 +27,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.jboss.bpm.model.EndEvent;
 import org.jboss.bpm.model.Flow;
-import org.jboss.bpm.model.FlowObject;
 import org.jboss.bpm.model.Result;
 import org.jboss.bpm.model.Signal;
 import org.jboss.bpm.runtime.FlowHandler;
@@ -103,17 +102,16 @@
     SignalHandler handler = super.getSignalHandler();
     if (handler == null)
     {
-      final FlowObject end = this;
       handler = new SignalHandler()
       {
         public Signal getEnterSignal()
         {
-          return new Signal(end, Signal.Type.ENTER_END_EVENT);
+          return new Signal(getName(), Signal.Type.ENTER_END_EVENT);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(end, Signal.Type.EXIT_END_EVENT);
+          return new Signal(getName(), Signal.Type.EXIT_END_EVENT);
         }
       };
     }

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -50,10 +50,16 @@
 @SuppressWarnings("serial")
 public abstract class FlowObjectImpl extends GraphicalElementImpl implements FlowObject, HandlerSetterSupport, Executable
 {
+  private Process proc;
   private FlowHandler flowHandler;
   private SignalHandler signalHandler;
   private ExecutionHandler executionHandler;
   
+  public Process getProcess()
+  {
+    return proc;
+  }
+
   public ExecutionHandler getExecutionHandler()
   {
     return executionHandler;
@@ -93,6 +99,7 @@
   protected void initialize(Process proc)
   {
     super.initialize(proc);
+    this.proc = proc;
 
     if (this instanceof NameSupport)
     {

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -32,7 +32,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jboss.bpm.model.Flow;
-import org.jboss.bpm.model.FlowObject;
 import org.jboss.bpm.model.Gate;
 import org.jboss.bpm.model.Gateway;
 import org.jboss.bpm.model.GraphicalElement;
@@ -198,17 +197,16 @@
     SignalHandler handler = super.getSignalHandler();
     if (handler == null)
     {
-      final FlowObject gateway = this;
       handler = new SignalHandler()
       {
         public Signal getEnterSignal()
         {
-          return new Signal(gateway, Signal.Type.ENTER_GATEWAY);
+          return new Signal(getName(), Signal.Type.ENTER_GATEWAY);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(gateway, Signal.Type.EXIT_GATEWAY);
+          return new Signal(getName(), Signal.Type.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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -25,7 +25,6 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.jboss.bpm.model.Event;
 import org.jboss.bpm.model.Flow;
 import org.jboss.bpm.model.InputSet;
 import org.jboss.bpm.model.IntermediateEvent;
@@ -122,17 +121,16 @@
     SignalHandler handler = super.getSignalHandler();
     if (handler == null)
     {
-      final Event event = this;
       handler = new SignalHandler()
       {
         public Signal getEnterSignal()
         {
-          return new Signal(event, Signal.Type.ENTER_EVENT);
+          return new Signal(getName(), Signal.Type.ENTER_EVENT);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(event, Signal.Type.EXIT_EVENT);
+          return new Signal(getName(), Signal.Type.EXIT_EVENT);
         }
       };
     }

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -27,6 +27,7 @@
 
 import javax.management.ObjectName;
 
+import org.jboss.bpm.model.FlowObject;
 import org.jboss.bpm.model.Message;
 import org.jboss.bpm.model.Participant;
 import org.jboss.bpm.model.Property;
@@ -47,6 +48,7 @@
 {
   private String name;
   private ObjectName sourceID;
+  private FlowObject sourceFO;
   private ObjectName targetID;
   private List<Property> props = new ArrayList<Property>();
 
@@ -56,9 +58,13 @@
     this.targetID = targetID;
   }
 
-  /**
-   * Name is an attribute that is text description of the Message.
-   */
+  public MessageImpl(FlowObject sourceFO, String name, ObjectName targetID)
+  {
+    this.sourceFO = sourceFO;
+    this.name = name;
+    this.targetID = targetID;
+  }
+
   public String getName()
   {
     return name;
@@ -89,25 +95,26 @@
     return names;
   }
 
-  /**
-   * Add a property
-   */
   public void addProperty(Property prop)
   {
     props.add(prop);
   }
 
-  /**
-   * This defines the source of the Message.
-   */
   public Participant getFromRef()
   {
     return sourceID != null ? new EntityImpl(sourceID.getCanonicalName()) : null;
   }
 
-  /**
-   * This defines the target of the Message.
-   */
+  public FlowObject getFrom()
+  {
+    return sourceFO;
+  }
+  
+  public void setFrom(FlowObject sourceFO)
+  {
+    this.sourceFO = sourceFO;
+  }
+
   public Participant getToRef()
   {
     return targetID != null ? new EntityImpl(targetID.getCanonicalName()) : null;

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -68,7 +68,6 @@
   public ProcessImpl(String name)
   {
     this.name = name;
-    setProcess(this);
   }
 
   public String getName()

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -118,7 +118,8 @@
 
         msgBuilder.addProperty(key, value);
       }
-      Message msg = msgBuilder.getMessage();
+      MessageImpl msg = (MessageImpl)msgBuilder.getMessage();
+      msg.setFrom(this);
       
       MessageManager mm = MessageManager.locateMessageManager();
       mm.sendMessage(targetID, msg);

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -41,8 +41,9 @@
 import org.jboss.bpm.runtime.Token;
 
 /**
- * A Start Event indicates where a particular Process will start. In terms of Sequence Flow, the Start Event starts the Flow of the Process, and thus, will not have any
- * incoming Sequence Flow. A Start Event can have a Trigger that indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
+ * A Start Event indicates where a particular Process will start. In terms of Sequence Flow, the Start Event starts the
+ * Flow of the Process, and thus, will not have any incoming Sequence Flow. A Start Event can have a Trigger that
+ * indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
  * 
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
@@ -59,7 +60,7 @@
   {
     throw new NotImplementedException();
   }
-  
+
   public Flow getOutFlow()
   {
     return outFlow;
@@ -107,23 +108,22 @@
     SignalHandler handler = super.getSignalHandler();
     if (handler == null)
     {
-      final StartEvent start = this;
       handler = new SignalHandler()
       {
         public Signal getEnterSignal()
         {
-          return new Signal(start, Signal.Type.ENTER_START_EVENT);
+          return new Signal("Start", Signal.Type.ENTER_START_EVENT);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(start, Signal.Type.EXIT_START_EVENT);
+          return new Signal("Start", Signal.Type.EXIT_START_EVENT);
         }
       };
     }
     return handler;
   }
-  
+
   public String toString()
   {
     return "StartEvent[]";

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SubProcessImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -23,7 +23,6 @@
 
 //$Id$
 
-import org.jboss.bpm.model.FlowObject;
 import org.jboss.bpm.model.Signal;
 import org.jboss.bpm.model.SubProcess;
 import org.jboss.bpm.runtime.SignalHandler;
@@ -52,17 +51,16 @@
     SignalHandler handler = super.getSignalHandler();
     if (handler == null)
     {
-      final FlowObject subproc = this;
       handler = new SignalHandler()
       {
         public Signal getEnterSignal()
         {
-          return new Signal(subproc, Signal.Type.ENTER_SUB_PROCESS);
+          return new Signal(getName(), Signal.Type.ENTER_SUB_PROCESS);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(subproc, Signal.Type.EXIT_SUB_PROCESS);
+          return new Signal(getName(), Signal.Type.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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -30,8 +30,8 @@
 /**
  * A Task is an Atomic Activity that is included within a Process.
  * 
- * A Task is used when the work in the Process is not broken down to a finer level of Process Model detail. Generally, an end-user and/or an application are used to
- * perform the Task when it is executed.
+ * A Task is used when the work in the Process is not broken down to a finer level of Process Model detail. Generally,
+ * an end-user and/or an application are used to perform the Task when it is executed.
  * 
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
@@ -50,23 +50,22 @@
   }
 
   public abstract TaskType getTaskType();
-  
+
   public SignalHandler getSignalHandler()
   {
     SignalHandler handler = super.getSignalHandler();
     if (handler == null)
     {
-      final Task task = this;
       handler = new SignalHandler()
       {
         public Signal getEnterSignal()
         {
-          return new Signal(task, Signal.Type.ENTER_TASK);
+          return new Signal(getName(), Signal.Type.ENTER_TASK);
         }
 
         public Signal getExitSignal()
         {
-          return new Signal(task, Signal.Type.EXIT_TASK);
+          return new Signal(getName(), Signal.Type.EXIT_TASK);
         }
       };
     }

Modified: jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -210,16 +210,20 @@
         gwtMsg.to = textTo.getText();
         gwtMsg.date = textDate.getText();
         gwtMsg.seats = textSeats.getText();
-        sampleRemoteService.sendMessage(gwtMsg, new MessageCallback());
+        sendGwtMessage(gwtMsg);
       }
       if (sender == buttonSubmitOrder)
       {
         OrderMessage gwtMsg = new OrderMessage();
         gwtMsg.creditCard = textCreditCard.getText();
         gwtMsg.expire = textExpire.getText();
+        
+        // Note, that this shows how process logic leaks into 
+        // the client code, which is not correct.
+        // Instead, the process should send a message when request data is required.
         if (gwtMsg.acceptOffer = checkAccept.isChecked())
         {
-          sampleRemoteService.sendMessage(gwtMsg, new MessageCallback());
+          sendGwtMessage(gwtMsg);
         }
         else
         {
@@ -236,6 +240,11 @@
     }
   }
 
+  private void sendGwtMessage(GwtMessage gwtMsg)
+  {
+    sampleRemoteService.sendMessage(gwtMsg, new MessageCallback());
+  }
+  
   class MessageCallback implements AsyncCallback
   {
     public void onSuccess(Object result)

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -25,6 +25,7 @@
 
 import javax.management.ObjectName;
 
+import org.jboss.bpm.client.MessageListener;
 import org.jboss.bpm.model.GatewayBuilder;
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.model.ProcessBuilder;
@@ -42,11 +43,11 @@
  */
 public class AirticketProcessBuilder
 {
-  private ObjectName messageListenerID;
+  private ObjectName listenerID;
   
-  public AirticketProcessBuilder(ObjectName listenerID)
+  public AirticketProcessBuilder(MessageListener msgListener)
   {
-    this.messageListenerID = listenerID;
+    this.listenerID = msgListener.getMessageListenerID();
   }
 
   public Process buildProcess()
@@ -99,7 +100,7 @@
 
     // Build the SendInvalidTask
     taskBuilder = procBuilder.addTask("SendInvalidTask", TaskType.Send);
-    taskBuilder.addMessageRef("InvalidDataMsg", messageListenerID).
+    taskBuilder.addMessageRef("InvalidDataMsg", listenerID).
     addMessageProperty("Name", null, true).
     addMessageProperty("From", null, true).
     addMessageProperty("To", null, true).
@@ -114,7 +115,7 @@
     
     // Build the SendOfferTask
     taskBuilder = procBuilder.addTask("SendOfferTask", TaskType.Send);
-    taskBuilder.addMessageRef("OfferMsg", messageListenerID).
+    taskBuilder.addMessageRef("OfferMsg", listenerID).
     addMessageProperty("Name", null, true).
     addMessageProperty("From", null, true).
     addMessageProperty("To", null, true).
@@ -125,7 +126,7 @@
 
     // Build the SendNotAvailableTask
     taskBuilder = procBuilder.addTask("SendNotAvailableTask", TaskType.Send);
-    taskBuilder.addMessageRef("NotAvailableMsg", messageListenerID).
+    taskBuilder.addMessageRef("NotAvailableMsg", listenerID).
     addMessageProperty("Name", null, true).
     addMessageProperty("From", null, true).
     addMessageProperty("To", null, true).
@@ -175,7 +176,7 @@
     
     // Build the SendConfirmTask
     taskBuilder = procBuilder.addTask("SendConfirmTask", TaskType.Send);
-    taskBuilder.addMessageRef("ConfirmMsg", messageListenerID).
+    taskBuilder.addMessageRef("ConfirmMsg", listenerID).
     addMessageProperty("Name", null, true).
     addMessageProperty("From", null, true).
     addMessageProperty("To", null, true).

Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -4,6 +4,7 @@
 import java.util.List;
 
 import javax.management.ObjectName;
+import javax.servlet.http.HttpSession;
 
 import org.jboss.bpm.NotImplementedException;
 import org.jboss.bpm.client.MessageListener;
@@ -33,11 +34,70 @@
 public class AirticketServiceImpl extends RemoteServiceServlet implements AirticketService
 {
   private ObjectName listenerID = ObjectNameFactory.create("mydomain:type=MessageListener");
-  private List<Message> messageQueue = new ArrayList<Message>();
-  private ObjectName procID;
-  
+
+  public void sendMessage(GwtMessage gwtMsg)
+  {
+    MessageManager mm = MessageManager.locateMessageManager();
+    SignalManager sm = SignalManager.locateSignalManager();
+
+    System.out.println(gwtMsg);
+
+    ObjectName procID;
+    HttpSession httpSession = getThreadLocalRequest().getSession(false);
+    if (httpSession == null)
+    {
+      System.out.println("Create new Session");
+      httpSession = getThreadLocalRequest().getSession();
+
+      List<Message> messageQueue = new ArrayList<Message>();
+      AirticketMessageListener msgListener = new AirticketMessageListener(messageQueue);
+      mm.addMessageListener(msgListener);
+      
+      // Create/Start a new process
+      AirticketProcessBuilder procBuilder = new AirticketProcessBuilder(msgListener);
+      Process proc = procBuilder.buildProcess();
+      procID = proc.startProcess();
+      
+      sm.addSignalListener(proc.getName(), new AirticketSignalListener());
+      
+      httpSession.setAttribute("procID", procID);
+      httpSession.setAttribute("messageQueue", messageQueue);
+    }
+    else
+    {
+      procID = (ObjectName)httpSession.getAttribute("procID");
+    }
+
+    if (gwtMsg instanceof RequestMessage)
+    {
+      // Start a new process
+      if (httpSession.isNew() == false)
+      {
+        ProcessManager pm = ProcessManager.locateProcessManager();
+        procID = pm.startProcess("Airticket", null);
+        httpSession.setAttribute("procID", procID);
+      }
+
+      Message msg = getRequestMessage((RequestMessage)gwtMsg);
+      mm.sendMessage(procID, "ReceiveReqTask", msg);
+    }
+    else if (gwtMsg instanceof OrderMessage)
+    {
+      Message msg = getOrderMessage((OrderMessage)gwtMsg);
+      mm.sendMessage(procID, "ReceiveOrderTask", msg);
+    }
+    else
+    {
+      throw new NotImplementedException(gwtMsg.getClass().getName());
+    }
+  }
+
+  @SuppressWarnings("unchecked")
   public GwtMessage getMessage()
   {
+    HttpSession httpSession = getThreadLocalRequest().getSession(false);
+    ArrayList<Message> messageQueue = (ArrayList<Message>)httpSession.getAttribute("messageQueue");
+    
     GwtMessage returnMsg = null;
     if (messageQueue.size() > 0)
     {
@@ -93,45 +153,6 @@
     return returnMsg;
   }
 
-  public void sendMessage(GwtMessage gwtMsg)
-  {
-    MessageManager mm = MessageManager.locateMessageManager();
-    SignalManager sm = SignalManager.locateSignalManager();
-    
-    System.out.println(gwtMsg);
-    
-    if (gwtMsg instanceof RequestMessage)
-    {
-      // Create/Start the process
-      if (procID == null)
-      {
-        AirticketProcessBuilder procBuilder = new AirticketProcessBuilder(listenerID);
-        Process proc = procBuilder.buildProcess();
-        procID = proc.startProcess();
-        
-        mm.addMessageListener(new AirticketMessageListener());
-        sm.addSignalListener(proc.getName(), new AirticketSignalListener());
-      }
-      else
-      {
-        ProcessManager pm = ProcessManager.locateProcessManager();
-        procID = pm.startProcess("Airticket", null);
-      }
-      
-      Message msg = getRequestMessage((RequestMessage)gwtMsg);
-      mm.sendMessage(procID, "ReceiveReqTask", msg);
-    }
-    else if (gwtMsg instanceof OrderMessage)
-    {
-      Message msg = getOrderMessage((OrderMessage)gwtMsg);
-      mm.sendMessage(procID, "ReceiveOrderTask", msg);
-    }
-    else
-    {
-      throw new NotImplementedException(gwtMsg.getClass().getName());
-    }
-  }
-  
   private Message getRequestMessage(RequestMessage gwtMsg)
   {
     MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
@@ -145,7 +166,7 @@
     getMessage();
     return msg;
   }
-  
+
   private Message getOrderMessage(OrderMessage gwtMsg)
   {
     MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
@@ -157,13 +178,20 @@
     getMessage();
     return msg;
   }
-  
+
   class AirticketMessageListener implements MessageListener
   {
+    private List<Message> messageQueue;
+    
+    public AirticketMessageListener(List<Message> messageQueue)
+    {
+      this.messageQueue = messageQueue;
+    }
+
     public void catchMessage(Message message)
     {
       messageQueue.add(message);
-      System.out.println(message);
+      System.out.println("catchMessage: " + message);
     }
 
     public ObjectName getMessageListenerID()
@@ -171,7 +199,7 @@
       return listenerID;
     }
   }
-  
+
   class AirticketSignalListener implements SignalListener
   {
     public void catchSignal(Signal signal)

Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java	2008-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -57,7 +57,7 @@
     {
       public void catchSignal(Signal signal)
       {
-        //System.out.println(signal);
+        // System.out.println(signal);
       }
     };
     SignalManager engine = SignalManager.locateSignalManager();
@@ -79,15 +79,14 @@
 
   public void testValidRequest() throws Exception
   {
-    AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+    MessageManager mm = MessageManager.locateMessageManager();
+    AirticketMessageListener msgListener = new AirticketMessageListener(getMessageListenerID());
+    mm.addMessageListener(msgListener);
+
+    AirticketProcessBuilder builder = new AirticketProcessBuilder(msgListener);
     Process proc = builder.buildProcess();
     proc.startProcess();
 
-    ObjectName listenerID = getMessageListenerID();
-    MessageManager mm = MessageManager.locateMessageManager();
-    AirticketMessageListener msgListener = new AirticketMessageListener(proc, listenerID);
-    mm.addMessageListener(msgListener);
-    
     mm.sendMessage(proc.getID(), "ReceiveReqTask", getValidRequestMessage());
     proc.waitForEnd();
 
@@ -99,18 +98,17 @@
 
   public void testInvalidRequest() throws Exception
   {
-    AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+    MessageManager mm = MessageManager.locateMessageManager();
+    AirticketMessageListener msgListener = new AirticketMessageListener(getMessageListenerID());
+    mm.addMessageListener(msgListener);
+
+    AirticketProcessBuilder builder = new AirticketProcessBuilder(msgListener);
     Process proc = builder.buildProcess();
     proc.startProcess();
 
-    ObjectName listenerID = getMessageListenerID();
-    MessageManager mm = MessageManager.locateMessageManager();
-    AirticketMessageListener msgListener = new AirticketMessageListener(proc, listenerID);
-    mm.addMessageListener(msgListener);
-    
     mm.sendMessage(proc.getID(), "ReceiveReqTask", getInvalidRequestMessage());
     proc.waitForEnd();
-    
+
     Message confirmMessage = msgListener.getConfirmMessage();
     assertNotNull("Expected confirm message", confirmMessage);
     String price = confirmMessage.getProperty("Price").getValue().getExpressionBody();
@@ -121,13 +119,8 @@
   {
     MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
     MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
-    Message msg = msgBuilder.newMessage("ReqDataMsg", null).
-    addProperty("Name", "Kermit").
-    addProperty("From", "MUC").
-    addProperty("To", "NYC").
-    addProperty("Date", "25-Jul-2008").
-    addProperty("Seats", "2").
-    getMessage();
+    Message msg = msgBuilder.newMessage("ReqDataMsg", null).addProperty("Name", "Kermit").addProperty("From", "MUC")
+        .addProperty("To", "NYC").addProperty("Date", "25-Jul-2008").addProperty("Seats", "2").getMessage();
     return msg;
   }
 
@@ -135,13 +128,10 @@
   {
     MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
     MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
-    Message msg = msgBuilder.newMessage("ReqDataMsg", getMessageListenerID()).
-    addProperty("Name", "Kermit").
-    addProperty("From", "MUC").
-    addProperty("To", "NYC").
-    addProperty("Date", "25-Jul-2008").
-    addProperty("Seats", "0"). // Invalid number of seats
-    getMessage();
+    Message msg = msgBuilder.newMessage("ReqDataMsg", getMessageListenerID()).addProperty("Name", "Kermit")
+        .addProperty("From", "MUC").addProperty("To", "NYC").addProperty("Date", "25-Jul-2008").addProperty("Seats",
+            "0"). // Invalid number of seats
+        getMessage();
     return msg;
   }
 
@@ -149,24 +139,19 @@
   {
     MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
     MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
-    Message msg = msgBuilder.newMessage("AcceptOfferMsg", null).
-    addProperty("CreditCard", "1234-1234-1234-1234").
-    addProperty("Expire", "25-Jul-2012").
-    addProperty("isOfferAccepted", "true").
-    getMessage();
+    Message msg = msgBuilder.newMessage("AcceptOfferMsg", null).addProperty("CreditCard", "1234-1234-1234-1234")
+        .addProperty("Expire", "25-Jul-2012").addProperty("isOfferAccepted", "true").getMessage();
     return msg;
   }
 
   class AirticketMessageListener implements MessageListener
   {
-    private Process proc;
-    private ObjectName targetID;
+    private ObjectName listenerID;
     private Message confirmMessage;
 
-    private AirticketMessageListener(Process proc, ObjectName listenerID)
+    private AirticketMessageListener(ObjectName listenerID)
     {
-      this.proc = proc;
-      this.targetID = listenerID;
+      this.listenerID = listenerID;
     }
 
     public Message getConfirmMessage()
@@ -174,20 +159,21 @@
       return confirmMessage;
     }
 
-    public void catchMessage(Message message)
+    public void catchMessage(Message msg)
     {
+      ObjectName procID = msg.getFrom().getProcess().getID();
       MessageManager mm = MessageManager.locateMessageManager();
-      if (message.getName().equals("InvalidDataMsg"))
-        mm.sendMessage(proc.getID(), "ReceiveReqTask", getValidRequestMessage());
-      else if (message.getName().equals("OfferMsg"))
-        mm.sendMessage(proc.getID(), "ReceiveOrderTask", getAcceptOfferMessage());
-      else if (message.getName().equals("ConfirmMsg"))
-        confirmMessage = message;
+      if (msg.getName().equals("InvalidDataMsg"))
+        mm.sendMessage(procID, "ReceiveReqTask", getValidRequestMessage());
+      else if (msg.getName().equals("OfferMsg"))
+        mm.sendMessage(procID, "ReceiveOrderTask", getAcceptOfferMessage());
+      else if (msg.getName().equals("ConfirmMsg"))
+        confirmMessage = msg;
     }
 
     public ObjectName getMessageListenerID()
     {
-      return targetID;
+      return listenerID;
     }
   }
 }
\ No newline at end of file

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-07-31 07:40:59 UTC (rev 1786)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/ParallelSplitTest.java	2008-07-31 10:18:48 UTC (rev 1787)
@@ -87,11 +87,11 @@
     // Validate received signals
     List<Signal> signals = getSignals();
     assertEquals(Signal.Type.ENTER_END_EVENT, signals.get(5).getType());
-    assertEquals("EndEvent[endA]", signals.get(5).getFlowObject());
+    assertEquals("endA", signals.get(5).getFromRef());
     assertEquals(Signal.Type.EXIT_END_EVENT, signals.get(6).getType());
     
     assertEquals(Signal.Type.ENTER_END_EVENT, signals.get(7).getType());
-    assertEquals("EndEvent[endB]", signals.get(7).getFlowObject());
+    assertEquals("endB", signals.get(7).getFromRef());
     assertEquals(Signal.Type.EXIT_END_EVENT, signals.get(8).getType());
   }
 }




More information about the jbpm-commits mailing list