[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