JBoss JBPM SVN: r1911 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/runtime and 8 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-17 12:18:36 -0400 (Sun, 17 Aug 2008)
New Revision: 1911
Added:
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/cts/task/ReceiveTaskTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/SendTaskTest.java
Removed:
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.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/TokenExecutorImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketAPIDescriptorTest.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketSTPDescriptorTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/multichoice/MultiChoiceTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
Log:
Add token activate
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -38,9 +38,7 @@
import org.jboss.bpm.model.Task;
/**
- * The ProcessEngine sends mesages through the MessageManager.
- * <p/>
- * A {@link Message} has an ID and is targeted to a
+ * The ProcessEngine sends mesages through the MessageManager. <p/> A {@link Message} has an ID and is targeted to a
* specific {@link Participant}. A component can register a {@link MessageListener} with the MessageManager.
*
* @author thomas.diesler(a)jboss.com
@@ -62,7 +60,7 @@
ProcessEngine engine = ProcessEngine.locateProcessEngine();
return engine.getMessageManager();
}
-
+
/**
* Add a MessageListener
*/
@@ -70,13 +68,14 @@
{
if (hasMessageListener(listener.getID()))
throw new IllegalStateException("Listener already registered: " + listener.getID());
-
- log.debug("addMessageListener: " + listener);
+
+ log.debug("addMessageListener: " + listener.getID());
listeners.put(listener.getID(), listener);
}
/**
* Get a MessageListener for a given ID
+ *
* @return null if there is none
*/
public MessageListener getMessageListener(ObjectName listenerID)
@@ -108,6 +107,9 @@
{
ProcessManager pm = ProcessManager.locateProcessManager();
Process proc = pm.getProcessByID(procID);
+ if (proc == null)
+ throw new IllegalStateException("Cannot obtain registered process: " + procID);
+
FlowObject target = proc.getFlowObject(targetName);
if (target == null)
throw new IllegalArgumentException("Cannot find message target: " + targetName);
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-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -33,10 +33,8 @@
import org.jboss.bpm.model.Signal;
/**
- * The ProcessEngine sends signals through the SignalManager
- * <p/>
- * A {@link Signal} is like an undirected flare shot up into the air.
- * A component can register a {@link SignalListener} with the SignalManager.
+ * The ProcessEngine sends signals through the SignalManager <p/> A {@link Signal} is like an undirected flare shot up
+ * into the air. A component can register a {@link SignalListener} with the SignalManager.
*
* @author thomas.diesler(a)jboss.com
* @since 18-Jun-2008
@@ -45,10 +43,10 @@
{
// provide logging
private static final Log log = LogFactory.getLog(SignalManager.class);
-
+
// The map of registered signal listeners
private Map<String, Set<SignalListener>> listeners = new HashMap<String, Set<SignalListener>>();
-
+
/**
* Locate the SignalManager
*/
@@ -57,11 +55,11 @@
ProcessEngine engine = ProcessEngine.locateProcessEngine();
return engine.getSignalManager();
}
-
+
/**
* Add a SignalListener for a given process
*/
- public void addSignalListener(String procName, SignalListener listener)
+ public synchronized void addSignalListener(String procName, SignalListener listener)
{
log.debug("addSignalListener: " + procName + "=" + listener);
Set<SignalListener> set = listeners.get(procName);
@@ -76,7 +74,7 @@
/**
* Remove an SignalListener for a given process
*/
- public void removeSignalListener(String procName, SignalListener listener)
+ public synchronized void removeSignalListener(String procName, SignalListener listener)
{
log.debug("removeSignalListener: " + procName + "=" + listener);
Set<SignalListener> set = listeners.get(procName);
@@ -86,40 +84,52 @@
}
}
- /**
- * Remove all SignalListener for a given process
+ /**
+ * Remove all SignalListener for a given process
*/
- public void removeSignalListeners(String procName)
+ public synchronized void removeSignalListeners(String procName)
{
log.debug("removeSignalListeners: " + procName);
listeners.remove(procName);
}
- /**
- * Throw a signal to all registered listeners
+ /**
+ * Throw a signal to all registered listeners
*/
public void throwSignal(String procName, Signal signal)
{
log.debug("throwSignal: " + procName + "=" + signal);
-
+
// Throw Signal to listeners associated with the process
- Set<SignalListener> set = listeners.get(procName);
- if (set != null)
+ Set<SignalListener> procListeners = listeners.get(procName);
+ if (procListeners != null)
{
- for (SignalListener listener : set)
+ for (SignalListener listener : procListeners)
{
- listener.catchSignal(signal);
+ failsafeThrow(listener, signal);
}
}
-
+
// Throw Signal to listeners not associated with any process
- set = listeners.get(null);
- if (set != null)
+ Set<SignalListener> allProcListeners = listeners.get(null);
+ if (allProcListeners != null)
{
- for (SignalListener listener : set)
+ for (SignalListener listener : allProcListeners)
{
- listener.catchSignal(signal);
+ failsafeThrow(listener, signal);
}
}
}
+
+ private void failsafeThrow(SignalListener listener, Signal signal)
+ {
+ try
+ {
+ listener.catchSignal(signal);
+ }
+ catch (RuntimeException rte)
+ {
+ log.error("Signal processing error", rte);
+ }
+ }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/FlowHandler.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -25,7 +25,6 @@
import org.jboss.bpm.client.ProcessEngine;
import org.jboss.bpm.model.FlowObject;
-import org.jboss.bpm.model.SequenceFlow;
/**
* The {@link ProcessEngine} invokes the FlowHandler on an {@link HandlerSupport}
@@ -37,11 +36,11 @@
public interface FlowHandler extends Handler
{
/**
- * Execute the the FlowHandler.
+ * Execute the FlowHandler.
* <p/>
- * The FlowHandler will add the active outgoing {@link SequenceFlow}s to
- * the the {@link TokenExecutor} for the {@link ProcessEngine} to execute.
+ * The FlowHandler typically invoves one of the {@link TokenExecutor}
+ * methods to move the {@link Token} to the next {@link FlowObject}.
*/
- void execute(TokenExecutor scheduler, Token token);
+ void execute(TokenExecutor tokenExecutor, Token token);
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -39,12 +39,12 @@
/**
* Get the set of active tokens
*/
- Set<Token> getActiveTokens();
+ Set<Token> getRunnableTokens();
/**
* True if there are active tokens
*/
- boolean hasActiveTokens();
+ boolean hasRunnableTokens();
/**
* Create a {@link Token} with an initial flow
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -78,14 +78,14 @@
{
super.setUp();
log.debug("setUp: " + getClass().getName() + "." + getName());
-
+
deployer = new EmbeddedBeansDeployer();
-
+
// Setup the SignalListener
SignalManager signalManager = SignalManager.locateSignalManager();
signalManager.addSignalListener(null, getSignalListener());
signals.clear();
-
+
// Setup the MessageListener
MessageManager messageManager = MessageManager.locateMessageManager();
messageManager.addMessageListener(getMessageListener());
@@ -95,16 +95,16 @@
protected void tearDown() throws Exception
{
log.debug("tearDown: " + getClass().getName() + "." + getName());
-
+
// Tear down the SignalListener
SignalManager signalManager = SignalManager.locateSignalManager();
signalManager.removeSignalListeners(null);
-
+
// Tear down the MessageListener
MessageManager messageManager = MessageManager.locateMessageManager();
messageManager.removeMessageListener(getMessageListenerID());
-
- // Check that there are no registered processes left
+
+ // Check that there are no registered processes left
ProcessManager procManager = ProcessManager.locateProcessManager();
Set<Process> procs = procManager.getProcesses();
if (procs.size() > 0)
@@ -113,7 +113,7 @@
System.out.println(logMsg);
log.warn(logMsg);
}
-
+
super.tearDown();
}
@@ -161,6 +161,11 @@
{
signals.add(signal);
}
+
+ public String toString()
+ {
+ return "SignalListener[" + getShortName() + "]";
+ }
};
}
return signalListener;
@@ -168,18 +173,26 @@
public List<Signal> getSignals()
{
- return Collections.unmodifiableList(signals);
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ synchronized (signalManager)
+ {
+ return Collections.unmodifiableList(signals);
+ }
}
public List<Signal> getSignals(Signal.SignalType type)
{
- List<Signal> retSignals = new ArrayList<Signal>();
- for (Signal sig : signals)
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ synchronized (signalManager)
{
- if (sig.getSignalType() == type)
- retSignals.add(sig);
+ List<Signal> retSignals = new ArrayList<Signal>();
+ for (Signal sig : signals)
+ {
+ if (sig.getSignalType() == type)
+ retSignals.add(sig);
+ }
+ return Collections.unmodifiableList(retSignals);
}
- return Collections.unmodifiableList(retSignals);
}
public MessageListener getMessageListener()
@@ -192,11 +205,14 @@
{
return getMessageListenerID();
}
-
+
public void catchMessage(Message message)
{
- log.debug("catchMessage: " + message);
- messages.add(message);
+ synchronized (messages)
+ {
+ log.debug("catchMessage: " + message);
+ messages.add(message);
+ }
}
};
}
@@ -205,21 +221,23 @@
public ObjectName getMessageListenerID()
{
- String className = getClass().getName();
- className = className.substring(className.lastIndexOf(".") + 1);
- return ObjectNameFactory.create(BPMNElement.ID_DOMAIN, "msgListener", className);
+ return ObjectNameFactory.create(BPMNElement.ID_DOMAIN, "msgListener", getShortName());
}
-
+
public List<Message> getMessages()
{
- return Collections.unmodifiableList(messages);
+ synchronized (messages)
+ {
+ return Collections.unmodifiableList(messages);
+ }
}
-
+
/**
* Marshall the given process
+ *
* @param out if null, the proces is marshalled to a file
*/
- public String _marshallProcess(Process proc, Writer out)
+ public String marshallProcess(Process proc, Writer out)
{
try
{
@@ -229,11 +247,11 @@
out = new FileWriter(file);
System.out.println("Marshall process to: " + file.getCanonicalPath());
}
-
+
String procXML = marshallProcess(proc);
out.write(procXML);
out.close();
-
+
return procXML;
}
catch (IOException ex)
@@ -249,9 +267,18 @@
{
ProcessManager pm = ProcessManager.locateProcessManager();
DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
-
+
StringWriter strwr = new StringWriter();
dhapi.marshallProcess(proc, strwr);
return strwr.toString();
}
+
+ /**
+ * Get the test short name, which is the class name without the package
+ */
+ protected String getShortName()
+ {
+ String shortName = getClass().getName();
+ return shortName.substring(shortName.lastIndexOf(".") + 1);
+ }
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -161,7 +161,7 @@
String procName = proc.getName();
ProcessStatus procStatus = proc.getProcessStatus();
- boolean hasActiveTokens = tokenExecutor.hasActiveTokens();
+ boolean hasActiveTokens = tokenExecutor.hasRunnableTokens();
try
{
synchronized (proc)
@@ -177,9 +177,9 @@
log.error("Executor thread interrupted");
}
procStatus = proc.getProcessStatus();
- hasActiveTokens = tokenExecutor.hasActiveTokens();
+ hasActiveTokens = tokenExecutor.hasRunnableTokens();
}
- log.debug("End execution thread [status=" + procStatus + ",tokens=" + tokenExecutor.getActiveTokens() + "]");
+ log.debug("End execution thread [status=" + procStatus + ",tokens=" + tokenExecutor.getRunnableTokens() + "]");
}
}
finally
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -30,7 +30,6 @@
import org.jboss.bpm.model.Process.ProcessStatus;
import org.jboss.bpm.model.internal.FlowObjectImpl;
import org.jboss.bpm.model.internal.ProcessImpl;
-import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.HandlerSupport;
import org.jboss.bpm.runtime.RuntimeProcess;
import org.jboss.bpm.runtime.SignalHandler;
@@ -69,8 +68,6 @@
{
TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
-
- token.setTokenStatus(TokenStatus.Started);
try
{
ConnectingObject flow = token.getFlow();
@@ -86,10 +83,9 @@
// Get the target and its handlers
FlowObjectImpl targetFlowObject = (FlowObjectImpl)flow.getTargetRef();
SignalHandler sigHandler = getSignalHandler(targetFlowObject);
- FlowHandler flowHandler = getFlowHandler(targetFlowObject);
- // Synchronize execution of the target and the flow handler
- synchronized (rtProc)
+ // Synchronize execution on the target FlowObject
+ synchronized (procImpl)
{
try
{
@@ -97,13 +93,13 @@
sigHandler.throwEnterSignal();
// Create a Token that includes properties from the current Activity
- DelegatingToken delegatingToken = new DelegatingToken(token);
+ DelegatingToken delToken = new DelegatingToken(token);
// Execute the target FlowObject
- targetFlowObject.execute(delegatingToken);
+ targetFlowObject.execute(delToken);
// Transfer the token to the FlowHandler
- flowHandler.execute(tokenExecutor, delegatingToken);
+ targetFlowObject.executeFlowHandler(tokenExecutor, delToken);
}
catch (RuntimeException rte)
{
@@ -119,11 +115,6 @@
tokStatus = token.getTokenStatus();
procStatus = procImpl.getProcessStatus();
-
- // Make sure the next flow is different from the previous one
- ConnectingObject nextFlow = token.getFlow();
- if (tokStatus == TokenStatus.Started && nextFlow == flow)
- throw new IllegalStateException("Flow handler did not move the token: " + targetFlowObject);
}
}
catch (RuntimeException rte)
@@ -134,11 +125,12 @@
}
finally
{
-
- token.setTokenStatus(TokenStatus.Destroyed);
- // Notify the ExecutionManager when a token terminates
+ if (token.getTokenStatus() != TokenStatus.Suspended)
+ token.setTokenStatus(TokenStatus.Destroyed);
+
synchronized (procImpl)
{
+ // Notify the ExecutionManager when a token terminates
procImpl.notifyAll();
}
}
@@ -154,16 +146,6 @@
return handler;
}
- private FlowHandler getFlowHandler(FlowObject target)
- {
- HandlerSupport handlerSupport = getHandlerSupport(target);
- FlowHandler handler = handlerSupport.getFlowHandler();
- if (handler == null)
- throw new IllegalStateException("Cannot obtain flow handler from: " + target);
-
- return handler;
- }
-
private HandlerSupport getHandlerSupport(FlowObject fo)
{
if (fo instanceof HandlerSupport == false)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -38,7 +38,6 @@
import org.jboss.bpm.model.Property;
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.MutablePropertySupport;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
@@ -265,7 +264,8 @@
{
Property outProp = outputSet.getProperty(prop.getName());
if (outProp == null)
- throw new IllegalStateException("Cannot find outputSet property '" + prop.getName() + "' in Activity: " + getName());
+ throw new IllegalStateException("Cannot find outputSet property '" + prop.getName() + "' in Activity: "
+ + getName());
String name = outProp.getName();
String value = outProp.getValue();
@@ -287,20 +287,10 @@
// }
}
- public FlowHandler getFlowHandler()
+ @Override
+ protected void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
{
- FlowHandler handler = super.getFlowHandler();
- if (handler == null)
- {
- handler = new FlowHandler()
- {
- public void execute(TokenExecutor tokenExecutor, Token token)
- {
- tokenExecutor.move(token, outFlow);
- }
- };
- }
- return handler;
+ tokenExecutor.move(token, getOutFlow());
}
@Override
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -26,6 +26,8 @@
import org.jboss.bpm.NotImplementedException;
import org.jboss.bpm.model.ComplexGateway;
import org.jboss.bpm.model.Expression;
+import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
/**
* A Complex Gateway handles situations that are not easily handled through the other types of Gateways. Complex
@@ -58,6 +60,12 @@
throw new NotImplementedException("JBPM-1637", "ComplexGateway outgoing condition");
}
+ @Override
+ protected void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
+ {
+ throw new NotImplementedException("JBPM-1637", "ComplexGateway outgoing condition");
+ }
+
public String toString()
{
return "ComplexGateway[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -37,7 +37,6 @@
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.EventDetail.EventDetailType;
-import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
@@ -104,21 +103,11 @@
}
}
- public FlowHandler getFlowHandler()
+ @Override
+ protected void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
{
- FlowHandler handler = super.getFlowHandler();
- if (handler == null)
- {
- handler = new FlowHandler()
- {
- public void execute(TokenExecutor tokenExecutor, Token token)
- {
- log.debug("End reached in: " + getName());
- tokenExecutor.destroy(token);
- }
- };
- }
- return handler;
+ log.debug("End reached in: " + getName());
+ tokenExecutor.destroy(token);
}
public SignalHandler getSignalHandler()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -31,11 +31,10 @@
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.ExclusiveGateway;
import org.jboss.bpm.model.Expression;
+import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Gate;
-import org.jboss.bpm.model.GraphicalElement;
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
-import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
@@ -85,41 +84,30 @@
}
@Override
- public FlowHandler getFlowHandler()
+ protected void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
{
- FlowHandler handler = super.getFlowHandler();
- if (handler == null)
+ FlowObject sourceRef = token.getFlow().getSourceRef();
+
+ // Schedule the first token that arrives
+ if (token == receivedTokens.get(0))
{
- handler = new FlowHandler()
- {
- public void execute(TokenExecutor tokenExecutor, Token token)
- {
- GraphicalElement sourceRef = token.getFlow().getSourceRef();
-
- // Schedule the first token that arrives
- if (token == receivedTokens.get(0))
- {
- log.debug("Propagate token comming from: " + sourceRef);
- Gate selectedGate = getSelectedGate(token);
- SequenceFlow outFlow = selectedGate.getOutgoingSequenceFlow();
- tokenExecutor.move(token, outFlow);
- }
- // Ignore all other tokens
- else
- {
- log.debug("Ignore token comming from: " + sourceRef);
- tokenExecutor.destroy(token);
- }
+ log.debug("Propagate token comming from: " + sourceRef);
+ Gate selectedGate = getSelectedGate(token);
+ SequenceFlow outFlow = selectedGate.getOutgoingSequenceFlow();
+ tokenExecutor.move(token, outFlow);
+ }
+ // Ignore all other tokens
+ else
+ {
+ log.debug("Ignore token comming from: " + sourceRef);
+ tokenExecutor.destroy(token);
+ }
- // Reset the gateway
- if (outstandingFlows.size() == 0)
- {
- reset();
- }
- }
- };
+ // Reset the gateway
+ if (outstandingFlows.size() == 0)
+ {
+ reset();
}
- return handler;
}
@Override
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -44,6 +44,7 @@
import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
//$Id$
@@ -128,27 +129,25 @@
*/
public void execute(Token token)
{
- // Evaluate the Start time assignments
+ // Start Time Assignments
for (Assignment ass : getAssignments())
{
if (ass.getAssignTime() == AssignTime.Start)
processAssignment(ass, token);
}
- // Call the user provided execution handler
+ // Call the ExecutionHandler
ExecutionHandler exHandler = getExecutionHandler();
if (exHandler != null)
{
exHandler.execute(token);
}
-
- // Fall back to the default execution
else
{
defaultExecution(token);
}
- // Evaluate the End time assignments
+ // End Time Assignments
for (Assignment ass : getAssignments())
{
if (ass.getAssignTime() == AssignTime.End)
@@ -166,11 +165,39 @@
exContext.addAttachment(propName, result);
}
+ /**
+ * Execute the FlowHandler. Keep final, it should not be necessary to override this.
+ */
+ public final void executeFlowHandler(TokenExecutor tokenExecutor, Token token)
+ {
+ // Call the ExecutionHandler
+ FlowHandler flowHandler = getFlowHandler();
+ if (flowHandler != null)
+ {
+ flowHandler.execute(tokenExecutor, token);
+ }
+ else
+ {
+ defaultFlowHandler(tokenExecutor, token);
+ }
+ }
+
+ /**
+ * Overwrite to provide an implementation
+ */
protected void defaultExecution(Token token)
{
// noting to do
}
+ /**
+ * Overwrite to provide an implementation
+ */
+ protected abstract void defaultFlowHandler(TokenExecutor tokenExecutor, Token token);
+
+ /**
+ * Reset the FlowObject's state
+ */
public void reset()
{
// noting to do
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -38,7 +38,6 @@
import org.jboss.bpm.model.Expression.ExpressionLanguage;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.Attachments.Key;
@@ -69,47 +68,36 @@
}
@Override
- public FlowHandler getFlowHandler()
+ protected void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
{
- FlowHandler handler = super.getFlowHandler();
- if (handler == null)
+ GraphicalElement sourceRef = token.getFlow().getSourceRef();
+ log.debug("Propagate token comming from: " + sourceRef);
+
+ // Get the applicable gates
+ List<Gate> applicableGates = getApplicableGates(token);
+ log.debug("applicableGates: " + applicableGates);
+
+ // Destroy the incomming token if there are
+ // more than one applicable gates
+ if (applicableGates.size() > 1)
+ tokenExecutor.destroy(token);
+
+ for (Gate aux : applicableGates)
{
- handler = new FlowHandler()
+ SequenceFlow outFlow = aux.getOutgoingSequenceFlow();
+ if (applicableGates.size() == 1)
{
- public void execute(TokenExecutor tokenExecutor, Token token)
- {
- GraphicalElement sourceRef = token.getFlow().getSourceRef();
- log.debug("Propagate token comming from: " + sourceRef);
-
- // Get the applicable gates
- List<Gate> applicableGates = getApplicableGates(token);
- log.debug("applicableGates: " + applicableGates);
-
- // Destroy the incomming token if there are
- // more than one applicable gates
- if (applicableGates.size() > 1)
- tokenExecutor.destroy(token);
-
- for (Gate aux : applicableGates)
- {
- SequenceFlow outFlow = aux.getOutgoingSequenceFlow();
- if (applicableGates.size() == 1)
- {
- tokenExecutor.move(token, outFlow);
- }
- else
- {
- Token outToken = token.copyToken();
- tokenExecutor.create(outToken, outFlow);
- tokenExecutor.start(outToken);
- }
- }
- }
- };
+ tokenExecutor.move(token, outFlow);
+ }
+ else
+ {
+ Token outToken = token.copyToken();
+ tokenExecutor.create(outToken, outFlow);
+ tokenExecutor.start(outToken);
+ }
}
- return handler;
}
-
+
// Get applicable gates which' condition evaluates to TRUE
// Fall back to the default gate if there is one
// Choke if there is no applicable gate
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -33,7 +33,6 @@
import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
@@ -88,20 +87,10 @@
triggers.add(eventDetail);
}
- public FlowHandler getFlowHandler()
+ @Override
+ protected void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
{
- FlowHandler handler = super.getFlowHandler();
- if (handler == null)
- {
- handler = new FlowHandler()
- {
- public void execute(TokenExecutor tokenExecutor, Token token)
- {
- tokenExecutor.move(token, getOutFlow());
- }
- };
- }
- return handler;
+ tokenExecutor.move(token, getOutFlow());
}
public SignalHandler getSignalHandler()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -30,10 +30,8 @@
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.Gate;
-import org.jboss.bpm.model.Gateway;
import org.jboss.bpm.model.ParallelGateway;
import org.jboss.bpm.model.SequenceFlow;
-import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.internal.TokenImpl;
@@ -81,67 +79,55 @@
mergeTokens.add(token);
}
- public FlowHandler getFlowHandler()
+ @Override
+ protected void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
{
- FlowHandler handler = super.getFlowHandler();
- if (handler == null)
+ // In any case, the incomming token is not propagated
+ tokenExecutor.suspend(token);
+
+ // If the gateway has a single incomming flow the outgoing token is the incomming token
+ Token outToken = (getInFlows().size() == 1 ? token : null);
+
+ // The outgoing token is the merge of all incomming tokens
+ if (outToken == null)
{
- final Gateway gateway = this;
-
- handler = new FlowHandler()
+ // If there are no more outstanding flows
+ if (outstandingFlows.size() == 0)
{
- public void execute(TokenExecutor tokenExecutor, Token token)
- {
- // In any case, the incomming token is not propagated
- tokenExecutor.suspend(token);
-
- // If the gateway has a single incomming flow the outgoing token is the incomming token
- Token outToken = (getInFlows().size() == 1 ? token : null);
-
- // The outgoing token is the merge of all incomming tokens
- if (outToken == null)
- {
- // If there are no more outstanding flows
- if (outstandingFlows.size() == 0)
- {
- // Merge the tokens together and submit the merged tokens
- outToken = getMergedTokens();
- }
+ // Merge the tokens together and submit the merged tokens
+ outToken = getMergedTokens();
+ }
- // There are outstanding flows
- else if (outstandingFlows.size() > 0)
- {
- log.debug("Waiting for " + outstandingFlows + " in gateway: " + gateway);
- }
- }
-
- // Schedule the outgoing token
- if (outToken != null)
- {
- // Start a copy of the outgoing token for every gate
- for(Gate gate : getGates())
- {
- SequenceFlow outFlow = gate.getOutgoingSequenceFlow();
- Token copyToken = outToken.copyToken();
- tokenExecutor.create(copyToken, outFlow);
- tokenExecutor.start(copyToken);
- }
-
- // Destroy the received tokens
- for (Token auxToken : receivedTokens)
- {
- tokenExecutor.destroy(auxToken);
- }
-
- // Reset the gateway
- reset();
- }
- }
- };
+ // There are outstanding flows
+ else if (outstandingFlows.size() > 0)
+ {
+ log.debug("Waiting for " + outstandingFlows + " in gateway: " + this);
+ }
}
- return handler;
+
+ // Schedule the outgoing token
+ if (outToken != null)
+ {
+ // Start a copy of the outgoing token for every gate
+ for(Gate gate : getGates())
+ {
+ SequenceFlow outFlow = gate.getOutgoingSequenceFlow();
+ Token copyToken = outToken.copyToken();
+ tokenExecutor.create(copyToken, outFlow);
+ tokenExecutor.start(copyToken);
+ }
+
+ // Destroy the received tokens
+ for (Token auxToken : receivedTokens)
+ {
+ tokenExecutor.destroy(auxToken);
+ }
+
+ // Reset the gateway
+ reset();
+ }
}
-
+
@Override
public void reset()
{
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -73,28 +73,28 @@
{
for(Message msg : addProc.getMessages())
{
- proc.addMessage(msg);
+ getProcessInternal().addMessage(msg);
}
for(FlowObject fo : addProc.getFlowObjects())
{
- proc.addFlowObject(fo);
+ getProcessInternal().addFlowObject(fo);
}
return this;
}
public Process getProcess()
{
- if (proc == null)
+ if (getProcessInternal() == null)
throw new IllegalStateException("No process has been added");
- proc.initialize();
- return proc;
+ getProcessInternal().initialize();
+ return getProcessInternal();
}
public Process getProcessForInclude()
{
- if (proc == null)
+ if (getProcessInternal() == null)
throw new IllegalStateException("No process has been added");
- return proc;
+ return getProcessInternal();
}
public ProcessBuilder addSequenceFlow(String targetName)
@@ -111,7 +111,7 @@
}
else if (flowObject instanceof Gateway)
{
- GatewayBuilder gwBuilder = new GatewayBuilderImpl(proc, flowObject);
+ GatewayBuilder gwBuilder = new GatewayBuilderImpl(getProcessInternal(), flowObject);
gwBuilder.addGate(targetName);
}
else
@@ -129,23 +129,23 @@
public EventBuilder addStartEvent(String name)
{
flowObject = addFlowObject(new StartEventImpl(name));
- return new EventBuilderImpl(proc, flowObject);
+ return new EventBuilderImpl(getProcessInternal(), flowObject);
}
public EventBuilder addEvent(String name)
{
- flowObject = (FlowObjectImpl)proc.getFlowObject(name);
+ flowObject = (FlowObjectImpl)getProcessInternal().getFlowObject(name);
if (flowObject == null)
flowObject = addFlowObject(new IntermediateEventImpl(name));
- return new EventBuilderImpl(proc, flowObject);
+ return new EventBuilderImpl(getProcessInternal(), flowObject);
}
public EventBuilder addEndEvent(String name)
{
- flowObject = (FlowObjectImpl)proc.getFlowObject(name);
+ flowObject = (FlowObjectImpl)getProcessInternal().getFlowObject(name);
if (flowObject == null)
flowObject = addFlowObject(new EndEventImpl(name));
- return new EventBuilderImpl(proc, flowObject);
+ return new EventBuilderImpl(getProcessInternal(), flowObject);
}
public TaskBuilder addTask(String name)
@@ -155,7 +155,7 @@
public TaskBuilder addTask(String name, TaskType type)
{
- flowObject = (FlowObjectImpl)proc.getFlowObject(name);
+ flowObject = (FlowObjectImpl)getProcessInternal().getFlowObject(name);
if (flowObject == null)
{
if (type == TaskType.None || type == null)
@@ -196,12 +196,12 @@
}
addFlowObject(flowObject);
}
- return new TaskBuilderImpl(proc, flowObject);
+ return new TaskBuilderImpl(getProcessInternal(), flowObject);
}
public GatewayBuilder addGateway(String name, GatewayType type)
{
- flowObject = (FlowObjectImpl)proc.getFlowObject(name);
+ flowObject = (FlowObjectImpl)getProcessInternal().getFlowObject(name);
if (flowObject == null)
{
if (GatewayType.Exclusive == type)
@@ -222,20 +222,20 @@
}
addFlowObject(flowObject);
}
- return new GatewayBuilderImpl(proc, flowObject);
+ return new GatewayBuilderImpl(getProcessInternal(), flowObject);
}
public MessageBuilder addMessage(String name)
{
MessageBuilder msgBuilder = new MessageBuilderImpl().newMessage(name);
- proc.addMessage(msgBuilder.getMessage());
+ getProcessInternal().addMessage(msgBuilder.getMessage());
return msgBuilder;
}
-
+
public ProcessBuilder addProperty(String name, String value)
{
Property prop = new PropertyImpl(name, new ExpressionImpl(value));
- proc.addProperty(prop);
+ getProcessInternal().addProperty(prop);
return this;
}
@@ -247,7 +247,7 @@
if (flowObject != null)
flowObject.addAssignment(assignment);
else
- proc.addAssignment(assignment);
+ getProcessInternal().addAssignment(assignment);
return this;
}
@@ -300,10 +300,16 @@
private FlowObjectImpl addFlowObject(FlowObjectImpl fo)
{
+ getProcessInternal().addFlowObject(fo);
+ return fo;
+ }
+
+ private ProcessImpl getProcessInternal()
+ {
if (proc == null)
- throw new IllegalStateException("No process has been added");
+ throw new IllegalStateException("No process available");
- proc.addFlowObject(fo);
- return fo;
+ return proc;
}
+
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -94,14 +94,14 @@
public List<Assignment> getAssignments()
{
- return Collections.unmodifiableList(assignments);
+ return Collections.unmodifiableList(assignments);
}
public void addAssignment(AssignmentImpl assignment)
{
this.assignments.add(assignment);
}
-
+
public List<InputSet> getInputSets()
{
throw new NotImplementedException("JBPM-1644", "Process InputSets");
@@ -286,8 +286,7 @@
// Throw timeout exception if it took too long
if (status != ProcessStatus.Cancelled && status != ProcessStatus.Completed && status != ProcessStatus.Aborted)
{
- ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: "
- + getID());
+ RuntimeException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + getID());
log.error(rte);
log.error("Interrupt executor thread");
@@ -302,9 +301,10 @@
}
finally
{
- // Destroy the process
+ // Unregister the process
ProcessManager procManager = ProcessManager.locateProcessManager();
- procManager.unregisterProcess(this);
+ if (procManager.getProcessByID(getID()) != null)
+ procManager.unregisterProcess(this);
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -28,7 +28,6 @@
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.ProcessTimeoutException;
import org.jboss.bpm.client.MessageListener;
import org.jboss.bpm.model.Message;
import org.jboss.bpm.model.Process;
@@ -37,6 +36,7 @@
import org.jboss.bpm.model.Message.Implementation;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
//$Id$
@@ -49,16 +49,16 @@
@SuppressWarnings("serial")
public class ReceiveTaskImpl extends TaskImpl implements ReceiveTask, MessageListener
{
- private static final int RECEIVE_TIMEOUT = 30000;
-
// provide logging
private static final Log log = LogFactory.getLog(ReceiveTaskImpl.class);
// A Web service is the default technology
private Implementation implementation = Implementation.WebService;
private Message messageRef;
- private List<Message> messages = new ArrayList<Message>();
+ private List<Message> receivedMessages = new ArrayList<Message>();
+ private List<Token> suspendedTokens = new ArrayList<Token>();
+
public ReceiveTaskImpl(String name)
{
super(name);
@@ -90,7 +90,7 @@
throw new NotImplementedException("JBPM-1648", "ReceiveTask Instantiate");
}
- public void catchMessage(Message message)
+ public synchronized void catchMessage(Message message)
{
String msgName = message.getName();
if (messageRef.getName().equals(msgName))
@@ -102,7 +102,19 @@
if (message.getProperty(name) == null)
throw new IllegalArgumentException("Received message does not contain expected property: " + name);
}
- messages.add(message);
+ receivedMessages.add(message);
+
+ if (suspendedTokens.size() == 0)
+ {
+ log.debug("Suspend message: " + message);
+ }
+ else
+ {
+ Token token = suspendedTokens.remove(0);
+ ExecutionContext exContext = token.getExecutionContext();
+ TokenExecutor tokenExecutor = exContext.removeAttachment(TokenExecutor.class);
+ tokenExecutor.activate(token.getTokenID());
+ }
}
else
{
@@ -111,41 +123,41 @@
}
@Override
- public void defaultExecution(Token token)
+ public synchronized void defaultExecution(Token token)
{
- // Wait for the message to arrive
- long now = System.currentTimeMillis();
- long until = now + RECEIVE_TIMEOUT;
- while (messages.size() == 0 && now < until)
+ if (receivedMessages.size() > 0)
{
- try
+ // Copy the expected properties from the
+ // received message to the execution context
+ Message msg = receivedMessages.get(0);
+ ExecutionContext exContext = token.getExecutionContext();
+ for (Property prop : messageRef.getProperties())
{
- Thread.sleep(500);
- now = System.currentTimeMillis();
+ String key = prop.getName();
+ String value = msg.getPropertyValue(key);
+ exContext.addAttachment(key, value);
}
- catch (InterruptedException ex)
- {
- log.error("ReceiveTask interrupted" + ex.toString());
- }
+
+ // Call default execute
+ super.defaultExecution(token);
}
+ }
- // Timeout if the message did not arrive
- if (messages.size() == 0)
- throw new ProcessTimeoutException("Message receive timeout in: " + this);
-
- // Copy the expected properties from the
- // received message to the execution context
- Message msg = messages.remove(0);
- ExecutionContext exContext = token.getExecutionContext();
- for (Property prop : messageRef.getProperties())
+ @Override
+ protected synchronized void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
+ {
+ if (receivedMessages.size() > 0)
{
- String key = prop.getName();
- String value = msg.getPropertyValue(key);
- exContext.addAttachment(key, value);
+ receivedMessages.remove(0);
+ tokenExecutor.move(token, getOutFlow());
}
-
- // Call default execute
- super.defaultExecution(token);
+ else
+ {
+ tokenExecutor.suspend(token);
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment(TokenExecutor.class, tokenExecutor);
+ suspendedTokens.add(token);
+ }
}
@Override
@@ -155,7 +167,7 @@
if (messageRef == null)
throw new InvalidProcessException("A Message for the MessageRef attribute MUST be entered");
-
+
ProcessImpl procImpl = (ProcessImpl)proc;
procImpl.initializeMessageRef(messageRef);
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -39,7 +39,6 @@
import org.jboss.bpm.model.SignalEventDetail;
import org.jboss.bpm.model.StartEvent;
import org.jboss.bpm.model.Process.ProcessStatus;
-import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.RuntimeProcess;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
@@ -88,20 +87,10 @@
this.outFlow = flow;
}
- public FlowHandler getFlowHandler()
+ @Override
+ protected void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
{
- FlowHandler handler = super.getFlowHandler();
- if (handler == null)
- {
- handler = new FlowHandler()
- {
- public void execute(TokenExecutor tokenExecutor, Token token)
- {
- tokenExecutor.move(token, outFlow);
- }
- };
- }
- return handler;
+ tokenExecutor.move(token, getOutFlow());
}
public SignalHandler getSignalHandler()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -31,7 +31,8 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import org.jboss.bpm.NotImplementedException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.client.internal.RunnableToken;
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.Process;
@@ -53,6 +54,9 @@
*/
public class TokenExecutorImpl implements TokenExecutor
{
+ // provide logging
+ private static final Log log = LogFactory.getLog(TokenExecutorImpl.class);
+
public interface StartCallback
{
void start(Token token);
@@ -60,7 +64,7 @@
private RuntimeProcess rtProc;
private ExecutorService executor = Executors.newCachedThreadPool();
- private Map<String, RunnableToken> activeTokens = new HashMap<String, RunnableToken>();
+ private Map<String, RunnableToken> runnableTokens = new HashMap<String, RunnableToken>();
private StartCallback startCallback;
public TokenExecutorImpl(RuntimeProcess rtProc, StartCallback startCallback)
@@ -69,18 +73,18 @@
this.startCallback = startCallback;
}
- public Set<Token> getActiveTokens()
+ public Set<Token> getRunnableTokens()
{
- Set<Token> tokens = new HashSet<Token>();
- for (RunnableToken rt : activeTokens.values())
- tokens.add(rt.getToken());
+ Set<Token> tokenSet = new HashSet<Token>();
+ for (RunnableToken rt : runnableTokens.values())
+ tokenSet.add(rt.getToken());
- return Collections.unmodifiableSet(tokens);
+ return Collections.unmodifiableSet(tokenSet);
}
- public boolean hasActiveTokens()
+ public boolean hasRunnableTokens()
{
- return activeTokens.size() > 0;
+ return runnableTokens.size() > 0;
}
public void create(Token token, SequenceFlow initialFlow)
@@ -88,7 +92,7 @@
MutableToken mutableToken = (MutableToken)token;
mutableToken.setFlow(initialFlow);
RunnableToken rtToken = new RunnableToken(rtProc, mutableToken);
- activeTokens.put(token.getTokenID(), rtToken);
+ runnableTokens.put(token.getTokenID(), rtToken);
}
public void start(Token token)
@@ -97,6 +101,7 @@
if (proc.getProcessStatus() != ProcessStatus.Active)
throw new IllegalStateException("Cannot start token to process in state: " + proc.getProcessStatus());
+ log.debug("Start Token: " + token);
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Started);
@@ -106,7 +111,7 @@
startCallback = null;
}
- RunnableToken rtToken = activeTokens.get(token.getTokenID());
+ RunnableToken rtToken = runnableTokens.get(token.getTokenID());
executor.submit(rtToken);
}
@@ -121,19 +126,22 @@
public void stop(Token token)
{
+ log.debug("Stop Token: " + token);
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Stoped);
}
public void destroy(Token token)
{
+ log.debug("Destroy Token: " + token);
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Destroyed);
- activeTokens.remove(token.getTokenID());
+ runnableTokens.remove(token.getTokenID());
}
public String suspend(Token token)
{
+ log.debug("Suspend Token: " + token);
MutableToken mutableToken = (MutableToken)token;
mutableToken.setTokenStatus(TokenStatus.Suspended);
return token.getTokenID();
@@ -141,6 +149,19 @@
public Token activate(String tokenID)
{
- throw new NotImplementedException("JBPM-1649", "Token Activate");
+ RunnableToken rtToken = runnableTokens.get(tokenID);
+ if (rtToken == null)
+ throw new IllegalStateException("Not a runnable token: " + tokenID);
+
+ Token token = rtToken.getToken();
+ if (token.getTokenStatus() != TokenStatus.Suspended)
+ throw new IllegalStateException("Activate token in state: " + token.getTokenStatus());
+
+ log.debug("Activate Token: " + token);
+ MutableToken mutableToken = (MutableToken)token;
+ mutableToken.setTokenStatus(TokenStatus.Started);
+
+ executor.submit(rtToken);
+ return token;
}
}
\ No newline at end of file
Deleted: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -1,162 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.samples.airticket;
-
-// $Id$
-
-import javax.management.ObjectName;
-
-import org.jboss.bpm.client.MessageListener;
-import org.jboss.bpm.client.MessageManager;
-import org.jboss.bpm.client.ObjectNameFactory;
-import org.jboss.bpm.model.Message;
-import org.jboss.bpm.model.MessageBuilder;
-import org.jboss.bpm.model.MessageBuilderFactory;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.test.DefaultEngineTestCase;
-
-/**
- * Test the Airticket sample application
- *
- * @author thomas.diesler(a)jboss.com
- * @since 03-Jul-2008
- */
-public abstract class AbstractAirticketTest extends DefaultEngineTestCase
-{
- private MessageManager messageManager = MessageManager.locateMessageManager();
- private AirticketMessageListener msgListener;
-
- @Override
- public ObjectName getMessageListenerID()
- {
- return ObjectNameFactory.create("jboss.bpm:client=AirticketTest");
- }
-
- @Override
- public MessageListener getMessageListener()
- {
- msgListener = new AirticketMessageListener(getMessageListenerID());
- return msgListener;
- }
-
- @Override
- protected void tearDown() throws Exception
- {
- messageManager.removeMessageListener(getMessageListenerID());
- super.tearDown();
- }
-
- protected void runProcessInvalidData(Process proc)
- {
- messageManager.sendMessage(proc.getID(), AirticketProcessBuilder.TASK_RECEIVE_REQUEST, getInvalidRequestMessage());
- proc.waitForEnd();
-
- Message confirmMessage = msgListener.getConfirmMessage();
- assertNotNull("Expected confirm message", confirmMessage);
- String price = confirmMessage.getPropertyValue(AirticketProcessBuilder.PROPERTY_PRICE);
- assertEquals("222", price);
- }
-
- protected void runProcessValidData(Process proc)
- {
- messageManager.sendMessage(proc.getID(), AirticketProcessBuilder.TASK_RECEIVE_REQUEST, getValidRequestMessage());
- proc.waitForEnd();
-
- Message confirmMessage = msgListener.getConfirmMessage();
- assertNotNull("Expected confirm message", confirmMessage);
- String price = confirmMessage.getPropertyValue(AirticketProcessBuilder.PROPERTY_PRICE);
- assertEquals("222", price);
- }
-
- private Message getValidRequestMessage()
- {
- MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
- MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage(AirticketProcessBuilder.MESSAGE_REQ_DATA).
- addProperty(AirticketProcessBuilder.PROPERTY_NAME, "Kermit").
- addProperty(AirticketProcessBuilder.PROPERTY_FROM, "MUC").
- addProperty(AirticketProcessBuilder.PROPERTY_TO, "NYC").
- addProperty(AirticketProcessBuilder.PROPERTY_DATE, "25-Jul-2008").
- addProperty(AirticketProcessBuilder.PROPERTY_SEATS, "2").getMessage();
- return msg;
- }
-
- private Message getInvalidRequestMessage()
- {
- MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
- MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage(AirticketProcessBuilder.MESSAGE_REQ_DATA).
- addProperty(AirticketProcessBuilder.PROPERTY_NAME, "Kermit").
- addProperty(AirticketProcessBuilder.PROPERTY_FROM, "MUC").
- addProperty(AirticketProcessBuilder.PROPERTY_TO, "NYC").
- addProperty(AirticketProcessBuilder.PROPERTY_DATE, "25-Jul-2008").
- addProperty(AirticketProcessBuilder.PROPERTY_SEATS, "0"). // Invalid number of seats
- getMessage();
- return msg;
- }
-
- private Message getAcceptOfferMessage()
- {
- MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
- MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage(AirticketProcessBuilder.MESSAGE_ACCEPT_OFFER).
- addProperty(AirticketProcessBuilder.PROPERTY_CREDIT_CARD, "1234-1234-1234-1234").
- addProperty(AirticketProcessBuilder.PROPERTY_EXPIRE, "25-Jul-2012").
- addProperty(AirticketProcessBuilder.PROPERTY_IS_OFFER_ACCEPTED, "true").
- getMessage();
- return msg;
- }
-
- class AirticketMessageListener implements MessageListener
- {
- private ObjectName listenerID;
- private Message confirmMessage;
-
- private AirticketMessageListener(ObjectName listenerID)
- {
- this.listenerID = listenerID;
- }
-
- public Message getConfirmMessage()
- {
- return confirmMessage;
- }
-
- public void catchMessage(Message msg)
- {
- log.debug("catchMessage: " + msg);
- ObjectName procID = msg.getFrom().getProcess().getID();
- MessageManager mm = MessageManager.locateMessageManager();
- if (msg.getName().equals(AirticketProcessBuilder.MESSAGE_INVALID_DATA))
- mm.sendMessage(procID, AirticketProcessBuilder.TASK_RECEIVE_REQUEST, getValidRequestMessage());
- else if (msg.getName().equals(AirticketProcessBuilder.MESSAGE_OFFER))
- mm.sendMessage(procID, AirticketProcessBuilder.TASK_RECEIVE_ORDER, getAcceptOfferMessage());
- else if (msg.getName().equals(AirticketProcessBuilder.MESSAGE_CONFIRM))
- confirmMessage = msg;
- }
-
- public ObjectName getID()
- {
- return listenerID;
- }
- }
-}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketAPIDescriptorTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketAPIDescriptorTest.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketAPIDescriptorTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -23,6 +23,7 @@
// $Id$
+import java.io.IOException;
import java.net.URL;
import org.jboss.bpm.client.ProcessManager;
@@ -34,23 +35,13 @@
* @author thomas.diesler(a)jboss.com
* @since 03-Jul-2008
*/
-public class AirticketAPIDescriptorTest extends AbstractAirticketTest
+public class AirticketAPIDescriptorTest extends AirticketTest
{
- public void testValidData() throws Exception
+ @Override
+ protected Process getProcess() throws IOException
{
URL expURL = getResourceURL("samples/airticket/airticket-api10.xml");
ProcessManager pm = ProcessManager.locateProcessManager();
- Process proc = pm.createProcess(expURL);
- proc.startProcess();
- runProcessValidData(proc);
+ return pm.createProcess(expURL);
}
-
- public void testInvalidData() throws Exception
- {
- URL expURL = getResourceURL("samples/airticket/airticket-api10.xml");
- ProcessManager pm = ProcessManager.locateProcessManager();
- Process proc = pm.createProcess(expURL);
- proc.startProcess();
- runProcessInvalidData(proc);
- }
}
\ No newline at end of file
Deleted: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -1,51 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.samples.airticket;
-
-// $Id$
-
-import org.jboss.bpm.model.Process;
-
-/**
- * Test the Airticket sample application
- *
- * @author thomas.diesler(a)jboss.com
- * @since 03-Jul-2008
- */
-public class AirticketProcBuilderTest extends AbstractAirticketTest
-{
- public void testValidData() throws Exception
- {
- AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
- Process proc = builder.buildProcess();
- proc.startProcess();
- runProcessValidData(proc);
- }
-
- public void testInvalidData() throws Exception
- {
- AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
- Process proc = builder.buildProcess();
- proc.startProcess();
- runProcessInvalidData(proc);
- }
-}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketSTPDescriptorTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketSTPDescriptorTest.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketSTPDescriptorTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -23,10 +23,9 @@
// $Id$
-import java.io.StringWriter;
+import java.io.IOException;
import java.net.URL;
-import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -36,30 +35,13 @@
* @author thomas.diesler(a)jboss.com
* @since 03-Jul-2008
*/
-public class AirticketSTPDescriptorTest extends AbstractAirticketTest
+public class AirticketSTPDescriptorTest extends AirticketTest
{
- public void testValidData() throws Exception
+ @Override
+ protected Process getProcess() throws IOException
{
URL expURL = getResourceURL("samples/airticket/airticket-stp-api10.xml");
ProcessManager pm = ProcessManager.locateProcessManager();
- Process proc = pm.createProcess(expURL);
-
- // Debug the effective process
- StringWriter strwr = new StringWriter();
- DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
- dhapi.marshallProcess(proc, strwr);
- //System.out.println(strwr);
-
- proc.startProcess();
- runProcessValidData(proc);
+ return pm.createProcess(expURL);
}
-
- public void testInvalidData() throws Exception
- {
- URL expURL = getResourceURL("samples/airticket/airticket-stp-api10.xml");
- ProcessManager pm = ProcessManager.locateProcessManager();
- Process proc = pm.createProcess(expURL);
- proc.startProcess();
- runProcessInvalidData(proc);
- }
}
\ No newline at end of file
Copied: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java (from rev 1908, jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -0,0 +1,177 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.samples.airticket;
+
+// $Id$
+
+import java.io.IOException;
+
+import javax.management.ObjectName;
+
+import org.jboss.bpm.client.MessageListener;
+import org.jboss.bpm.client.MessageManager;
+import org.jboss.bpm.client.ObjectNameFactory;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
+import org.jboss.bpm.model.MessageBuilderFactory;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test the Airticket sample application
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public class AirticketTest extends DefaultEngineTestCase
+{
+ private MessageManager messageManager = MessageManager.locateMessageManager();
+ private AirticketMessageListener msgListener;
+
+ public void testValidData() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+
+ messageManager.sendMessage(proc.getID(), AirticketProcessBuilder.TASK_RECEIVE_REQUEST, getValidRequestMessage());
+ proc.waitForEnd();
+
+ Message confirmMessage = msgListener.getConfirmMessage();
+ assertNotNull("Expected confirm message", confirmMessage);
+ String price = confirmMessage.getPropertyValue(AirticketProcessBuilder.PROPERTY_PRICE);
+ assertEquals("222", price);
+ }
+
+ public void testInvalidData() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+
+ messageManager.sendMessage(proc.getID(), AirticketProcessBuilder.TASK_RECEIVE_REQUEST, getInvalidRequestMessage());
+ proc.waitForEnd();
+
+ Message confirmMessage = msgListener.getConfirmMessage();
+ assertNotNull("Expected confirm message", confirmMessage);
+ String price = confirmMessage.getPropertyValue(AirticketProcessBuilder.PROPERTY_PRICE);
+ assertEquals("222", price);
+ }
+
+ @Override
+ public ObjectName getMessageListenerID()
+ {
+ return ObjectNameFactory.create("jboss.bpm:client=AirticketTest");
+ }
+
+ @Override
+ public MessageListener getMessageListener()
+ {
+ msgListener = new AirticketMessageListener(getMessageListenerID());
+ return msgListener;
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ messageManager.removeMessageListener(getMessageListenerID());
+ super.tearDown();
+ }
+
+ private Message getValidRequestMessage()
+ {
+ MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
+ MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
+ Message msg = msgBuilder.newMessage(AirticketProcessBuilder.MESSAGE_REQ_DATA).
+ addProperty(AirticketProcessBuilder.PROPERTY_NAME, "Kermit").
+ addProperty(AirticketProcessBuilder.PROPERTY_FROM, "MUC").
+ addProperty(AirticketProcessBuilder.PROPERTY_TO, "NYC").
+ addProperty(AirticketProcessBuilder.PROPERTY_DATE, "25-Jul-2008").
+ addProperty(AirticketProcessBuilder.PROPERTY_SEATS, "2").getMessage();
+ return msg;
+ }
+
+ private Message getInvalidRequestMessage()
+ {
+ MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
+ MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
+ Message msg = msgBuilder.newMessage(AirticketProcessBuilder.MESSAGE_REQ_DATA).
+ addProperty(AirticketProcessBuilder.PROPERTY_NAME, "Kermit").
+ addProperty(AirticketProcessBuilder.PROPERTY_FROM, "MUC").
+ addProperty(AirticketProcessBuilder.PROPERTY_TO, "NYC").
+ addProperty(AirticketProcessBuilder.PROPERTY_DATE, "25-Jul-2008").
+ addProperty(AirticketProcessBuilder.PROPERTY_SEATS, "0"). // Invalid number of seats
+ getMessage();
+ return msg;
+ }
+
+ private Message getAcceptOfferMessage()
+ {
+ MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
+ MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
+ Message msg = msgBuilder.newMessage(AirticketProcessBuilder.MESSAGE_ACCEPT_OFFER).
+ addProperty(AirticketProcessBuilder.PROPERTY_CREDIT_CARD, "1234-1234-1234-1234").
+ addProperty(AirticketProcessBuilder.PROPERTY_EXPIRE, "25-Jul-2012").
+ addProperty(AirticketProcessBuilder.PROPERTY_IS_OFFER_ACCEPTED, "true").
+ getMessage();
+ return msg;
+ }
+
+
+ protected Process getProcess() throws IOException
+ {
+ AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+ return builder.buildProcess();
+ }
+
+ class AirticketMessageListener implements MessageListener
+ {
+ private ObjectName listenerID;
+ private Message confirmMessage;
+
+ private AirticketMessageListener(ObjectName listenerID)
+ {
+ this.listenerID = listenerID;
+ }
+
+ public Message getConfirmMessage()
+ {
+ return confirmMessage;
+ }
+
+ public void catchMessage(Message msg)
+ {
+ log.debug("catchMessage: " + msg);
+ ObjectName procID = msg.getFrom().getProcess().getID();
+ MessageManager mm = MessageManager.locateMessageManager();
+ if (msg.getName().equals(AirticketProcessBuilder.MESSAGE_INVALID_DATA))
+ mm.sendMessage(procID, AirticketProcessBuilder.TASK_RECEIVE_REQUEST, getValidRequestMessage());
+ else if (msg.getName().equals(AirticketProcessBuilder.MESSAGE_OFFER))
+ mm.sendMessage(procID, AirticketProcessBuilder.TASK_RECEIVE_ORDER, getAcceptOfferMessage());
+ else if (msg.getName().equals(AirticketProcessBuilder.MESSAGE_CONFIRM))
+ confirmMessage = msg;
+ }
+
+ public ObjectName getID()
+ {
+ return listenerID;
+ }
+ }
+}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -75,7 +75,7 @@
public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
+ procBuilder.addProcess("InclusiveGatewaySplitTest").addStartEvent("Start").addSequenceFlow("Split");
GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Inclusive);
gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/ReceiveTaskTest.java (from rev 1908, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/ReceiveTaskTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/ReceiveTaskTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -0,0 +1,153 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.task;
+
+// $Id$
+
+import org.jboss.bpm.InvalidProcessException;
+import org.jboss.bpm.client.MessageManager;
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.client.SignalListener;
+import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
+import org.jboss.bpm.model.MessageBuilderFactory;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
+import org.jboss.bpm.model.Signal.SignalType;
+import org.jboss.bpm.model.Task.TaskType;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test process messages
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public class ReceiveTaskTest extends DefaultEngineTestCase
+{
+ public void testReceiveTaskWithNoMessage() throws Exception
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess("ReceiveTaskTest").addStartEvent("Start").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA", TaskType.Receive).addSequenceFlow("End").addEndEvent("End");
+ try
+ {
+ procBuilder.getProcess();
+ fail("A Message for the MessageRef attribute MUST be entered");
+ }
+ catch (InvalidProcessException ex)
+ {
+ // expected
+ }
+ }
+
+ public void testUnregisteredProcess() throws Exception
+ {
+ Process proc = getProcess();
+
+ MessageManager msgManager = MessageManager.locateMessageManager();
+ try
+ {
+ msgManager.sendMessage(proc.getID(), "TaskA", getMessage());
+ fail("Send to an unregistered process is expected to fail");
+ }
+ catch (RuntimeException ex)
+ {
+ // expected
+ }
+ }
+
+ public void testSuspendedMessage() throws Exception
+ {
+ Process proc = getProcess();
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ procManager.registerProcess(proc);
+
+ // Send the message before the process is started
+ MessageManager msgManager = MessageManager.locateMessageManager();
+ msgManager.sendMessage(proc.getID(), "TaskA", getMessage());
+
+ proc.startProcess();
+ proc.waitForEnd();
+
+ Message endMsg = getMessages().get(0);
+ assertNotNull("End message expected", endMsg);
+ assertEquals("bar", endMsg.getPropertyValue("foo"));
+ }
+
+ public void testSuspendedToken() throws Exception
+ {
+ final Process proc = getProcess();
+ SignalListener signalListener = new SignalListener()
+ {
+ private boolean sendMessage = true;
+ public void catchSignal(Signal signal)
+ {
+ // Send the message after the process reached the receive task
+ if (signal.getSignalType() == SignalType.SYSTEM_TASK_EXIT)
+ {
+ if (sendMessage == true)
+ {
+ sendMessage = false;
+ MessageManager msgManager = MessageManager.locateMessageManager();
+ msgManager.sendMessage(proc.getID(), "TaskA", getMessage());
+ }
+ }
+ }
+ };
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ sigManager.addSignalListener(proc.getName(), signalListener);
+
+ proc.startProcess();
+ proc.waitForEnd();
+
+ Message endMsg = getMessages().get(0);
+ assertNotNull("End message expected", endMsg);
+ assertEquals("bar", endMsg.getPropertyValue("foo"));
+ }
+
+ private Message getMessage()
+ {
+ MessageBuilder procBuilder = MessageBuilderFactory.newInstance().newMessageBuilder();
+ Message msg = procBuilder.newMessage("ReceiveTaskMessage").addProperty("foo", "bar", true).getMessage();
+ return msg;
+ }
+
+ private Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ MessageBuilder msgBuilder = procBuilder.addProcess("ReceiveTaskTest").addMessage("ReceiveTaskMessage");
+ msgBuilder.addProperty("foo", null, true);
+ msgBuilder = procBuilder.addMessage("EndEventMessage");
+ msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true);
+ procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA", TaskType.Receive).addMessageRef("ReceiveTaskMessage");
+ EventBuilder eventBuilder = procBuilder.addSequenceFlow("End").addEndEvent("End");
+ eventBuilder.addEventDetail(EventDetailType.Message).addMessageRef("EndEventMessage");
+ return procBuilder.getProcess();
+ }
+}
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/SendTaskTest.java (from rev 1908, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/SendTaskTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/SendTaskTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.task;
+
+// $Id$
+
+import org.jboss.bpm.InvalidProcessException;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Task.TaskType;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test process messages
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public class SendTaskTest extends DefaultEngineTestCase
+{
+ public void testSendTaskWithNoMessage() throws Exception
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA", TaskType.Send).addSequenceFlow("End").addEndEvent("End");
+ try
+ {
+ procBuilder.getProcess();
+ fail("A Message for the MessageRef attribute MUST be entered");
+ }
+ catch (InvalidProcessException ex)
+ {
+ // expected
+ }
+ }
+}
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -1,71 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.task;
-
-// $Id$
-
-import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Task.TaskType;
-import org.jboss.bpm.test.DefaultEngineTestCase;
-
-/**
- * Test process messages
- *
- * @author thomas.diesler(a)jboss.com
- * @since 03-Jul-2008
- */
-public class TaskMessageTest extends DefaultEngineTestCase
-{
- public void testReceiveTaskWithNoMessage() throws Exception
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("A");
- procBuilder.addTask("A", TaskType.Receive).addSequenceFlow("End").addEndEvent("End");
- try
- {
- procBuilder.getProcess();
- fail("A Message for the MessageRef attribute MUST be entered");
- }
- catch (InvalidProcessException ex)
- {
- // expected
- }
- }
-
- public void testSendTaskWithNoMessage() throws Exception
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("A");
- procBuilder.addTask("A", TaskType.Send).addSequenceFlow("End").addEndEvent("End");
- try
- {
- procBuilder.getProcess();
- fail("A Message for the MessageRef attribute MUST be entered");
- }
- catch (InvalidProcessException ex)
- {
- // expected
- }
- }
-}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/multichoice/MultiChoiceTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/multichoice/MultiChoiceTest.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/multichoice/MultiChoiceTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -75,7 +75,7 @@
public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
+ procBuilder.addProcess("MultiChoiceTest").addStartEvent("Start").addSequenceFlow("Split");
GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Inclusive);
gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java 2008-08-17 10:16:05 UTC (rev 1910)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java 2008-08-17 16:18:36 UTC (rev 1911)
@@ -70,7 +70,7 @@
assertEquals("TaskA:TaskB", TaskC.taskValue);
}
- public void _testSynchronizationTimeout() throws Exception
+ public void testSynchronizationTimeout() throws Exception
{
Process proc = getProcess();
proc.startProcess();
@@ -91,7 +91,7 @@
}
}
- public void _testSynchronizationInvalidToken() throws Exception
+ public void testSynchronizationInvalidToken() throws Exception
{
Process proc = getProcess();
proc.startProcess();
17 years, 8 months
JBoss JBPM SVN: r1910 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/runtime and 8 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-17 06:16:05 -0400 (Sun, 17 Aug 2008)
New Revision: 1910
Added:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/AssignmentImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionEvaluator.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/BasicExecutionContext.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingToken.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/MutableToken.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/event/
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerTest.java
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Assignment.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ConnectingObject.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/Process.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SingleOutFlowSupport.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Attachments.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/BasicAttachments.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBFlowObject.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBProcess.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/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/ParallelGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.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/SingleInFlowSetterSupport.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SingleOutFlowSetterSupport.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/TokenExecutorImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
Log:
Add Assignment support
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Assignment.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Assignment.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Assignment.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -24,15 +24,15 @@
//$Id$
/**
- * An Assignment, which is used in the definition of attributes for Process,
- * Activities, Events, Gateways, and Gates.
+ * An Assignment, which is used in the definition of attributes for {@link Process},
+ * {@link Activity}, {@link Event}, {@link Gateway}, and {@link Gate}.
*
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
public interface Assignment extends SupportingElement
{
- enum AssignTime
+ public enum AssignTime
{
Start, End
}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ConnectingObject.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ConnectingObject.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ConnectingObject.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -43,14 +43,14 @@
* Object is connected from. Note: there are restrictions as to what objects Sequence
* Flow and Message Flow can connect.
*/
- GraphicalElement getSourceRef();
+ FlowObject getSourceRef();
/**
* TargetRef is an attribute that identifies which Graphical Element the Connecting
* Object is connected to. Note: there are restrictions as to what objects Sequence
* Flow and Message Flow can connect.
*/
- GraphicalElement getTargetRef();
+ FlowObject getTargetRef();
/**
* Get the required target name
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -21,11 +21,12 @@
*/
package org.jboss.bpm.model;
+import java.util.List;
+
//$Id$
/**
- * A Flow Object is one of the set of following graphical objects:
- * {@link Event}, {@link Activity}, and {@link Gateway}.
+ * A Flow Object is one of the set of following graphical objects: {@link Event}, {@link Activity}, and {@link Gateway}.
*
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
@@ -36,9 +37,15 @@
* Get the unique name.
*/
String getName();
-
+
/**
* Get the associated Process
*/
Process getProcess();
+
+ /**
+ * One or more assignment expressions MAY be made for the object. For activities (Task, Sub-Process, and Process), the
+ * Assignment SHALL be performed as defined by the AssignTime attribute.
+ */
+ List<Assignment> getAssignments();
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -95,7 +95,7 @@
* One or more assignment expressions MAY be made for the object. The Assignment SHALL be performed as defined by the
* AssignTime attribute.
*/
- List<String> getAssignments();
+ List<Assignment> getAssignments();
/**
* The InputSets attribute defines the data requirements for input to the Process. Zero or more InputSets MAY be
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -22,6 +22,8 @@
package org.jboss.bpm.model;
import org.jboss.bpm.client.DialectHandler;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Task.TaskType;
import org.jboss.bpm.runtime.ExecutionHandler;
@@ -116,6 +118,11 @@
ProcessBuilder addProperty(String name, String value);
/**
+ * Add an {@link Assignment} to the {@link Process} or the current {@link FlowObject}.
+ */
+ ProcessBuilder addAssignment(AssignTime time, ExpressionLanguage lang, String fromExpr, String toProp);
+
+ /**
* Add an {@link ExecutionHandler} with a given Class
*/
ProcessBuilder addExecutionHandler(Class<?> clazz);
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SingleOutFlowSupport.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SingleOutFlowSupport.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SingleOutFlowSupport.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -35,5 +35,5 @@
/**
* Get the out flow
*/
- ConnectingObject getOutFlow();
+ SequenceFlow getOutFlow();
}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Attachments.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Attachments.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Attachments.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -128,7 +128,15 @@
*/
public String toString()
{
- return "[" + (clazz != null ? clazz.getName() : null) + "," + name + "]";
+ StringBuilder str = new StringBuilder("[");
+ if (clazz != null)
+ str.append(clazz.getName());
+ if (clazz != null && name != null)
+ str.append(",");
+ if (name != null)
+ str.append(name);
+ str.append("]");
+ return str.toString();
}
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/BasicAttachments.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/BasicAttachments.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/BasicAttachments.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -27,8 +27,6 @@
import java.util.HashMap;
import java.util.Map;
-
-
/**
* Basic attachments.
*
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -24,7 +24,6 @@
//$Id$
import org.jboss.bpm.model.Activity;
-import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.InputSet;
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.SequenceFlow;
@@ -66,7 +65,7 @@
/**
* Get the current {@link SequenceFlow}
*/
- ConnectingObject getFlow();
+ SequenceFlow getFlow();
/**
* Get the active {@link InputSet}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/TokenExecutor.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -25,7 +25,6 @@
import java.util.Set;
-import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.SequenceFlow;
/**
@@ -50,7 +49,7 @@
/**
* Create a {@link Token} with an initial flow
*/
- void create(Token token, ConnectingObject flow);
+ void create(Token token, SequenceFlow flow);
/**
* Start a {@link Token}
@@ -80,5 +79,5 @@
/**
* Move a given {@link Token} along a given flow.
*/
- void move(Token token, ConnectingObject flow);
+ void move(Token token, SequenceFlow flow);
}
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -31,6 +31,7 @@
import javax.xml.bind.Marshaller;
import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.dialect.api10.model.JAXBAssignment;
import org.jboss.bpm.dialect.api10.model.JAXBComplexGateway;
import org.jboss.bpm.dialect.api10.model.JAXBEndEvent;
import org.jboss.bpm.dialect.api10.model.JAXBEvent;
@@ -57,6 +58,7 @@
import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
+import org.jboss.bpm.model.Assignment;
import org.jboss.bpm.model.ComplexGateway;
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.Event;
@@ -126,31 +128,44 @@
JAXBProperty jaxbProp = getJaxbProperty(prop);
jaxbProc.getProperties().add(jaxbProp);
}
+ for (Assignment ass : proc.getAssignments())
+ {
+ JAXBAssignment jaxbAss = getJaxbAssignment(ass);
+ jaxbProc.getAssignments().add(jaxbAss);
+ }
- for (FlowObject fo : proc.getFlowObjects())
+ for (FlowObject flowObject : proc.getFlowObjects())
{
- JAXBFlowObject jaxb;
- if (fo instanceof Event)
+ JAXBFlowObject jaxbFlowObject;
+ if (flowObject instanceof Event)
{
- jaxb = adaptEvent(jaxbProc, (Event)fo);
+ jaxbFlowObject = adaptEvent(jaxbProc, (Event)flowObject);
}
- else if (fo instanceof Task)
+ else if (flowObject instanceof Task)
{
- jaxb = adaptTask(jaxbProc, (Task)fo);
+ jaxbFlowObject = adaptTask(jaxbProc, (Task)flowObject);
}
- else if (fo instanceof Gateway)
+ else if (flowObject instanceof Gateway)
{
- jaxb = adaptGateway(jaxbProc, (Gateway)fo);
+ jaxbFlowObject = adaptGateway(jaxbProc, (Gateway)flowObject);
}
else
{
- throw new IllegalStateException("Unsupported flow object: " + fo);
+ throw new IllegalStateException("Unsupported flow object: " + flowObject);
}
- jaxbProc.getFlowObjects().add(jaxb);
+
+ for (Assignment ass : flowObject.getAssignments())
+ {
+ JAXBAssignment jaxbAss = getJaxbAssignment(ass);
+ jaxbFlowObject.getAssignments().add(jaxbAss);
+ }
+
+ jaxbProc.getFlowObjects().add(jaxbFlowObject);
}
return jaxbProc;
}
+
private JAXBFlowObject adaptEvent(JAXBProcess jaxbProc, Event event)
{
JAXBEvent jaxbEvent;
@@ -455,6 +470,15 @@
return jaxb;
}
+ private JAXBAssignment getJaxbAssignment(Assignment ass)
+ {
+ JAXBAssignment jaxbAss = new JAXBAssignment();
+ jaxbAss.setAssignTime(ass.getAssignTime());
+ jaxbAss.setFrom(getJAXBExpression(ass.getFrom()));
+ jaxbAss.setTo(getJaxbProperty(ass.getTo()));
+ return jaxbAss;
+ }
+
private JAXBExecutionHandler getJAXBExecutionHandler(FlowObject fo, ExecutionHandler handler)
{
JAXBExecutionHandler jaxb = null;
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -39,6 +39,7 @@
import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.client.ObjectNameFactory;
import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.dialect.api10.model.JAXBAssignment;
import org.jboss.bpm.dialect.api10.model.JAXBCancelEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBCompensationEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBComplexGateway;
@@ -117,30 +118,48 @@
MessageBuilder msgBuilder = procBuilder.addMessage(jaxb.getName());
adaptJAXBMessage(msgBuilder, jaxb);
}
+
+ // Process Properties
for (JAXBProperty jaxbProp : jaxbProc.getProperties())
{
procBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue());
}
+
+ // Process Assignments
+ for (JAXBAssignment jaxbAss : jaxbProc.getAssignments())
+ {
+ JAXBExpression jaxbFrom = jaxbAss.getFrom();
+ JAXBProperty jaxbTo = jaxbAss.getTo();
+ procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo.getName());
+ }
// Process FlowObjects
- for (JAXBFlowObject jaxb : jaxbProc.getFlowObjects())
+ for (JAXBFlowObject jaxbFlowObject : jaxbProc.getFlowObjects())
{
- if (jaxb instanceof JAXBEvent)
+ if (jaxbFlowObject instanceof JAXBEvent)
{
- adaptJAXBEvent(procBuilder, jaxbProc, (JAXBEvent)jaxb);
+ adaptJAXBEvent(procBuilder, jaxbProc, (JAXBEvent)jaxbFlowObject);
}
- else if (jaxb instanceof JAXBTask)
+ else if (jaxbFlowObject instanceof JAXBTask)
{
- adaptTask(procBuilder, jaxbProc, (JAXBTask)jaxb);
+ adaptTask(procBuilder, jaxbProc, (JAXBTask)jaxbFlowObject);
}
- else if (jaxb instanceof JAXBGateway)
+ else if (jaxbFlowObject instanceof JAXBGateway)
{
- adaptJAXBGateway(procBuilder, jaxbProc, (JAXBGateway)jaxb);
+ adaptJAXBGateway(procBuilder, jaxbProc, (JAXBGateway)jaxbFlowObject);
}
else
{
- throw new IllegalStateException("Unsupported flow object: " + jaxb);
+ throw new IllegalStateException("Unsupported flow object: " + jaxbFlowObject);
}
+
+ // FlowObject Assignments
+ for (JAXBAssignment jaxbAss : jaxbFlowObject.getAssignments())
+ {
+ JAXBExpression jaxbFrom = jaxbAss.getFrom();
+ JAXBProperty jaxbTo = jaxbAss.getTo();
+ procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo.getName());
+ }
}
Process proc = (isInclude ? procBuilder.getProcessForInclude() : procBuilder.getProcess());
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -0,0 +1,84 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.bpm.model.Activity;
+import org.jboss.bpm.model.Event;
+import org.jboss.bpm.model.Gate;
+import org.jboss.bpm.model.Gateway;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Assignment.AssignTime;
+
+/**
+ * An Assignment, which is used in the definition of attributes for {@link Process},
+ * {@link Activity}, {@link Event}, {@link Gateway}, and {@link Gate}.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "Assignment")
+public class JAXBAssignment
+{
+ JAXBProperty to;
+ JAXBExpression from;
+ AssignTime assignTime;
+
+ public JAXBProperty getTo()
+ {
+ return to;
+ }
+
+ @XmlElement
+ public void setTo(JAXBProperty to)
+ {
+ this.to = to;
+ }
+
+ public JAXBExpression getFrom()
+ {
+ return from;
+ }
+
+ @XmlElement
+ public void setFrom(JAXBExpression from)
+ {
+ this.from = from;
+ }
+
+ public AssignTime getAssignTime()
+ {
+ return assignTime;
+ }
+
+ @XmlAttribute(name = "time")
+ public void setAssignTime(AssignTime assignTime)
+ {
+ this.assignTime = assignTime;
+ }
+
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBFlowObject.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBFlowObject.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBFlowObject.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -23,6 +23,10 @@
//$Id: $
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@@ -35,4 +39,11 @@
@XmlType(name = "FlowObject")
public class JAXBFlowObject extends JAXBGraphicalElement
{
+ private List<JAXBAssignment> assignments = new ArrayList<JAXBAssignment>();
+
+ @XmlElement(name = "assignment")
+ public List<JAXBAssignment> getAssignments()
+ {
+ return assignments;
+ }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBProcess.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBProcess.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBProcess.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -58,6 +58,7 @@
private List<JAXBFlowObject> flowObjects = new ArrayList<JAXBFlowObject>();
private List<JAXBProperty> properties = new ArrayList<JAXBProperty>();
+ private List<JAXBAssignment> assignments = new ArrayList<JAXBAssignment>();
public String getName()
{
@@ -112,4 +113,10 @@
{
return properties;
}
+
+ @XmlElement(name = "assignment")
+ public List<JAXBAssignment> getAssignments()
+ {
+ return assignments;
+ }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -29,19 +29,26 @@
import org.jboss.bpm.client.ExecutionManager;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.Assignment;
+import org.jboss.bpm.model.Expression;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.StartEvent;
+import org.jboss.bpm.model.Assignment.AssignTime;
import org.jboss.bpm.model.Process.ProcessStatus;
import org.jboss.bpm.model.Signal.SignalType;
+import org.jboss.bpm.model.internal.ExpressionEvaluator;
import org.jboss.bpm.model.internal.ProcessImpl;
import org.jboss.bpm.model.internal.RuntimeProcessImpl;
import org.jboss.bpm.model.internal.SequenceFlowImpl;
import org.jboss.bpm.model.internal.TokenExecutorImpl;
import org.jboss.bpm.runtime.Attachments;
+import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.RuntimeProcess;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
+import org.jboss.bpm.runtime.internal.DelegatingToken;
+import org.jboss.bpm.runtime.internal.MutableToken;
import org.jboss.bpm.runtime.internal.TokenImpl;
/**
@@ -56,7 +63,7 @@
private static final Log log = LogFactory.getLog(ExecutionManager.class);
@Override
- public void startProcess(Process proc, Attachments att)
+ public void startProcess(final Process proc, final Attachments att)
{
final ProcessImpl procImpl = (ProcessImpl)proc;
procImpl.setProcessStatus(ProcessStatus.Active);
@@ -65,12 +72,14 @@
signalManager.throwSignal(proc.getName(), new Signal(proc.getName(), SignalType.SYSTEM_PROCESS_ENTER));
final RuntimeProcessImpl rtProc = new RuntimeProcessImpl(proc);
- final RunnableProcess runner = new RunnableProcess(rtProc, att);
+ final RunnableProcess runnableProcess = new RunnableProcess(rtProc, att);
TokenExecutorImpl.StartCallback callback = new TokenExecutorImpl.StartCallback()
{
public void start(Token token)
{
- Thread executorThread = new Thread(runner);
+ processStartTimeAssignments(proc, token);
+
+ Thread executorThread = new Thread(runnableProcess);
procImpl.setExecutorThread(executorThread);
executorThread.start();
}
@@ -102,6 +111,24 @@
}
return start;
}
+
+ // Evaluate the Start time assignments
+ private void processStartTimeAssignments(Process proc, Token token)
+ {
+ DelegatingToken delegatingToken = new DelegatingToken((MutableToken)token);
+ ExecutionContext exContext = token.getExecutionContext();
+ for (Assignment ass : proc.getAssignments())
+ {
+ if (ass.getAssignTime() == AssignTime.Start)
+ {
+ Expression expr = ass.getFrom();
+ ExpressionEvaluator exprEvaluator = new ExpressionEvaluator(expr);
+ Object result = exprEvaluator.evaluateExpression(delegatingToken);
+ String propName = ass.getTo().getName();
+ exContext.addAttachment(propName, result);
+ }
+ }
+ }
/**
* The initial flow to the StartEvent
@@ -130,26 +157,26 @@
public void run()
{
TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
- ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
-
- String procName = procImpl.getName();
- ProcessStatus procStatus = procImpl.getProcessStatus();
+ Process proc = rtProc.getProcess();
+
+ String procName = proc.getName();
+ ProcessStatus procStatus = proc.getProcessStatus();
boolean hasActiveTokens = tokenExecutor.hasActiveTokens();
try
{
- synchronized (procImpl)
+ synchronized (proc)
{
while (procStatus == ProcessStatus.Active && hasActiveTokens)
{
try
{
- procImpl.wait();
+ proc.wait();
}
catch (InterruptedException ex)
{
log.error("Executor thread interrupted");
}
- procStatus = procImpl.getProcessStatus();
+ procStatus = proc.getProcessStatus();
hasActiveTokens = tokenExecutor.hasActiveTokens();
}
log.debug("End execution thread [status=" + procStatus + ",tokens=" + tokenExecutor.getActiveTokens() + "]");
@@ -161,7 +188,10 @@
signalManager.throwSignal(procName, new Signal(procName, Signal.SignalType.SYSTEM_PROCESS_EXIT));
if (procStatus == ProcessStatus.Active)
+ {
+ ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
procImpl.setProcessStatus(ProcessStatus.Completed);
+ }
ProcessManager procManager = ProcessManager.locateProcessManager();
procManager.unregisterProcess(rtProc.getProcess());
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -30,15 +30,15 @@
import org.jboss.bpm.model.Process.ProcessStatus;
import org.jboss.bpm.model.internal.FlowObjectImpl;
import org.jboss.bpm.model.internal.ProcessImpl;
-import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.HandlerSupport;
import org.jboss.bpm.runtime.RuntimeProcess;
import org.jboss.bpm.runtime.SignalHandler;
+import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.Token.TokenStatus;
-import org.jboss.bpm.runtime.internal.DelegatingExecutionContext;
-import org.jboss.bpm.runtime.internal.TokenImpl;
+import org.jboss.bpm.runtime.internal.DelegatingToken;
+import org.jboss.bpm.runtime.internal.MutableToken;
/**
* The RunnableToken implements the logic to move the token from one FlowObject to the next.
@@ -52,15 +52,15 @@
private static final Log log = LogFactory.getLog(RunnableToken.class);
private RuntimeProcess rtProc;
- private TokenImpl token;
+ private MutableToken token;
- public RunnableToken(RuntimeProcess rtProc, TokenImpl token)
+ public RunnableToken(RuntimeProcess rtProc, MutableToken token)
{
this.rtProc = rtProc;
this.token = token;
}
- public TokenImpl getToken()
+ public Token getToken()
{
return token;
}
@@ -96,16 +96,14 @@
// Execute the FlowObject
sigHandler.throwEnterSignal();
- // Set the current FlowObject in the ExecutionContext
- ExecutionContext exContext = token.getExecutionContext();
- DelegatingExecutionContext delCtx = (DelegatingExecutionContext)exContext;
- delCtx.setCurrFlowObject(targetFlowObject);
+ // Create a Token that includes properties from the current Activity
+ DelegatingToken delegatingToken = new DelegatingToken(token);
// Execute the target FlowObject
- targetFlowObject.execute(token);
+ targetFlowObject.execute(delegatingToken);
// Transfer the token to the FlowHandler
- flowHandler.execute(tokenExecutor, token);
+ flowHandler.execute(tokenExecutor, delegatingToken);
}
catch (RuntimeException rte)
{
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -36,12 +36,13 @@
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Property;
+import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.MutablePropertySupport;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
-import org.jboss.bpm.runtime.internal.TokenImpl;
+import org.jboss.bpm.runtime.internal.MutableToken;
/**
* An activity is a generic term for work that a company or organization performs via business processes. An activity
@@ -59,8 +60,8 @@
private List<OutputSet> outputSets = new ArrayList<OutputSet>();
private List<Expression> ioRules = new ArrayList<Expression>();
private List<Property> props = new ArrayList<Property>();
- private ConnectingObject inFlow;
- private ConnectingObject outFlow;
+ private SequenceFlow inFlow;
+ private SequenceFlow outFlow;
public ActivityImpl(String name)
{
@@ -158,17 +159,17 @@
return inFlow;
}
- public void setInFlow(ConnectingObject inFlow)
+ public void setInFlow(SequenceFlow inFlow)
{
this.inFlow = inFlow;
}
- public ConnectingObject getOutFlow()
+ public SequenceFlow getOutFlow()
{
return outFlow;
}
- public void setOutFlow(ConnectingObject flow)
+ public void setOutFlow(SequenceFlow flow)
{
this.outFlow = flow;
}
@@ -176,10 +177,10 @@
@Override
public void execute(Token token)
{
- TokenImpl tokenImpl = (TokenImpl)token;
- tokenImpl.setOutputSet(getActiveOutputSet());
- tokenImpl.setInputSet(getActiveInputSet(token));
- callExecutionHandler(token);
+ MutableToken mutableToken = (MutableToken)token;
+ mutableToken.setOutputSet(getActiveOutputSet());
+ mutableToken.setInputSet(getActiveInputSet(token));
+ super.execute(token);
processOutputSet(token);
postProcessInputSet(token);
}
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/AssignmentImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/AssignmentImpl.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/AssignmentImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -0,0 +1,64 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.Assignment;
+import org.jboss.bpm.model.Expression;
+import org.jboss.bpm.model.Property;
+
+/**
+ * An Assignment, which is used in the definition of attributes for Process, Activities, Events, Gateways, and Gates.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@SuppressWarnings("serial")
+public class AssignmentImpl extends SupportingElementImpl implements Assignment
+{
+ private AssignTime assignTime;
+ private Expression from;
+ private Property to;
+
+ public AssignmentImpl(AssignTime assignTime, Expression from, Property to)
+ {
+ this.assignTime = assignTime;
+ this.from = from;
+ this.to = to;
+ }
+
+ public AssignTime getAssignTime()
+ {
+ return assignTime;
+ }
+
+ public Expression getFrom()
+ {
+ return from;
+ }
+
+ public Property getTo()
+ {
+ return to;
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/AssignmentImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -30,11 +30,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.MessageEventDetail;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.runtime.FlowHandler;
@@ -58,14 +58,14 @@
private static final Log log = LogFactory.getLog(EndEventImpl.class);
private List<EventDetail> resultSet = new ArrayList<EventDetail>();
- private ConnectingObject inFlow;
+ private SequenceFlow inFlow;
public EndEventImpl(String name)
{
super(name);
}
- public ConnectingObject getInFlow()
+ public SequenceFlow getInFlow()
{
return inFlow;
}
@@ -73,7 +73,7 @@
/**
* Set the in flow
*/
- public void setInFlow(ConnectingObject inFlow)
+ public void setInFlow(SequenceFlow inFlow)
{
this.inFlow = inFlow;
}
@@ -89,9 +89,9 @@
}
@Override
- protected void callExecutionHandler(Token token)
+ protected void defaultExecution(Token token)
{
- super.callExecutionHandler(token);
+ super.defaultExecution(token);
for (EventDetail eventDetail : getResult())
{
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -23,9 +23,7 @@
//$Id$
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
@@ -36,14 +34,10 @@
import org.jboss.bpm.model.Gate;
import org.jboss.bpm.model.GraphicalElement;
import org.jboss.bpm.model.SequenceFlow;
-import org.jboss.bpm.model.Expression.ExpressionLanguage;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
-import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.Token;
-import org.jboss.bpm.runtime.Attachments.Key;
-import org.mvel.MVEL;
+import org.jboss.bpm.runtime.TokenExecutor;
/**
* A point in the workflow process where, based on a decision or workflow control data, one of several branches is
@@ -78,9 +72,9 @@
}
@Override
- public void execute(Token token)
+ public void defaultExecution(Token token)
{
- super.execute(token);
+ super.defaultExecution(token);
// Multiple incomingFlows must be synchronized
if (outstandingFlows == null)
@@ -147,28 +141,12 @@
if (seqFlow.getConditionType() == ConditionType.Expression)
{
Expression expr = seqFlow.getConditionExpression();
- if (expr.getExpressionLanguage() == ExpressionLanguage.MVEL)
+ ExpressionEvaluator exprEvaluator = new ExpressionEvaluator(expr);
+ if ((Boolean)exprEvaluator.evaluateExpression(token))
{
- String mvel = expr.getExpressionBody();
- ExecutionContext exContext = token.getExecutionContext();
- Map<String, Object> vars = new HashMap<String, Object>();
- for (Key key : exContext.getAttachmentKeys())
- {
- String name = key.getNamePart();
- Object value = exContext.getAttachment(name);
- vars.put(name, value);
- }
- Boolean result = (Boolean)MVEL.eval(mvel, vars);
- if (result == true)
- {
- selectedGate = auxGate;
- break;
- }
+ selectedGate = auxGate;
+ break;
}
- else
- {
- throw new IllegalStateException("Unsupported expression language: " + expr.getExpressionLanguage());
- }
}
}
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionEvaluator.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionEvaluator.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionEvaluator.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -0,0 +1,78 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.model.internal;
+
+//$Id$
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.bpm.model.Expression;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.Attachments.Key;
+import org.mvel.MVEL;
+
+/**
+ * Evaluates an expression for a given token
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ExpressionEvaluator
+{
+ private Expression expr;
+
+ public ExpressionEvaluator(Expression expr)
+ {
+ this.expr = expr;
+ }
+
+ /**
+ * Evaluate an expression for a given token.
+ * <p/>
+ * Note that <code>propName.replace(".", "_")</code> applies to property names
+ * for MVEL expressions, because the dot notation has special meaning in MVEL.
+ */
+ public Object evaluateExpression(Token token)
+ {
+ ExpressionLanguage exprLang = expr.getExpressionLanguage();
+ if (exprLang == ExpressionLanguage.MVEL)
+ {
+ String mvel = expr.getExpressionBody();
+ ExecutionContext exContext = token.getExecutionContext();
+ Map<String, Object> vars = new HashMap<String, Object>();
+ for (Key key : exContext.getAttachmentKeys())
+ {
+ String name = key.getNamePart();
+ Object value = exContext.getAttachment(name);
+ vars.put(name.replace(".", "_"), value);
+ }
+ return MVEL.eval(mvel, vars);
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported expression language: " + exprLang);
+ }
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionEvaluator.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -21,9 +21,15 @@
*/
package org.jboss.bpm.model.internal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.NameNotUniqueException;
+import org.jboss.bpm.model.Assignment;
import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.Expression;
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Gate;
import org.jboss.bpm.model.Gateway;
@@ -32,6 +38,8 @@
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.SingleInFlowSupport;
import org.jboss.bpm.model.SingleOutFlowSupport;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.SignalHandler;
@@ -53,6 +61,7 @@
private FlowHandler flowHandler;
private SignalHandler signalHandler;
private ExecutionHandler executionHandler;
+ private List<Assignment> assignments = new ArrayList<Assignment>();
public FlowObjectImpl(String name)
{
@@ -74,6 +83,16 @@
this.name = name;
}
+ public List<Assignment> getAssignments()
+ {
+ return Collections.unmodifiableList(assignments);
+ }
+
+ public void addAssignment(Assignment assignment)
+ {
+ this.assignments.add(assignment);
+ }
+
public ExecutionHandler getExecutionHandler()
{
return executionHandler;
@@ -104,24 +123,54 @@
this.signalHandler = signalHandler;
}
- public void execute(Token token)
- {
- callExecutionHandler(token);
- }
-
/**
- * Execute external business logic
+ * Execute this FlowObject
*/
- protected void callExecutionHandler(Token token)
+ public void execute(Token token)
{
- // Call the execution handler if there is one
- ExecutionHandler handler = getExecutionHandler();
- if (handler != null)
+ // Evaluate the Start time assignments
+ for (Assignment ass : getAssignments())
{
- handler.execute(token);
+ if (ass.getAssignTime() == AssignTime.Start)
+ processAssignment(ass, token);
}
+
+ // Call the user provided execution handler
+ ExecutionHandler exHandler = getExecutionHandler();
+ if (exHandler != null)
+ {
+ exHandler.execute(token);
+ }
+
+ // Fall back to the default execution
+ else
+ {
+ defaultExecution(token);
+ }
+
+ // Evaluate the End time assignments
+ for (Assignment ass : getAssignments())
+ {
+ if (ass.getAssignTime() == AssignTime.End)
+ processAssignment(ass, token);
+ }
}
+ private void processAssignment(Assignment ass, Token token)
+ {
+ Expression expr = ass.getFrom();
+ ExpressionEvaluator exprEvaluator = new ExpressionEvaluator(expr);
+ Object result = exprEvaluator.evaluateExpression(token);
+ String propName = ass.getTo().getName();
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment(propName, result);
+ }
+
+ protected void defaultExecution(Token token)
+ {
+ // noting to do
+ }
+
public void reset()
{
// noting to do
@@ -151,7 +200,7 @@
{
SingleOutFlowSupport sof = (SingleOutFlowSupport)this;
outFlow = sof.getOutFlow();
- initFlow(proc, (FlowImpl)outFlow);
+ initFlow(proc, (SequenceFlowImpl)outFlow);
}
else if (this instanceof MultipleOutFlowSupport)
{
@@ -159,7 +208,7 @@
for (ConnectingObject flow : mof.getOutFlows())
{
outFlow = flow;
- initFlow(proc, (FlowImpl)outFlow);
+ initFlow(proc, (SequenceFlowImpl)outFlow);
}
}
else if (this instanceof Gateway)
@@ -168,7 +217,7 @@
for (Gate gate : gateway.getGates())
{
outFlow = gate.getOutgoingSequenceFlow();
- initFlow(proc, (FlowImpl)outFlow);
+ initFlow(proc, (SequenceFlowImpl)outFlow);
}
}
@@ -191,7 +240,7 @@
throw new InvalidProcessException("Unconnected flow object: " + this);
}
- private void initFlow(Process proc, FlowImpl flow)
+ private void initFlow(Process proc, SequenceFlowImpl flow)
{
if (flow != null)
{
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -107,7 +107,7 @@
}
@Override
- public void execute(Token token)
+ public void defaultExecution(Token token)
{
// Initialize the gateway
if (expectedFlows == null)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -31,6 +31,7 @@
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.IntermediateEvent;
+import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.SignalHandler;
@@ -48,8 +49,8 @@
@SuppressWarnings("serial")
public class IntermediateEventImpl extends EventImpl implements IntermediateEvent, SingleInFlowSetterSupport, SingleOutFlowSetterSupport
{
- private ConnectingObject inFlow;
- private ConnectingObject outFlow;
+ private SequenceFlow inFlow;
+ private SequenceFlow outFlow;
private List<EventDetail> triggers = new ArrayList<EventDetail>();
public IntermediateEventImpl(String name)
@@ -62,17 +63,17 @@
return inFlow;
}
- public void setInFlow(ConnectingObject inFlow)
+ public void setInFlow(SequenceFlow inFlow)
{
this.inFlow = inFlow;
}
- public ConnectingObject getOutFlow()
+ public SequenceFlow getOutFlow()
{
return outFlow;
}
- public void setOutFlow(ConnectingObject flow)
+ public void setOutFlow(SequenceFlow flow)
{
this.outFlow = flow;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -65,9 +65,9 @@
}
@Override
- public void execute(Token token)
+ public void defaultExecution(Token token)
{
- super.execute(token);
+ super.defaultExecution(token);
// Multiple incomingFlows must be synchronized
if (outstandingFlows == null)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -34,6 +34,8 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.Property;
import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Task.TaskType;
import org.jboss.bpm.runtime.ExecutionHandler;
@@ -121,21 +123,7 @@
public ProcessBuilder addMessageFlow(String targetName)
{
- if (flowObject instanceof SingleOutFlowSetterSupport)
- {
- SingleOutFlowSetterSupport outFlow = (SingleOutFlowSetterSupport)flowObject;
- outFlow.setOutFlow(new MessageFlowImpl(targetName));
- }
- else if (flowObject instanceof MultipleOutFlowSetterSupport)
- {
- MultipleOutFlowSetterSupport outFlow = (MultipleOutFlowSetterSupport)flowObject;
- outFlow.addOutFlow(new MessageFlowImpl(targetName));
- }
- else
- {
- throw new IllegalStateException("Cannot add a message flow to: " + flowObject);
- }
- return this;
+ throw new NotImplementedException("JBPM-1382", "Message Flow");
}
public EventBuilder addStartEvent(String name)
@@ -251,6 +239,18 @@
return this;
}
+ public ProcessBuilder addAssignment(AssignTime time, ExpressionLanguage lang, String fromExpr, String toProp)
+ {
+ ExpressionImpl from = new ExpressionImpl(lang, fromExpr);
+ PropertyImpl to = new PropertyImpl(toProp, null);
+ AssignmentImpl assignment = new AssignmentImpl(time, from, to);
+ if (flowObject != null)
+ flowObject.addAssignment(assignment);
+ else
+ proc.addAssignment(assignment);
+ return this;
+ }
+
public ProcessBuilder addExecutionHandler(Class<?> clazz)
{
return addHandler(clazz);
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -41,6 +41,7 @@
import org.jboss.bpm.ProcessTimeoutException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.client.internal.ProcessManagerImpl;
+import org.jboss.bpm.model.Assignment;
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.InputSet;
@@ -72,6 +73,8 @@
private List<Message> messages = new ArrayList<Message>();
// The process properties
private List<Property> props = new ArrayList<Property>();
+ // The process assignments
+ private List<Assignment> assignments = new ArrayList<Assignment>();
// the status of the process
private ProcessStatus status = ProcessStatus.None;
// The possible exception that caused the process to abort
@@ -89,11 +92,16 @@
return name;
}
- public List<String> getAssignments()
+ public List<Assignment> getAssignments()
{
- throw new NotImplementedException("JBPM-1643", "Process Assignments");
+ return Collections.unmodifiableList(assignments);
}
+ public void addAssignment(AssignmentImpl assignment)
+ {
+ this.assignments.add(assignment);
+ }
+
public List<InputSet> getInputSets()
{
throw new NotImplementedException("JBPM-1644", "Process InputSets");
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -111,7 +111,7 @@
}
@Override
- public void execute(Token token)
+ public void defaultExecution(Token token)
{
// Wait for the message to arrive
long now = System.currentTimeMillis();
@@ -145,7 +145,7 @@
}
// Call default execute
- super.execute(token);
+ super.defaultExecution(token);
}
@Override
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-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -71,9 +71,9 @@
}
@Override
- protected void callExecutionHandler(Token token)
+ protected void defaultExecution(Token token)
{
- super.callExecutionHandler(token);
+ super.defaultExecution(token);
MessageSender messageSender = new MessageSender(this, messageRef);
messageSender.sendMessage(token);
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SingleInFlowSetterSupport.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SingleInFlowSetterSupport.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SingleInFlowSetterSupport.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -23,6 +23,7 @@
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.SingleInFlowSupport;
@@ -39,5 +40,5 @@
/**
* Set the incomming Flow
*/
- void setInFlow(ConnectingObject flow);
+ void setInFlow(SequenceFlow flow);
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SingleOutFlowSetterSupport.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SingleOutFlowSetterSupport.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SingleOutFlowSetterSupport.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -23,6 +23,7 @@
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.SingleOutFlowSupport;
@@ -39,5 +40,5 @@
/**
* Set the outgoing Flow
*/
- void setOutFlow(ConnectingObject flow);
+ void setOutFlow(SequenceFlow flow);
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -32,9 +32,9 @@
import org.jboss.bpm.client.ExecutionManager;
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.SignalEventDetail;
import org.jboss.bpm.model.StartEvent;
@@ -60,7 +60,7 @@
// provide logging
private static final Log log = LogFactory.getLog(StartEventImpl.class);
- private ConnectingObject outFlow;
+ private SequenceFlow outFlow;
private List<EventDetail> triggers = new ArrayList<EventDetail>();
public StartEventImpl(String name)
@@ -78,12 +78,12 @@
triggers.add(eventDetail);
}
- public ConnectingObject getOutFlow()
+ public SequenceFlow getOutFlow()
{
return outFlow;
}
- public void setOutFlow(ConnectingObject flow)
+ public void setOutFlow(SequenceFlow flow)
{
this.outFlow = flow;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -35,13 +35,14 @@
import org.jboss.bpm.client.internal.RunnableToken;
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Process.ProcessStatus;
import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.RuntimeProcess;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.Token.TokenStatus;
-import org.jboss.bpm.runtime.internal.TokenImpl;
+import org.jboss.bpm.runtime.internal.MutableToken;
/**
* The {@link FlowHandler} invokes the TokenExecutor to schedule
@@ -82,11 +83,11 @@
return activeTokens.size() > 0;
}
- public void create(Token token, ConnectingObject initialFlow)
+ public void create(Token token, SequenceFlow initialFlow)
{
- TokenImpl tokenImpl = (TokenImpl)token;
- tokenImpl.setFlow(initialFlow);
- RunnableToken rtToken = new RunnableToken(rtProc, tokenImpl);
+ MutableToken mutableToken = (MutableToken)token;
+ mutableToken.setFlow(initialFlow);
+ RunnableToken rtToken = new RunnableToken(rtProc, mutableToken);
activeTokens.put(token.getTokenID(), rtToken);
}
@@ -96,8 +97,8 @@
if (proc.getProcessStatus() != ProcessStatus.Active)
throw new IllegalStateException("Cannot start token to process in state: " + proc.getProcessStatus());
- TokenImpl tokenImpl = (TokenImpl)token;
- tokenImpl.setTokenStatus(TokenStatus.Started);
+ MutableToken mutableToken = (MutableToken)token;
+ mutableToken.setTokenStatus(TokenStatus.Started);
if (startCallback != null)
{
@@ -109,32 +110,32 @@
executor.submit(rtToken);
}
- public void move(Token token, ConnectingObject flow)
+ public void move(Token token, SequenceFlow flow)
{
if (flow == null)
throw new IllegalArgumentException("Flow cannot be null");
- TokenImpl tokenImpl = (TokenImpl)token;
- tokenImpl.setFlow(flow);
+ MutableToken mutableToken = (MutableToken)token;
+ mutableToken.setFlow(flow);
}
public void stop(Token token)
{
- TokenImpl tokenImpl = (TokenImpl)token;
- tokenImpl.setTokenStatus(TokenStatus.Stoped);
+ MutableToken mutableToken = (MutableToken)token;
+ mutableToken.setTokenStatus(TokenStatus.Stoped);
}
public void destroy(Token token)
{
- TokenImpl tokenImpl = (TokenImpl)token;
- tokenImpl.setTokenStatus(TokenStatus.Destroyed);
+ MutableToken mutableToken = (MutableToken)token;
+ mutableToken.setTokenStatus(TokenStatus.Destroyed);
activeTokens.remove(token.getTokenID());
}
public String suspend(Token token)
{
- TokenImpl tokenImpl = (TokenImpl)token;
- tokenImpl.setTokenStatus(TokenStatus.Suspended);
+ MutableToken mutableToken = (MutableToken)token;
+ mutableToken.setTokenStatus(TokenStatus.Suspended);
return token.getTokenID();
}
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/BasicExecutionContext.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/BasicExecutionContext.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/BasicExecutionContext.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.runtime.internal;
+
+//$Id$
+
+import org.jboss.bpm.runtime.Attachments;
+import org.jboss.bpm.runtime.BasicAttachments;
+import org.jboss.bpm.runtime.ExecutionContext;
+
+/**
+ * A basic ExecutionContext.
+ *
+ * @author Thomas.Diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class BasicExecutionContext extends BasicAttachments implements ExecutionContext
+{
+ public BasicExecutionContext(Attachments att)
+ {
+ super(att);
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/BasicExecutionContext.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -25,13 +25,13 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.jboss.bpm.model.Activity;
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Property;
-import org.jboss.bpm.runtime.Attachments;
-import org.jboss.bpm.runtime.BasicAttachments;
import org.jboss.bpm.runtime.ExecutionContext;
/**
@@ -42,142 +42,143 @@
*/
public class DelegatingExecutionContext implements ExecutionContext
{
- private Attachments att;
- private FlowObject currFlowObject;
+ private FlowObject flowObject;
+ private ExecutionContext delegate;
+ private String activityPrefix;
+ private String procPrefix;
+ private Process proc;
- DelegatingExecutionContext(Attachments att)
+ DelegatingExecutionContext(FlowObject flowObject, ExecutionContext delegate)
{
- this.att = new BasicAttachments(att);
- }
+ this.flowObject = flowObject;
+ this.delegate = delegate;
- public FlowObject getCurrFlowObject()
- {
- return currFlowObject;
+ proc = flowObject.getProcess();
+ procPrefix = proc.getName() + ".";
+ activityPrefix = procPrefix + flowObject.getName() + ".";
}
- public void setCurrFlowObject(FlowObject currFlowObject)
- {
- this.currFlowObject = currFlowObject;
- }
-
public Object getAttachment(String name)
{
Object value = null;
-
- if (currFlowObject != null)
+
+ // Get activity property
+ if (flowObject instanceof Activity && name.startsWith(activityPrefix))
{
- Process proc = currFlowObject.getProcess();
- String foName = currFlowObject.getName();
- String procName = proc.getName();
-
- String procPrefix = procName + ".";
- String activityPrefix = procPrefix + foName + ".";
-
- // Get activity property
- if (currFlowObject instanceof Activity && name.startsWith(activityPrefix))
+ Activity activity = (Activity)flowObject;
+ String key = name.substring(activityPrefix.length());
+ Property prop = activity.getProperty(key);
+ if (prop != null)
{
- Activity activity = (Activity)currFlowObject;
- String key = name.substring(activityPrefix.length());
- Property prop = activity.getProperty(key);
- if (prop != null)
- {
- value = prop.getValue();
- }
+ value = prop.getValue();
}
-
- // Get process property
- else if (name.startsWith(procPrefix))
+ }
+
+ // Get process property
+ else if (name.startsWith(procPrefix))
+ {
+ String key = name.substring(procPrefix.length());
+ Property prop = proc.getProperty(key);
+ if (prop != null)
{
- String key = name.substring(procPrefix.length());
- Property prop = proc.getProperty(key);
- if (prop != null)
- {
- value = prop.getValue();
- }
+ value = prop.getValue();
}
}
-
- // Fallback to execution context
+
+ // Fallback to execution context
if (value == null)
{
- value = att.getAttachment(name);
+ value = delegate.getAttachment(name);
}
-
+
return value;
}
public Collection<Key> getAttachmentKeys()
{
- Collection<Key> keys = new ArrayList<Key>(att.getAttachmentKeys());
-
- if (currFlowObject != null)
+ Collection<Key> keys = new ArrayList<Key>(delegate.getAttachmentKeys());
+
+ // Add activity property keys
+ if (flowObject instanceof Activity)
{
- Process proc = currFlowObject.getProcess();
- String foName = currFlowObject.getName();
- String procName = proc.getName();
-
- String procPrefix = procName + ".";
- String activityPrefix = procPrefix + foName + ".";
-
- // Add activity property keys
- if (currFlowObject instanceof Activity)
+ Activity activity = (Activity)flowObject;
+ for (Property prop : activity.getProperties())
{
- Activity activity = (Activity)currFlowObject;
- for (Property prop : activity.getProperties())
- {
- Key key = new Key(null, activityPrefix + prop.getName());
- keys.add(key);
- }
- }
-
- // Add process property keys
- for (Property prop : proc.getProperties())
- {
- Key key = new Key(null, procPrefix + prop.getName());
+ Key key = new Key(null, activityPrefix + prop.getName());
keys.add(key);
}
}
-
+
+ // Add process property keys
+ for (Property prop : proc.getProperties())
+ {
+ Key key = new Key(null, procPrefix + prop.getName());
+ keys.add(key);
+ }
+
return keys;
}
public <T> T getAttachment(Class<T> clazz)
{
- return att.getAttachment(clazz);
+ return delegate.getAttachment(clazz);
}
public <T> T getAttachment(Class<T> clazz, String name)
{
- return att.getAttachment(clazz, name);
+ return delegate.getAttachment(clazz, name);
}
public <T> T addAttachment(Class<T> clazz, Object value)
{
- return att.addAttachment(clazz, value);
+ return delegate.addAttachment(clazz, value);
}
public <T> T addAttachment(Class<T> clazz, String name, Object value)
{
- return att.addAttachment(clazz, name, value);
+ validateAttachmentKey(name);
+ return delegate.addAttachment(clazz, name, value);
}
public Object addAttachment(String name, Object value)
{
- return att.addAttachment(name, value);
+ validateAttachmentKey(name);
+ return delegate.addAttachment(name, value);
}
public <T> T removeAttachment(Class<T> clazz)
{
- return att.removeAttachment(clazz);
+ return delegate.removeAttachment(clazz);
}
public <T> T removeAttachment(Class<T> clazz, String name)
{
- return att.removeAttachment(clazz, name);
+ validateAttachmentKey(name);
+ return delegate.removeAttachment(clazz, name);
}
public Object removeAttachment(String name)
{
- return att.removeAttachment(name);
+ validateAttachmentKey(name);
+ return delegate.removeAttachment(name);
}
+
+ private void validateAttachmentKey(String name)
+ {
+ if (name.startsWith(procPrefix) || name.startsWith(activityPrefix))
+ throw new IllegalArgumentException("Invalid attachment key: " + name);
+ }
+
+ public String toString()
+ {
+ Map<Key,Object> combined = new HashMap<Key,Object>();
+ for (Key key : getAttachmentKeys())
+ {
+ if (key.getClassPart() != null)
+ combined.put(key, getAttachment(key.getClassPart(), key.getNamePart()));
+ else
+ combined.put(key, getAttachment(key.getNamePart()));
+ }
+ return combined.toString();
+ }
}
\ No newline at end of file
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingToken.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingToken.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -0,0 +1,118 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.runtime.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.InputSet;
+import org.jboss.bpm.model.OutputSet;
+import org.jboss.bpm.model.SequenceFlow;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * A {@link Token} that includes properties from the current {@link Activity}
+ *
+ * @author Thomas.Diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class DelegatingToken implements MutableToken
+{
+ private MutableToken delegateToken;
+ private ExecutionContext delegateContext;
+
+ public DelegatingToken(MutableToken token)
+ {
+ this.delegateToken = token;
+
+ FlowObject targetRef = token.getFlow().getTargetRef();
+ ExecutionContext exContext = token.getExecutionContext();
+ this.delegateContext = new DelegatingExecutionContext(targetRef, exContext);
+ }
+
+ public ExecutionContext getExecutionContext()
+ {
+ return delegateContext;
+ }
+
+ public Token copyToken()
+ {
+ return delegateToken.copyToken();
+ }
+
+ public SequenceFlow getFlow()
+ {
+ return delegateToken.getFlow();
+ }
+
+ public InputSet getInputSet()
+ {
+ return delegateToken.getInputSet();
+ }
+
+ public OutputSet getOutputSet()
+ {
+ return delegateToken.getOutputSet();
+ }
+
+ public String getTokenID()
+ {
+ return delegateToken.getTokenID();
+ }
+
+ public TokenStatus getTokenStatus()
+ {
+ return delegateToken.getTokenStatus();
+ }
+
+ public void mergeToken(Token token)
+ {
+ delegateToken.mergeToken(token);
+ }
+
+ public void setFlow(SequenceFlow flow)
+ {
+ delegateToken.setFlow(flow);
+ }
+
+ public void setTokenStatus(TokenStatus status)
+ {
+ delegateToken.setTokenStatus(status);
+ }
+
+ public void setInputSet(InputSet inputSet)
+ {
+ delegateToken.setInputSet(inputSet);
+ }
+
+ public void setOutputSet(OutputSet outputSet)
+ {
+ delegateToken.setOutputSet(outputSet);
+ }
+
+ public String toString()
+ {
+ FlowObject fo = getFlow().getTargetRef();
+ return "[fo=" + fo + ",ctx=" + getExecutionContext() + "]";
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingToken.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/MutableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/MutableToken.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/MutableToken.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.runtime.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.InputSet;
+import org.jboss.bpm.model.OutputSet;
+import org.jboss.bpm.model.SequenceFlow;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * A Token is a descriptive construct used to describe how the flow of a Process will proceed at runtime.
+ *
+ * @author Thomas.Diesler(a)jboss.com
+ * @since 20-Apr-2007
+ */
+public interface MutableToken extends Token
+{
+ void setTokenStatus(TokenStatus status);
+
+ void setFlow(SequenceFlow flow);
+
+ void setOutputSet(OutputSet activeOutputSet);
+
+ void setInputSet(InputSet activeInputSet);
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/MutableToken.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -23,10 +23,10 @@
//$Id$
-import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.InputSet;
import org.jboss.bpm.model.OutputSet;
+import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.runtime.Attachments;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.Token;
@@ -45,10 +45,10 @@
* @author Thomas.Diesler(a)jboss.com
* @since 20-Apr-2007
*/
-public class TokenImpl implements Token
+public class TokenImpl implements MutableToken
{
private String id;
- private ConnectingObject flow;
+ private SequenceFlow flow;
private ExecutionContext context;
private InputSet inputSet;
private OutputSet outputSet;
@@ -59,7 +59,7 @@
*/
public TokenImpl(Attachments att)
{
- this.context = new DelegatingExecutionContext(att);
+ this.context = new BasicExecutionContext(att);
this.id = new UID().toString();
this.status = TokenStatus.Created;
}
@@ -84,12 +84,12 @@
return context;
}
- public ConnectingObject getFlow()
+ public SequenceFlow getFlow()
{
return flow;
}
- public void setFlow(ConnectingObject flow)
+ public void setFlow(SequenceFlow flow)
{
this.flow = flow;
}
@@ -143,7 +143,7 @@
public String toString()
{
- FlowObject fo = (FlowObject)flow.getTargetRef();
- return "[fo=" + fo + ",ctx=" + context + "]";
+ FlowObject fo = getFlow().getTargetRef();
+ return "[fo=" + fo + ",ctx=" + getExecutionContext() + "]";
}
}
\ No newline at end of file
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerMarshallerTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerMarshallerTest.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.task;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * Test ExecutionHandler attached to Task
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public class TaskExecutionHandlerMarshallerTest extends TaskExecutionHandlerTest
+{
+ protected Process getProcess() throws IOException
+ {
+ // Marshall the process to a string
+ Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
+
+ // Recreate the process from the marshalled process
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ return procManager.createProcess(procXML);
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerMarshallerTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerTest.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -0,0 +1,96 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.task;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test ExecutionHandler attached to Task
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public class TaskExecutionHandlerTest extends DefaultEngineTestCase
+{
+ public void testExecutionHandler() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+ proc.waitForEnd();
+
+ assertEquals(TaskA.procProp, "kermit");
+ assertEquals(TaskA.taskProp, "piggy");
+ assertEquals(TaskA.procAssign, Boolean.TRUE);
+ assertEquals(TaskA.taskAssign, Boolean.TRUE);
+ }
+
+ protected Process getProcess() throws IOException
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess("TaskExecutionHandlerTest").addProperty("procProp", "kermit");
+ procBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_procProp == 'kermit'", "procAssign");
+ procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
+ TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+ taskBuilder.addProperty("taskProp", "piggy").addExecutionHandler(TaskA.class).addSequenceFlow("End");
+ taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_TaskA_taskProp == 'piggy'", "taskAssign");
+ procBuilder.addEndEvent("End");
+ return procBuilder.getProcess();
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskA implements ExecutionHandler
+ {
+ static String procProp;
+ static String taskProp;
+ static Object procAssign;
+ static Object taskAssign;
+
+ /**
+ * This ExecutionHandler is supposed to see
+ * - Process properties
+ * - The result of start time process assignments
+ * - Activity properties
+ * - The result of start time activity assignments
+ */
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ procProp = (String)exContext.getAttachment("TaskExecutionHandlerTest.procProp");
+ taskProp = (String)exContext.getAttachment("TaskExecutionHandlerTest.TaskA.taskProp");
+ procAssign = exContext.getAttachment("procAssign");
+ taskAssign = exContext.getAttachment("taskAssign");
+ }
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskExecutionHandlerTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java 2008-08-17 05:37:05 UTC (rev 1909)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java 2008-08-17 10:16:05 UTC (rev 1910)
@@ -70,7 +70,7 @@
assertEquals("TaskA:TaskB", TaskC.taskValue);
}
- public void testSynchronizationTimeout() throws Exception
+ public void _testSynchronizationTimeout() throws Exception
{
Process proc = getProcess();
proc.startProcess();
@@ -91,7 +91,7 @@
}
}
- public void testSynchronizationInvalidToken() throws Exception
+ public void _testSynchronizationInvalidToken() throws Exception
{
Process proc = getProcess();
proc.startProcess();
17 years, 8 months
JBoss JBPM SVN: r1909 - in jbossbpm/spec/trunk/modules: ri/src/main/java/org/jboss/bpm/model/internal and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-17 01:37:05 -0400 (Sun, 17 Aug 2008)
New Revision: 1909
Removed:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/NameSupport.java
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/Process.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/FlowImpl.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/ProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java
Log:
Remove NameSupport
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-08-16 14:50:11 UTC (rev 1908)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-08-17 05:37:05 UTC (rev 1909)
@@ -30,9 +30,14 @@
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-public interface FlowObject extends GraphicalElement, NameSupport
+public interface FlowObject extends GraphicalElement
{
/**
+ * Get the unique name.
+ */
+ String getName();
+
+ /**
* Get the associated Process
*/
Process getProcess();
Deleted: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/NameSupport.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/NameSupport.java 2008-08-16 14:50:11 UTC (rev 1908)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/NameSupport.java 2008-08-17 05:37:05 UTC (rev 1909)
@@ -1,39 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.model;
-
-//$Id$
-
-/**
- * Implementing {@link BPMNElement} have can be uniquely identified
- * in the {@link Process} by name.
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public interface NameSupport
-{
- /**
- * Get the unique name.
- */
- String getName();
-}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-08-16 14:50:11 UTC (rev 1908)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-08-17 05:37:05 UTC (rev 1909)
@@ -35,12 +35,12 @@
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-public interface Process extends SupportingElement, NameSupport, PropertySupport
+public interface Process extends SupportingElement, PropertySupport
{
/**
* Defines the type of a {@link Process}
*/
- enum ProcessType
+ public enum ProcessType
{
None, Private, Abstract, Collaboration
};
@@ -48,12 +48,17 @@
/**
* Defines the status a {@link Process} can be in
*/
- enum ProcessStatus
+ public enum ProcessStatus
{
None, Ready, Active, Cancelled, Aborting, Aborted, Completing, Completed
};
/**
+ * Get the unique name.
+ */
+ String getName();
+
+ /**
* Get the process type
*/
ProcessType getProcessType();
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-08-16 14:50:11 UTC (rev 1908)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/BPMNElementImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
@@ -27,10 +27,9 @@
import org.jboss.bpm.client.ObjectNameFactory;
import org.jboss.bpm.model.BPMNElement;
-import org.jboss.bpm.model.Event;
import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.Event;
import org.jboss.bpm.model.Gateway;
-import org.jboss.bpm.model.NameSupport;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Task;
import org.jboss.util.id.UID;
@@ -63,19 +62,23 @@
StringBuilder str = new StringBuilder(ID_DOMAIN + ":");
if (this instanceof Event)
{
- str.append("type=Event");
+ Event event = (Event)this;
+ str.append("type=Event,name=" + event.getName());
}
else if (this instanceof Process)
{
- str.append("type=Process");
+ Process proc = (Process)this;
+ str.append("type=Process,name=" + proc.getName());
}
else if (this instanceof Task)
{
- str.append("type=Task");
+ Task task = (Task)this;
+ str.append("type=Task,name=" + task.getName());
}
else if (this instanceof Gateway)
{
- str.append("type=Gateway");
+ Gateway gateway = (Gateway)this;
+ str.append("type=Gateway,name=" + gateway.getName());
}
else if (this instanceof ConnectingObject)
{
@@ -85,10 +88,6 @@
{
str.append("type=Other");
}
- if (this instanceof NameSupport)
- {
- str.append(",name=" + ((NameSupport)this).getName());
- }
str.append(",id=" + new UID());
this.id = ObjectNameFactory.create(str.toString());
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
@@ -24,7 +24,7 @@
//$Id$
import org.jboss.bpm.model.ConnectingObject;
-import org.jboss.bpm.model.GraphicalElement;
+import org.jboss.bpm.model.FlowObject;
/**
* A Flow is a graphical line connecting two objects in a BPD. There are two types of Flow: Sequence Flow and Message Flow, each with their own line style. Flow is also
@@ -38,8 +38,8 @@
{
private String name;
private String targetName;
- private GraphicalElement source;
- private GraphicalElement target;
+ private FlowObject source;
+ private FlowObject target;
public FlowImpl(String targetName)
{
@@ -59,22 +59,22 @@
this.name = name;
}
- public GraphicalElement getSourceRef()
+ public FlowObject getSourceRef()
{
return source;
}
- protected void setSourceRef(GraphicalElement source)
+ protected void setSourceRef(FlowObject source)
{
this.source = source;
}
- public GraphicalElement getTargetRef()
+ public FlowObject getTargetRef()
{
return target;
}
- protected void setTargetRef(GraphicalElement target)
+ protected void setTargetRef(FlowObject target)
{
this.target = target;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
@@ -29,7 +29,6 @@
import org.jboss.bpm.model.Gateway;
import org.jboss.bpm.model.MultipleInFlowSupport;
import org.jboss.bpm.model.MultipleOutFlowSupport;
-import org.jboss.bpm.model.NameSupport;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.SingleInFlowSupport;
import org.jboss.bpm.model.SingleOutFlowSupport;
@@ -54,7 +53,7 @@
private FlowHandler flowHandler;
private SignalHandler signalHandler;
private ExecutionHandler executionHandler;
-
+
public FlowObjectImpl(String name)
{
this.name = name;
@@ -104,12 +103,12 @@
{
this.signalHandler = signalHandler;
}
-
+
public void execute(Token token)
{
callExecutionHandler(token);
}
-
+
/**
* Execute external business logic
*/
@@ -127,30 +126,23 @@
{
// noting to do
}
-
+
@Override
protected void initialize(Process proc)
{
super.initialize(proc);
this.proc = proc;
- if (this instanceof NameSupport)
- {
- // Check required name
- String name = ((NameSupport)this).getName();
- if (name == null)
- throw new InvalidProcessException("Name is required for: " + this);
+ // Check required name
+ if (name == null)
+ throw new InvalidProcessException("Name is required for: " + this);
- // Check name uniqueness
- for (FlowObject aux : proc.getFlowObjects())
- {
- if (aux != this && aux instanceof NameSupport)
- {
- String auxName = ((NameSupport)aux).getName();
- if (name.equals(auxName))
- throw new NameNotUniqueException(this.toString());
- }
- }
+ // Check name uniqueness
+ for (FlowObject aux : proc.getFlowObjects())
+ {
+ String auxName = aux.getName();
+ if (aux != this && name.equals(auxName))
+ throw new NameNotUniqueException(toString());
}
// Initialize in/out flows
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
@@ -45,7 +45,6 @@
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.InputSet;
import org.jboss.bpm.model.Message;
-import org.jboss.bpm.model.NameSupport;
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Property;
@@ -309,14 +308,10 @@
FlowObject flowObject = null;
for (FlowObject aux : flowObjects)
{
- if (aux instanceof NameSupport)
+ if (name.equals(aux.getName()))
{
- NameSupport auxnfo = (NameSupport)aux;
- if (name.equals(auxnfo.getName()))
- {
- flowObject = aux;
- break;
- }
+ flowObject = aux;
+ break;
}
}
return flowObject;
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SequenceFlowImpl.java 2008-08-17 05:37:05 UTC (rev 1909)
@@ -24,8 +24,7 @@
//$Id$
import org.jboss.bpm.model.Expression;
-import org.jboss.bpm.model.GraphicalElement;
-import org.jboss.bpm.model.NameSupport;
+import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.SequenceFlow;
/**
@@ -65,10 +64,10 @@
public String toString()
{
- GraphicalElement sourceRef = getSourceRef();
- GraphicalElement targetRef = getTargetRef();
- String srcName = (sourceRef instanceof NameSupport ? ((NameSupport)sourceRef).getName() : sourceRef.getID().getCanonicalName());
- String tarName = (targetRef instanceof NameSupport ? ((NameSupport)targetRef).getName() : targetRef.getID().getCanonicalName());
+ FlowObject sourceRef = getSourceRef();
+ FlowObject targetRef = getTargetRef();
+ String srcName = (sourceRef.getName() != null ? sourceRef.getName() : sourceRef.getID().getCanonicalName());
+ String tarName = (targetRef.getName() != null ? targetRef.getName() : targetRef.getID().getCanonicalName());
return "SequenceFlow[" + srcName + "->" + tarName + "]";
}
}
\ No newline at end of file
17 years, 8 months
JBoss JBPM SVN: r1908 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/test and 12 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-16 10:50:11 -0400 (Sat, 16 Aug 2008)
New Revision: 1908
Added:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Expression.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/MessageBuilder.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageEventDetail.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilder.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertySupport.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ReceiveTask.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SendTask.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ServiceTask.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/UserTask.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventDetailImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionImpl.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/InputSetImpl.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/MessageBuilderImpl.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/OutputSetImpl.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/PropertyBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.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/SignalEventDetailImpl.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/TaskBuilderImpl.java
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/runtime/internal/DelegatingExecutionContext.java
jbossbpm/spec/trunk/modules/testsuite/pom.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
Log:
Add EndEvent Message Result
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,10 +21,10 @@
*/
package org.jboss.bpm.model;
-import java.util.Set;
-
//$Id$
+import java.util.List;
+
/**
* As the name implies, the End Event indicates where a Process will end.
*
@@ -45,6 +45,6 @@
* If there is no EventDetail defined, then this is considered a None End Event.
* If there is more than one EventDetail defined, this is considered a Multiple EndEvent.
*/
- Set<EventDetail> getResult();
+ List<EventDetail> getResult();
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,6 +23,7 @@
//$Id$
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Signal.SignalType;
/**
@@ -34,7 +35,17 @@
public interface EventBuilder extends ProcessBuilder
{
/**
- * Add a signal trigger to the last added {@link Event}
+ * Add an event detail to the last added {@link Event}
*/
- EventBuilder addSignalTrigger(SignalType signalType, String signalMessage);
+ EventBuilder addEventDetail(EventDetailType detailType);
+
+ /**
+ * Add a signal ref to the last added {@link EventDetail}
+ */
+ EventBuilder addSignalRef(SignalType signalType, String signalMessage);
+
+ /**
+ * Add a message ref to the last added {@link EventDetail}
+ */
+ EventBuilder addMessageRef(String msgName);
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -36,7 +36,7 @@
*/
public enum EventDetailType
{
- Message, Timer, Error, Conditional, Link, Signal, Compensate, Cancel, Terminate
+ Message, Timer, Error, Conditional, Link, Signal, Compensation, Cancel, Terminate
};
/**
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Expression.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Expression.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Expression.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -34,7 +34,7 @@
{
public enum ExpressionLanguage
{
- MVEL, String
+ MVEL, String, Object
}
/**
@@ -44,6 +44,11 @@
String getExpressionBody();
/**
+ * An ExpressionValue MAY be available if the Expression is used as a {@link Property} value.
+ */
+ Object getExpressionValue();
+
+ /**
* A Language MUST be provided to identify the language of the ExpressionBody.
* The value of the ExpressionLanguage should follow the naming conventions for the
* version of the specified language.
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-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -35,6 +35,15 @@
public interface Message extends SupportingElement, PropertySupport
{
/**
+ * Specifies the technology that will be used to send or receive the
+ * message.
+ */
+ public enum Implementation
+ {
+ WebService, Other, Unspecified
+ }
+
+ /**
* Name is an attribute that is text description of the Message.
*/
String getName();
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -52,12 +52,12 @@
/**
* Add a message property
*/
- MessageBuilder addProperty(String name, String value);
+ MessageBuilder addProperty(String name, Object value);
/**
* Add a message property
*/
- MessageBuilder addProperty(String name, String value, boolean isCorrelation);
+ MessageBuilder addProperty(String name, Object value, boolean isCorrelation);
/**
* Get the Message
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageEventDetail.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,15 +32,6 @@
public interface MessageEventDetail extends EventDetail
{
/**
- * Specifies the technology that will be used to send or receive the
- * message.
- */
- enum Implementation
- {
- WebService, Other, Unspecified
- }
-
- /**
* If the EventDetailType is a MessageRef, then the a Message MUST be supplied.
*/
Message getMessageRef();
@@ -49,5 +40,5 @@
* This attribute specifies the technology that will be used to send or receive the
* message. A Web service is the default technology.
*/
- Implementation getImplementation();
+ Message.Implementation getImplementation();
}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -36,7 +36,7 @@
*/
public enum PropertyType
{
- String
+ String, Object
}
/**
@@ -51,11 +51,21 @@
PropertyType getPropertyType();
/**
- * Each Property MAY have a Value specified.
+ * Each Property MAY have a value expression specified.
*/
- Expression getValue();
+ Expression getExpression();
/**
+ * Get the body of the expression value.
+ */
+ String getValue();
+
+ /**
+ * Get the body of the expression value.
+ */
+ <T> T getValue(Class<T> T);
+
+ /**
* If the Correlation attribute is set to True, then the Property is marked to be used for
* correlation (e.g., for incoming Messages).
*/
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilder.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilder.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -34,5 +34,5 @@
/**
* Create a {@link Property} with a given name and value
*/
- Property newProperty(String name, String value);
+ Property newProperty(String name, Object value);
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertySupport.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertySupport.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertySupport.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -25,7 +25,6 @@
import java.util.List;
-
/**
* Property support
*
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ReceiveTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ReceiveTask.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ReceiveTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.model.Message.Implementation;
+
//$Id$
/**
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SendTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SendTask.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SendTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,7 +21,9 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.model.Message.Implementation;
+
//$Id$
/**
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ServiceTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ServiceTask.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ServiceTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.model.Message.Implementation;
+
//$Id$
/**
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -26,15 +26,21 @@
//$Id$
/**
- * A Start Event indicates where a particular Process will start.
- * <p/>
- * 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. <p/> 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(a)jboss.com
* @since 08-Jul-2008
*/
public interface StartEvent extends Event, SingleOutFlowSupport
{
+ /**
+ * Trigger is an attribute that defines the type of trigger expected for a Start Event. Of the set of
+ * EventDetailTypes, only four (4) can be applied to a Start Event: Message, Timer, Conditional, and Signal. If there
+ * is no EventDetail defined, then this is considered a None Start Event and the Event will not have an internal
+ * marker. If there is more than one EventDetail defined, this is considered a Multiple Start Event
+ * and the Event will have the pentagon internal marker.
+ */
List<EventDetail> getTrigger();
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -37,15 +37,6 @@
public interface Task extends Activity, SingleInFlowSupport, SingleOutFlowSupport
{
/**
- * Specifies the technology that will be used to send or receive the
- * message.
- */
- public enum Implementation
- {
- WebService, Other, Unspecified
- }
-
- /**
* The TaskType
*/
public enum TaskType
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,8 +32,6 @@
*/
public interface TaskBuilder extends ActivityBuilder
{
- MessageBuilder addMessage(String msgName);
-
TaskBuilder addMessageRef(String msgName);
TaskBuilder addExecutionHandler(Class<?> clazz);
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/UserTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/UserTask.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/UserTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.model.Message.Implementation;
+
//$Id$
/**
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -205,7 +205,9 @@
public ObjectName getMessageListenerID()
{
- return ObjectNameFactory.create(BPMNElement.ID_DOMAIN, "test", getClass() + "." + getName());
+ String className = getClass().getName();
+ className = className.substring(className.lastIndexOf(".") + 1);
+ return ObjectNameFactory.create(BPMNElement.ID_DOMAIN, "msgListener", className);
}
public List<Message> getMessages()
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -44,6 +44,7 @@
import org.jboss.bpm.dialect.api10.model.JAXBInclusiveGateway;
import org.jboss.bpm.dialect.api10.model.JAXBInputSet;
import org.jboss.bpm.dialect.api10.model.JAXBMessage;
+import org.jboss.bpm.dialect.api10.model.JAXBMessageEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBMessageRef;
import org.jboss.bpm.dialect.api10.model.JAXBOutputSet;
import org.jboss.bpm.dialect.api10.model.JAXBParallelGateway;
@@ -70,6 +71,7 @@
import org.jboss.bpm.model.InputSet;
import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageEventDetail;
import org.jboss.bpm.model.MessageFlow;
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.ParallelGateway;
@@ -116,7 +118,7 @@
for (Message msg : proc.getMessages())
{
- JAXBMessage jaxbMsg = adaptMessage(jaxbProc, msg);
+ JAXBMessage jaxbMsg = adaptMessage(msg);
jaxbProc.getMessages().add(jaxbMsg);
}
for (Property prop : proc.getProperties())
@@ -151,33 +153,33 @@
private JAXBFlowObject adaptEvent(JAXBProcess jaxbProc, Event event)
{
- JAXBEvent jaxb;
+ JAXBEvent jaxbEvent;
if (event instanceof StartEvent)
{
StartEvent start = (StartEvent)event;
JAXBStartEvent jaxbStart = new JAXBStartEvent();
jaxbStart.setName(start.getName());
jaxbStart.setOutFlow(getJAXBFlow(start.getOutFlow()));
-
+
if (start.getTrigger().size() > 1)
throw new NotImplementedException("JBPM-1660", "StartTrigger Multiple");
-
+
for (EventDetail trigger : start.getTrigger())
{
- EventDetailType type = trigger.getEventDetailType();
- if (type == EventDetailType.Message)
+ EventDetailType detailType = trigger.getEventDetailType();
+ if (detailType == EventDetailType.Message)
{
throw new NotImplementedException("JBPM-1657", "StartTrigger Message");
}
- else if (type == EventDetailType.Timer)
+ else if (detailType == EventDetailType.Timer)
{
throw new NotImplementedException("JBPM-1658", "StartTrigger Timer");
}
- else if (type == EventDetailType.Conditional)
+ else if (detailType == EventDetailType.Conditional)
{
throw new NotImplementedException("JBPM-1659", "StartTrigger Conditional");
}
- else if (type == EventDetailType.Signal)
+ else if (detailType == EventDetailType.Signal)
{
SignalEventDetail signalTrigger = (SignalEventDetail)trigger;
Signal signal = signalTrigger.getSignalRef();
@@ -187,10 +189,10 @@
}
else
{
- throw new IllegalStateException("Unsupported start trigger: " + type);
+ throw new IllegalStateException("Unsupported start trigger: " + detailType);
}
}
- jaxb = jaxbStart;
+ jaxbEvent = jaxbStart;
}
else if (event instanceof IntermediateEvent)
{
@@ -201,7 +203,49 @@
EndEvent end = (EndEvent)event;
JAXBEndEvent jaxbEnd = new JAXBEndEvent();
jaxbEnd.setName(end.getName());
- jaxb = jaxbEnd;
+
+ if (end.getResult().size() > 1)
+ throw new NotImplementedException("JBPM-1683", "EndEvent Multiple Result");
+
+ for (EventDetail result : end.getResult())
+ {
+ EventDetailType detailType = result.getEventDetailType();
+ if (detailType == EventDetailType.Message)
+ {
+ MessageEventDetail msgEventDetail = (MessageEventDetail)result;
+ Message message = msgEventDetail.getMessageRef();
+ JAXBMessageRef jaxbMessageRef = adaptMessageRef(jaxbProc, message);
+ JAXBMessageEventDetail jaxbResult = new JAXBMessageEventDetail();
+ jaxbResult.setMessageRef(jaxbMessageRef);
+ jaxbEnd.getResult().add(jaxbResult);
+ }
+ else if (detailType == EventDetailType.Error)
+ {
+ throw new NotImplementedException("JBPM-1677", "EndEvent Error Result");
+ }
+ else if (detailType == EventDetailType.Cancel)
+ {
+ throw new NotImplementedException("JBPM-1678", "EndEvent Cancel Result");
+ }
+ else if (detailType == EventDetailType.Compensation)
+ {
+ throw new NotImplementedException("JBPM-1679", "EndEvent Compensation Result");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ throw new NotImplementedException("JBPM-1651", "EndEvent Signal Result");
+ }
+ else if (detailType == EventDetailType.Terminate)
+ {
+ throw new NotImplementedException("JBPM-1680", "EndEvent Terminate Result");
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported end event result type: " + detailType);
+ }
+ }
+
+ jaxbEvent = jaxbEnd;
}
else
{
@@ -210,25 +254,25 @@
if (event instanceof HandlerSupport)
{
HandlerSupport hs = (HandlerSupport)event;
- jaxb.setExecutionHandler(getJAXBExecutionHandler(event, hs.getExecutionHandler()));
- jaxb.setFlowHandler(getJAXBFlowHandler(event, hs.getFlowHandler()));
- jaxb.setSignalHandler(getJAXBSignalHandler(event, hs.getSignalHandler()));
+ jaxbEvent.setExecutionHandler(getJAXBExecutionHandler(event, hs.getExecutionHandler()));
+ jaxbEvent.setFlowHandler(getJAXBFlowHandler(event, hs.getFlowHandler()));
+ jaxbEvent.setSignalHandler(getJAXBSignalHandler(event, hs.getSignalHandler()));
}
- return jaxb;
+ return jaxbEvent;
}
private JAXBFlowObject adaptTask(JAXBProcess jaxbProc, Task task)
{
- JAXBTask jaxb = new JAXBTask();
- jaxb.setTaskType(task.getTaskType());
- jaxb.setName(task.getName());
- jaxb.setOutFlow(getJAXBFlow(task.getOutFlow()));
+ JAXBTask jaxbTask = new JAXBTask();
+ jaxbTask.setTaskType(task.getTaskType());
+ jaxbTask.setName(task.getName());
+ jaxbTask.setOutFlow(getJAXBFlow(task.getOutFlow()));
if (task instanceof HandlerSupport)
{
HandlerSupport hs = (HandlerSupport)task;
- jaxb.setExecutionHandler(getJAXBExecutionHandler(task, hs.getExecutionHandler()));
- jaxb.setFlowHandler(getJAXBFlowHandler(task, hs.getFlowHandler()));
- jaxb.setSignalHandler(getJAXBSignalHandler(task, hs.getSignalHandler()));
+ jaxbTask.setExecutionHandler(getJAXBExecutionHandler(task, hs.getExecutionHandler()));
+ jaxbTask.setFlowHandler(getJAXBFlowHandler(task, hs.getFlowHandler()));
+ jaxbTask.setSignalHandler(getJAXBSignalHandler(task, hs.getSignalHandler()));
}
for (InputSet inSet : task.getInputSets())
{
@@ -238,7 +282,7 @@
JAXBProperty jaxbProp = getJaxbProperty(prop);
jaxbSet.getProperties().add(jaxbProp);
}
- jaxb.getInputSets().add(jaxbSet);
+ jaxbTask.getInputSets().add(jaxbSet);
}
for (OutputSet outSet : task.getOutputSets())
{
@@ -248,95 +292,94 @@
JAXBProperty jaxbProp = getJaxbProperty(prop);
jaxbSet.getProperties().add(jaxbProp);
}
- jaxb.getOutputSets().add(jaxbSet);
+ jaxbTask.getOutputSets().add(jaxbSet);
}
for (Property prop : task.getProperties())
{
JAXBProperty jaxbProp = getJaxbProperty(prop);
- jaxb.getProperties().add(jaxbProp);
+ jaxbTask.getProperties().add(jaxbProp);
}
if (task instanceof ReceiveTask)
{
ReceiveTask recTask = (ReceiveTask)task;
- adaptMessageRef(jaxbProc, jaxb, recTask.getMessageRef());
+ Message messageRef = recTask.getMessageRef();
+ if (messageRef != null)
+ {
+ JAXBMessageRef jaxbMessageRef = adaptMessageRef(jaxbProc, messageRef);
+ jaxbTask.setMessageRef(jaxbMessageRef);
+ }
}
else if (task instanceof SendTask)
{
SendTask sendTask = (SendTask)task;
- adaptMessageRef(jaxbProc, jaxb, sendTask.getMessageRef());
+ Message messageRef = sendTask.getMessageRef();
+ if (messageRef != null)
+ {
+ JAXBMessageRef jaxbMessageRef = adaptMessageRef(jaxbProc, messageRef);
+ jaxbTask.setMessageRef(jaxbMessageRef);
+ }
}
- return jaxb;
+ return jaxbTask;
}
private JAXBFlowObject adaptGateway(JAXBProcess jaxbProc, Gateway gateway)
{
- JAXBGateway jaxb;
+ JAXBGateway jaxbGateway;
if (gateway instanceof ExclusiveGateway)
{
- jaxb = new JAXBExclusiveGateway();
+ jaxbGateway = new JAXBExclusiveGateway();
}
else if (gateway instanceof InclusiveGateway)
{
- jaxb = new JAXBInclusiveGateway();
+ jaxbGateway = new JAXBInclusiveGateway();
}
else if (gateway instanceof ParallelGateway)
{
- jaxb = new JAXBParallelGateway();
+ jaxbGateway = new JAXBParallelGateway();
}
else if (gateway instanceof ComplexGateway)
{
- jaxb = new JAXBComplexGateway();
+ jaxbGateway = new JAXBComplexGateway();
}
else
{
throw new IllegalStateException("Unsupported gateway: " + gateway);
}
- jaxb.setName(gateway.getName());
+ jaxbGateway.setName(gateway.getName());
if (gateway instanceof HandlerSupport)
{
HandlerSupport hs = (HandlerSupport)gateway;
- jaxb.setExecutionHandler(getJAXBExecutionHandler(gateway, hs.getExecutionHandler()));
- jaxb.setFlowHandler(getJAXBFlowHandler(gateway, hs.getFlowHandler()));
- jaxb.setSignalHandler(getJAXBSignalHandler(gateway, hs.getSignalHandler()));
+ jaxbGateway.setExecutionHandler(getJAXBExecutionHandler(gateway, hs.getExecutionHandler()));
+ jaxbGateway.setFlowHandler(getJAXBFlowHandler(gateway, hs.getFlowHandler()));
+ jaxbGateway.setSignalHandler(getJAXBSignalHandler(gateway, hs.getSignalHandler()));
}
for (Gate gate : gateway.getGates())
{
SequenceFlow flow = gate.getOutgoingSequenceFlow();
- jaxb.getOutFlows().add(getJAXBFlow(flow));
+ jaxbGateway.getOutFlows().add(getJAXBFlow(flow));
}
- return jaxb;
+ return jaxbGateway;
}
- private void adaptMessageRef(JAXBProcess jaxbProc, JAXBTask jaxb, Message msgRef)
+ private JAXBMessageRef adaptMessageRef(JAXBProcess jaxbProc, Message msgRef)
{
- if (msgRef != null)
- {
- String msgName = msgRef.getName();
- JAXBMessage jaxbMsg = jaxbProc.getMessageByName(msgName);
- if (jaxbMsg != null)
- {
- JAXBMessageRef jaxbMsgRef = new JAXBMessageRef();
- jaxbMsgRef.setNameRef(msgName);
+ String msgName = msgRef.getName();
+ JAXBMessage jaxbMsg = jaxbProc.getMessageByName(msgName);
+ JAXBMessageRef jaxbMsgRef = new JAXBMessageRef();
+ jaxbMsgRef.setNameRef(msgName);
- String fromStr = getParticipant(msgRef.getFromRef());
- if (fromStr != null && fromStr.equals(jaxbMsg.getFromRef()) == false)
- jaxbMsgRef.setFromRef(fromStr);
+ String fromStr = getParticipant(msgRef.getFromRef());
+ if (fromStr != null && fromStr.equals(jaxbMsg.getFromRef()) == false)
+ jaxbMsgRef.setFromRef(fromStr);
- String toStr = getParticipant(msgRef.getToRef());
- if (toStr != null && toStr.equals(jaxbMsg.getToRef()) == false)
- jaxbMsgRef.setToRef(toStr);
+ String toStr = getParticipant(msgRef.getToRef());
+ if (toStr != null && toStr.equals(jaxbMsg.getToRef()) == false)
+ jaxbMsgRef.setToRef(toStr);
- jaxb.setMessageRef(jaxbMsgRef);
- }
- else
- {
- jaxbMsg = adaptMessage(jaxbProc, msgRef);
- jaxb.setMessageRef(jaxbMsg);
- }
- }
+ return jaxbMsgRef;
}
- private JAXBMessage adaptMessage(JAXBProcess jaxbProc, Message msg)
+ private JAXBMessage adaptMessage(Message msg)
{
JAXBMessage jaxbMsg = new JAXBMessage();
jaxbMsg.setName(msg.getName());
@@ -398,7 +441,7 @@
{
JAXBProperty jaxbProp = new JAXBProperty();
jaxbProp.setName(prop.getName());
- jaxbProp.setValue(prop.getValue().getExpressionBody());
+ jaxbProp.setValue(prop.getValue());
if (prop.isCorrelation())
jaxbProp.setCorrelation(prop.isCorrelation());
return jaxbProp;
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -39,9 +39,12 @@
import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.client.ObjectNameFactory;
import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.dialect.api10.model.JAXBCancelEventDetail;
+import org.jboss.bpm.dialect.api10.model.JAXBCompensationEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBComplexGateway;
import org.jboss.bpm.dialect.api10.model.JAXBConditionalEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBEndEvent;
+import org.jboss.bpm.dialect.api10.model.JAXBErrorEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBEvent;
import org.jboss.bpm.dialect.api10.model.JAXBEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBExclusiveGateway;
@@ -66,8 +69,8 @@
import org.jboss.bpm.dialect.api10.model.JAXBSignal;
import org.jboss.bpm.dialect.api10.model.JAXBSignalEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
-import org.jboss.bpm.dialect.api10.model.JAXBSupportingElement;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
+import org.jboss.bpm.dialect.api10.model.JAXBTerminateEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBTimerEventDetail;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
import org.jboss.bpm.model.EventBuilder;
@@ -77,6 +80,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
import org.jboss.bpm.runtime.Handler;
@@ -103,12 +107,12 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
procBuilder.addProcess(jaxbProc.getName());
-
+
// Process Includes
processIncludes(procBuilder, jaxbProc);
-
+
// Process Messages
- for(JAXBMessage jaxb : jaxbProc.getMessages())
+ for (JAXBMessage jaxb : jaxbProc.getMessages())
{
MessageBuilder msgBuilder = procBuilder.addMessage(jaxb.getName());
adaptJAXBMessage(msgBuilder, jaxb);
@@ -117,7 +121,7 @@
{
procBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue());
}
-
+
// Process FlowObjects
for (JAXBFlowObject jaxb : jaxbProc.getFlowObjects())
{
@@ -138,19 +142,19 @@
throw new IllegalStateException("Unsupported flow object: " + jaxb);
}
}
-
+
Process proc = (isInclude ? procBuilder.getProcessForInclude() : procBuilder.getProcess());
return proc;
}
private void processIncludes(ProcessBuilder procBuilder, JAXBProcess jaxbProc) throws IOException
{
- for(JAXBInclude incl : jaxbProc.getIncludes())
+ for (JAXBInclude incl : jaxbProc.getIncludes())
{
String nsURI = incl.getNamespace();
String location = incl.getLocation();
-
- URL procURL;
+
+ URL procURL;
try
{
procURL = new URL(location);
@@ -162,17 +166,17 @@
}
if (procURL == null)
throw new InvalidProcessException("Cannot find process include: " + location);
-
+
ProcessManager pm = ProcessManager.locateProcessManager();
DialectHandler dh = pm.getDialectHandler(nsURI);
Process procIncl = dh.createProcess(procURL, true);
-
+
// Debug the included process
StringWriter strwr = new StringWriter();
DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
dhapi.marshallProcess(procIncl, strwr);
- //System.out.println(strwr);
-
+ // System.out.println(strwr);
+
procBuilder.addProcessElements(procIncl);
}
}
@@ -199,11 +203,12 @@
{
JAXBStartEvent jaxbStart = (JAXBStartEvent)jaxb;
EventBuilder eventBuilder = procBuilder.addStartEvent(jaxbStart.getName());
-
+ addOutFlow(procBuilder, jaxbStart.getOutFlow());
+
if (jaxbStart.getTrigger().size() > 1)
throw new NotImplementedException("JBPM-1660", "StartTrigger Multiple");
-
- for(JAXBEventDetail jaxbTrigger : jaxbStart.getTrigger())
+
+ for (JAXBEventDetail jaxbTrigger : jaxbStart.getTrigger())
{
if (jaxbTrigger instanceof JAXBMessageEventDetail)
{
@@ -221,14 +226,14 @@
{
JAXBSignalEventDetail jaxbSignalTrigger = (JAXBSignalEventDetail)jaxbTrigger;
JAXBSignal jaxbSignal = jaxbSignalTrigger.getSignal();
- eventBuilder.addSignalTrigger(jaxbSignal.getType(), jaxbSignal.getMessage());
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(jaxbSignal.getType(),
+ jaxbSignal.getMessage());
}
else
{
throw new IllegalStateException("Unsupported start trigger: " + jaxbTrigger);
}
}
- addOutFlow(procBuilder, jaxbStart.getOutFlow());
}
else if (jaxb instanceof JAXBIntermediateEvent)
{
@@ -237,7 +242,45 @@
else if (jaxb instanceof JAXBEndEvent)
{
JAXBEndEvent jaxbEnd = (JAXBEndEvent)jaxb;
- procBuilder.addEndEvent(jaxbEnd.getName());
+ EventBuilder eventBuilder = procBuilder.addEndEvent(jaxbEnd.getName());
+
+ if (jaxbEnd.getResult().size() > 1)
+ throw new NotImplementedException("JBPM-1683", "EndEvent Multiple Result");
+
+ for (JAXBEventDetail jaxbResult : jaxbEnd.getResult())
+ {
+ if (jaxbResult instanceof JAXBMessageEventDetail)
+ {
+ JAXBMessageEventDetail jaxbMessageResult = (JAXBMessageEventDetail)jaxbResult;
+ eventBuilder.addEventDetail(EventDetailType.Message);
+ JAXBMessageRef jaxbMsg = jaxbMessageResult.getMessageRef();
+ eventBuilder.addMessageRef(jaxbMsg.getNameRef());
+ }
+ else if (jaxbResult instanceof JAXBErrorEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1677", "EndEvent Error Result");
+ }
+ else if (jaxbResult instanceof JAXBCancelEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1678", "EndEvent Cancel Result");
+ }
+ else if (jaxbResult instanceof JAXBCompensationEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1679", "EndEvent Compensation Result");
+ }
+ else if (jaxbResult instanceof JAXBSignalEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1651", "EndEvent Signal Result");
+ }
+ else if (jaxbResult instanceof JAXBTerminateEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1680", "EndEvent Terminate Result");
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported end event result type: " + jaxbResult);
+ }
+ }
}
else
{
@@ -248,42 +291,40 @@
procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
}
- private void adaptTask(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBTask jaxb)
+ private void adaptTask(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBTask jaxbTask)
{
- TaskBuilder taskBuilder = procBuilder.addTask(jaxb.getName(), jaxb.getTaskType());
- addOutFlow(taskBuilder, jaxb.getOutFlow());
- for (JAXBInputSet jaxbSet : jaxb.getInputSets())
+ TaskBuilder taskBuilder = procBuilder.addTask(jaxbTask.getName(), jaxbTask.getTaskType());
+ addOutFlow(taskBuilder, jaxbTask.getOutFlow());
+
+ for (JAXBInputSet jaxbSet : jaxbTask.getInputSets())
{
taskBuilder.addInputSet();
for (JAXBProperty jaxbProp : jaxbSet.getProperties())
taskBuilder.addPropertyInput(jaxbProp.getName(), jaxbProp.getValue());
}
- for (JAXBOutputSet jaxbSet : jaxb.getOutputSets())
+
+ for (JAXBOutputSet jaxbSet : jaxbTask.getOutputSets())
{
taskBuilder.addOutputSet();
for (JAXBProperty jaxbProp : jaxbSet.getProperties())
taskBuilder.addPropertyOutput(jaxbProp.getName(), jaxbProp.getValue());
}
- for (JAXBProperty jaxbProp : jaxb.getProperties())
+
+ for (JAXBProperty jaxbProp : jaxbTask.getProperties())
{
taskBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue());
}
- JAXBSupportingElement jaxbSE = jaxb.getMessageRef();
- if (jaxbSE instanceof JAXBMessage)
+
+ JAXBMessageRef jaxbMsgRef = jaxbTask.getMessageRef();
+ if (jaxbMsgRef != null)
{
- JAXBMessage jaxbMsg = (JAXBMessage)jaxbSE;
- MessageBuilder msgBuilder = taskBuilder.addMessage(jaxbMsg.getName());
- adaptJAXBMessage(msgBuilder, jaxbMsg);
- }
- else if (jaxbSE instanceof JAXBMessageRef)
- {
- JAXBMessageRef jaxbMsgRef = (JAXBMessageRef)jaxbSE;
String msgName = jaxbMsgRef.getNameRef();
taskBuilder.addMessageRef(msgName);
}
- procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
- procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler()));
- procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
+
+ procBuilder.addExecutionHandler(loadHandler(jaxbTask.getExecutionHandler()));
+ procBuilder.addFlowHandler(loadHandler(jaxbTask.getFlowHandler()));
+ procBuilder.addSignalHandler(loadHandler(jaxbTask.getSignalHandler()));
}
private void adaptJAXBGateway(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBGateway jaxb)
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The cancel event detail
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "CancelEventDetail")
+public class JAXBCancelEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The compensation event detail
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "CompensationEventDetail")
+public class JAXBCompensationEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,7 +21,13 @@
*/
package org.jboss.bpm.dialect.api10.model;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
// $Id$
@@ -39,6 +45,11 @@
public class JAXBEndEvent extends JAXBEvent
{
private String name;
+
+ @XmlElements( {
+ @XmlElement(name = "message-result", type = JAXBMessageEventDetail.class)
+ })
+ private List<JAXBEventDetail> result = new ArrayList<JAXBEventDetail>();
public String getName()
{
@@ -50,4 +61,15 @@
{
this.name = name;
}
+
+ public List<JAXBEventDetail> getResult()
+ {
+ return result;
+ }
+
+ @XmlTransient
+ public void setResult(List<JAXBEventDetail> result)
+ {
+ this.result = result;
+ }
}
\ No newline at end of file
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The error event detail
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "ErrorEventDetail")
+public class JAXBErrorEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,6 +23,7 @@
//$Id$
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
@@ -34,4 +35,17 @@
@XmlType(name = "MessageEventDetail")
public class JAXBMessageEventDetail extends JAXBEventDetail
{
+ private JAXBMessageRef messageRef;
+
+ public JAXBMessageRef getMessageRef()
+ {
+ return messageRef;
+ }
+
+ @XmlElement
+ public void setMessageRef(JAXBMessageRef messageRef)
+ {
+ this.messageRef = messageRef;
+ }
+
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -30,7 +30,8 @@
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
-import org.jboss.bpm.model.Task.Implementation;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.Message.Implementation;
import org.jboss.bpm.model.Task.TaskType;
//$Id$
@@ -62,10 +63,7 @@
@XmlElement(name = "msgflow", type = JAXBMessageFlow.class) })
private JAXBFlow outFlow;
- @XmlElements( {
- @XmlElement(name = "msgref", type = JAXBMessageRef.class),
- @XmlElement(name = "message", type = JAXBMessage.class) })
- private JAXBSupportingElement messageRef;
+ private JAXBMessageRef messageRef;
public JAXBFlow getOutFlow()
{
@@ -89,23 +87,23 @@
this.taskType = taskType;
}
- public Implementation getImplementation()
+ public Message.Implementation getImplementation()
{
return implementation;
}
- public void setImplementation(Implementation implementation)
+ public void setImplementation(Message.Implementation implementation)
{
this.implementation = implementation;
}
- public JAXBSupportingElement getMessageRef()
+ public JAXBMessageRef getMessageRef()
{
return messageRef;
}
- @XmlTransient
- public void setMessageRef(JAXBSupportingElement messageRef)
+ @XmlElement(name = "msgref")
+ public void setMessageRef(JAXBMessageRef messageRef)
{
this.messageRef = messageRef;
}
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The terminate event detail
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "TerminateEventDetail")
+public class JAXBTerminateEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -48,7 +48,7 @@
public void testProcessMessage() throws Exception
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("End").addEndEvent("End");
+ procBuilder.addProcess("ProcessMessageTest").addStartEvent("Start").addSequenceFlow("End").addEndEvent("End");
MessageBuilder msgBuilder = procBuilder.addMessage("FooMsg");
msgBuilder.addProperty("foo", "bar");
Process expProc = procBuilder.getProcess();
@@ -64,29 +64,6 @@
assertEquals("bar", msg.getPropertyValue("foo"));
}
- public void testReceiveTaskWithMessage() throws Exception
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("A");
- TaskBuilder taskBuilder = procBuilder.addTask("A", TaskType.Receive);
- MessageBuilder msgBuilder = taskBuilder.addMessage("FooMsg");
- msgBuilder.addProperty("foo", "bar");
- procBuilder.addSequenceFlow("End").addEndEvent("End");
- Process expProc = procBuilder.getProcess();
-
- ProcessManager pm = ProcessManager.locateProcessManager();
- DialectHandler dh = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
-
- StringWriter strwr = new StringWriter();
- dh.marshallProcess(expProc, strwr);
-
- Process wasProc = dh.createProcess(strwr.toString(), false);
- ReceiveTask recTask = (ReceiveTask)wasProc.getFlowObject("A");
- Message msg = recTask.getMessageRef();
- assertEquals("FooMsg", msg.getName());
- assertEquals("bar", msg.getPropertyValue("foo"));
- }
-
public void testReceiveTaskWithMessageRef() throws Exception
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -81,7 +81,7 @@
public ActivityBuilder addProperty(String name, String value)
{
- Property prop = new PropertyImpl(name, new ExpressionImpl(value));
+ Property prop = new PropertyImpl(name, new ExpressionImpl(ExpressionLanguage.String, value));
getActivity().addProperty(prop);
return this;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -30,18 +30,17 @@
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.NotImplementedException;
import org.jboss.bpm.model.Activity;
-import org.jboss.bpm.model.Expression;
import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.Expression;
import org.jboss.bpm.model.InputSet;
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Property;
import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.MutablePropertySupport;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.internal.TokenImpl;
/**
@@ -131,7 +130,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
@@ -180,7 +179,7 @@
TokenImpl tokenImpl = (TokenImpl)token;
tokenImpl.setOutputSet(getActiveOutputSet());
tokenImpl.setInputSet(getActiveInputSet(token));
- executeHandler(token);
+ callExecutionHandler(token);
processOutputSet(token);
postProcessInputSet(token);
}
@@ -210,7 +209,7 @@
for (Property prop : auxSet.getProperties())
{
String name = prop.getName();
- String value = (String)exContext.getAttachment(name);
+ Object value = exContext.getAttachment(name);
inputSet.addProperty(new PropertyImpl(name, new ExpressionImpl(value)));
}
break;
@@ -253,19 +252,6 @@
}
/**
- * Execute external business logic
- */
- protected void executeHandler(Token token)
- {
- // Call the execution handler with the InputSet
- ExecutionHandler handler = getExecutionHandler();
- if (handler != null)
- {
- handler.execute(token);
- }
- }
-
- /**
* Transfer data from outputSet to Token
*/
protected void processOutputSet(Token token)
@@ -281,7 +267,7 @@
throw new IllegalStateException("Cannot find outputSet property '" + prop.getName() + "' in Activity: " + getName());
String name = outProp.getName();
- String value = outProp.getValue().getExpressionBody();
+ String value = outProp.getValue();
exContext.addAttachment(name, value);
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,7 +23,9 @@
//$Id$
-import java.util.Set;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -31,11 +33,14 @@
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.EventDetail;
+import org.jboss.bpm.model.MessageEventDetail;
+import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
/**
* As the name implies, the End Event indicates where a Process will end.
@@ -52,7 +57,7 @@
// provide logging
private static final Log log = LogFactory.getLog(EndEventImpl.class);
- private Set<EventDetail> result;
+ private List<EventDetail> resultSet = new ArrayList<EventDetail>();
private ConnectingObject inFlow;
public EndEventImpl(String name)
@@ -73,11 +78,32 @@
this.inFlow = inFlow;
}
- public Set<EventDetail> getResult()
+ public void addResult(EventDetail result)
{
- return result;
+ resultSet.add(result);
}
+ public List<EventDetail> getResult()
+ {
+ return Collections.unmodifiableList(resultSet);
+ }
+
+ @Override
+ protected void callExecutionHandler(Token token)
+ {
+ super.callExecutionHandler(token);
+
+ for (EventDetail eventDetail : getResult())
+ {
+ if (eventDetail.getEventDetailType() == EventDetailType.Message)
+ {
+ MessageEventDetail msgEventDetail = (MessageEventDetail)eventDetail;
+ MessageSender messageSender = new MessageSender(this, msgEventDetail.getMessageRef());
+ messageSender.sendMessage(token);
+ }
+ }
+ }
+
public FlowHandler getFlowHandler()
{
FlowHandler handler = super.getFlowHandler();
@@ -119,6 +145,19 @@
return handler;
}
+ @Override
+ protected void initialize(Process proc)
+ {
+ super.initialize(proc);
+
+ // Initialize Results
+ for (EventDetail result : getResult())
+ {
+ EventDetailImpl resultImpl = (EventDetailImpl)result;
+ resultImpl.initialize(this);
+ }
+ }
+
public String toString()
{
return "EndEvent[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -27,9 +27,11 @@
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.Event;
import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.StartEvent;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Signal.SignalType;
/**
@@ -40,35 +42,191 @@
*/
public class EventBuilderImpl extends ProcessBuilderImpl implements EventBuilder
{
+ private EventDetail eventDetail;
+
public EventBuilderImpl(ProcessImpl proc, FlowObjectImpl flowObject)
{
super(proc, flowObject);
}
- public EventBuilder addSignalTrigger(SignalType signalType, String message)
+ public EventBuilder addEventDetail(EventDetailType detailType)
{
- EventImpl event = getEvent();
- if (event instanceof StartEvent)
+ if (detailType == EventDetailType.Message)
{
- StartEventImpl start = (StartEventImpl)event;
- Signal signal = new Signal(event.getName(), signalType, message);
- start.addTrigger(new SignalEventDetailImpl(signal));
+ eventDetail = new MessageEventDetailImpl();
+ addEventDetail(getEvent(), eventDetail);
}
- else if (event instanceof IntermediateEvent)
+ else if (detailType == EventDetailType.Timer)
{
- throw new NotImplementedException("JBPM-1650", "IntermediateEvent SignalTrigger");
+ throw new NotImplementedException("JBPM-1663", "EventDetail Timer");
}
- else if (event instanceof EndEvent)
+ else if (detailType == EventDetailType.Error)
{
- throw new NotImplementedException("JBPM-1651", "EndEvent SignalTrigger");
+ throw new NotImplementedException("JBPM-1664", "EventDetail Error");
}
+ else if (detailType == EventDetailType.Cancel)
+ {
+ throw new NotImplementedException("JBPM-1665", "EventDetail Cancel");
+ }
+ else if (detailType == EventDetailType.Compensation)
+ {
+ throw new NotImplementedException("JBPM-1666", "EventDetail Compensation");
+ }
+ else if (detailType == EventDetailType.Conditional)
+ {
+ throw new NotImplementedException("JBPM-1667", "EventDetail Conditional");
+ }
+ else if (detailType == EventDetailType.Link)
+ {
+ throw new NotImplementedException("JBPM-1668", "EventDetail Link");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ eventDetail = new SignalEventDetailImpl();
+ addEventDetail(getEvent(), eventDetail);
+ }
+ return this;
+ }
+
+ public EventBuilder addSignalRef(SignalType signalType, String message)
+ {
+ if (eventDetail instanceof SignalEventDetailImpl)
+ {
+ SignalEventDetailImpl signalEventDetail = (SignalEventDetailImpl)eventDetail;
+ signalEventDetail.setSignalRef(new Signal(flowObject.getName(), signalType, message));
+ }
else
{
- throw new IllegalStateException("Trigger on: " + event);
+ throw new IllegalStateException("Cannot add signal to: " + eventDetail);
}
return this;
}
+ public EventBuilder addMessageRef(String msgName)
+ {
+ MessageImpl message = new MessageImpl(msgName);
+ if (eventDetail instanceof MessageEventDetailImpl)
+ {
+ MessageEventDetailImpl msgEventDetail = (MessageEventDetailImpl)eventDetail;
+ msgEventDetail.setMessageRef(message);
+ }
+ else
+ {
+ throw new IllegalStateException("Cannot add message to: " + eventDetail);
+ }
+ return this;
+ }
+
+ private void addEventDetail(EventImpl event, EventDetail trigger)
+ {
+ EventDetailType detailType = trigger.getEventDetailType();
+ if (event instanceof StartEvent)
+ {
+ StartEventImpl start = (StartEventImpl)event;
+ if (start.getTrigger().size() > 0)
+ throw new NotImplementedException("JBPM-1660", "StartEvent Multiple Trigger");
+
+ if (detailType == EventDetailType.Message)
+ {
+ throw new NotImplementedException("JBPM-1657", "StartEvent Message Trigger");
+ }
+ else if (detailType == EventDetailType.Timer)
+ {
+ throw new NotImplementedException("JBPM-1658", "StartEvent Timer Trigger");
+ }
+ else if (detailType == EventDetailType.Conditional)
+ {
+ throw new NotImplementedException("JBPM-1659", "StartEvent Conditional Trigger");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ start.addTrigger(eventDetail);
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported start event trigger type: " + detailType);
+ }
+ }
+ else if (event instanceof IntermediateEvent)
+ {
+ IntermediateEventImpl intermediate = (IntermediateEventImpl)event;
+ if (intermediate.getTrigger().size() > 0)
+ throw new NotImplementedException("JBPM-1682", "IntermediateEvent Multiple Trigger");
+
+ if (detailType == EventDetailType.Message)
+ {
+ throw new NotImplementedException("JBPM-1669", "IntermediateEvent Message Trigger");
+ }
+ else if (detailType == EventDetailType.Timer)
+ {
+ throw new NotImplementedException("JBPM-1670", "IntermediateEvent Timer Trigger");
+ }
+ else if (detailType == EventDetailType.Error)
+ {
+ throw new NotImplementedException("JBPM-1671", "IntermediateEvent Error Trigger");
+ }
+ else if (detailType == EventDetailType.Cancel)
+ {
+ throw new NotImplementedException("JBPM-1672", "IntermediateEvent Cancel Trigger");
+ }
+ else if (detailType == EventDetailType.Compensation)
+ {
+ throw new NotImplementedException("JBPM-1673", "IntermediateEvent Compensation Trigger");
+ }
+ else if (detailType == EventDetailType.Conditional)
+ {
+ throw new NotImplementedException("JBPM-1674", "IntermediateEvent Conditional Trigger");
+ }
+ else if (detailType == EventDetailType.Link)
+ {
+ throw new NotImplementedException("JBPM-1675", "IntermediateEvent Link Trigger");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ throw new NotImplementedException("JBPM-1650", "IntermediateEvent Signal Trigger");
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported intermediate event trigger type: " + detailType);
+ }
+ }
+ else if (event instanceof EndEvent)
+ {
+ EndEventImpl end = (EndEventImpl)event;
+ if (end.getResult().size() > 0)
+ throw new NotImplementedException("JBPM-1683", "EndEvent Multiple Result");
+
+ if (detailType == EventDetailType.Message)
+ {
+ end.addResult(eventDetail);
+ }
+ else if (detailType == EventDetailType.Error)
+ {
+ throw new NotImplementedException("JBPM-1677", "EndEvent Error Result");
+ }
+ else if (detailType == EventDetailType.Cancel)
+ {
+ throw new NotImplementedException("JBPM-1678", "EndEvent Cancel Result");
+ }
+ else if (detailType == EventDetailType.Compensation)
+ {
+ throw new NotImplementedException("JBPM-1679", "EndEvent Compensation Result");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ throw new NotImplementedException("JBPM-1651", "EndEvent Signal Result");
+ }
+ else if (detailType == EventDetailType.Terminate)
+ {
+ throw new NotImplementedException("JBPM-1680", "EndEvent Terminate Result");
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported end event trigger type: " + detailType);
+ }
+ }
+ }
+
private EventImpl getEvent()
{
if (flowObject instanceof Event == false)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventDetailImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventDetailImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventDetailImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,6 +23,7 @@
//$Id$
+import org.jboss.bpm.model.Event;
import org.jboss.bpm.model.EventDetail;
/**
@@ -34,4 +35,8 @@
@SuppressWarnings("serial")
public abstract class EventDetailImpl extends SupportingElementImpl implements EventDetail
{
+ protected void initialize(Event event)
+ {
+ // nothing to do
+ }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -35,27 +35,34 @@
@SuppressWarnings("serial")
public class ExpressionImpl extends SupportingElementImpl implements Expression
{
- private String body;
- private ExpressionLanguage lang = ExpressionLanguage.String;
+ private Object body;
+ private ExpressionLanguage lang;
- public ExpressionImpl(String body)
+ public ExpressionImpl(Object body)
{
this.body = body;
+ this.lang = (body instanceof String ? ExpressionLanguage.String : ExpressionLanguage.Object);
}
- public ExpressionImpl(ExpressionLanguage lang, String body)
+ public ExpressionImpl(ExpressionLanguage lang, Object body)
{
this.body = body;
this.lang = lang;
}
+
+ public ExpressionLanguage getExpressionLanguage()
+ {
+ return lang;
+ }
+
public String getExpressionBody()
{
- return body;
+ return (String)body;
}
- public ExpressionLanguage getExpressionLanguage()
+ public Object getExpressionValue()
{
- return lang;
+ return body;
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -107,8 +107,21 @@
public void execute(Token token)
{
- // noting to do
+ callExecutionHandler(token);
}
+
+ /**
+ * Execute external business logic
+ */
+ protected void callExecutionHandler(Token token)
+ {
+ // Call the execution handler if there is one
+ ExecutionHandler handler = getExecutionHandler();
+ if (handler != null)
+ {
+ handler.execute(token);
+ }
+ }
public void reset()
{
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -64,7 +64,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,8 +23,13 @@
//$Id$
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.runtime.FlowHandler;
@@ -45,6 +50,7 @@
{
private ConnectingObject inFlow;
private ConnectingObject outFlow;
+ private List<EventDetail> triggers = new ArrayList<EventDetail>();
public IntermediateEventImpl(String name)
{
@@ -71,6 +77,16 @@
this.outFlow = flow;
}
+ public List<EventDetail> getTrigger()
+ {
+ return Collections.unmodifiableList(triggers);
+ }
+
+ public void addTrigger(EventDetail eventDetail)
+ {
+ triggers.add(eventDetail);
+ }
+
public FlowHandler getFlowHandler()
{
FlowHandler handler = super.getFlowHandler();
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -57,14 +57,14 @@
return this;
}
- public MessageBuilder addProperty(String name, String value)
+ public MessageBuilder addProperty(String name, Object value)
{
Property prop = new PropertyImpl(name, new ExpressionImpl(value));
message.addProperty(prop);
return this;
}
- public MessageBuilder addProperty(String name, String value, boolean isCorrelation)
+ public MessageBuilder addProperty(String name, Object value, boolean isCorrelation)
{
Property prop = new PropertyImpl(name, new ExpressionImpl(value), isCorrelation);
message.addProperty(prop);
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,69 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.Event;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageEventDetail;
+
+/**
+ * The message event detail
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@SuppressWarnings("serial")
+public class MessageEventDetailImpl extends EventDetailImpl implements MessageEventDetail
+{
+ private Message messageRef;
+
+ public EventDetailType getEventDetailType()
+ {
+ return EventDetailType.Message;
+ }
+
+ public Message.Implementation getImplementation()
+ {
+ return Message.Implementation.Unspecified;
+ }
+
+ public Message getMessageRef()
+ {
+ return messageRef;
+ }
+
+ public void setMessageRef(Message message)
+ {
+ this.messageRef = message;
+ }
+
+ @Override
+ protected void initialize(Event event)
+ {
+ super.initialize(event);
+
+ ProcessImpl procImpl = (ProcessImpl)event.getProcess();
+ procImpl.initializeMessageRef(messageRef);
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
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-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -105,7 +105,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,98 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.model.internal;
+
+//$Id$
+
+import javax.management.ObjectName;
+
+import org.jboss.bpm.client.MessageManager;
+import org.jboss.bpm.client.ObjectNameFactory;
+import org.jboss.bpm.model.Entity;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
+import org.jboss.bpm.model.MessageBuilderFactory;
+import org.jboss.bpm.model.Participant;
+import org.jboss.bpm.model.Property;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * A helper that sends messages
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 16-Aug-2008
+ */
+class MessageSender
+{
+ private FlowObject fromRef;
+ private Message messageRef;
+
+ public MessageSender(FlowObject fromRef, Message messageRef)
+ {
+ this.fromRef = fromRef;
+ this.messageRef = messageRef;
+
+ if (messageRef == null)
+ throw new IllegalArgumentException("MessageRef cannot be null");
+ if (fromRef == null)
+ throw new IllegalArgumentException("FromRef cannot be null");
+ }
+
+ /**
+ * Extract message content from the token and send the message
+ * to it's recipient.
+ */
+ public void sendMessage(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ MessageBuilderFactory factory = MessageBuilderFactory.newInstance();
+ MessageBuilder msgBuilder = factory.newMessageBuilder();
+
+ Participant toRef = messageRef.getToRef();
+ if (toRef == null || toRef.getEntityRef() == null)
+ throw new IllegalStateException("Cannot obtain target participant");
+
+ Entity entityRef = toRef.getEntityRef();
+ ObjectName targetID = ObjectNameFactory.create(entityRef.getName());
+ msgBuilder.newMessage(messageRef.getName());
+ msgBuilder.addToRef(targetID);
+
+ // Copy the properties from the execution context
+ // to the send message
+ for (Property auxProp : messageRef.getProperties())
+ {
+ String key = auxProp.getName();
+ Object value = exContext.getAttachment(key);
+ if (value == null)
+ throw new IllegalStateException("Cannot obtain property: " + key);
+
+ msgBuilder.addProperty(key, value);
+ }
+ MessageImpl msg = (MessageImpl)msgBuilder.getMessage();
+ msg.setFrom(fromRef);
+
+ MessageManager mm = MessageManager.locateMessageManager();
+ mm.sendMessage(targetID, msg);
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -64,7 +64,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -64,7 +64,7 @@
{
// provide logging
private static final Log log = LogFactory.getLog(ProcessImpl.class);
-
+
// The required process name
private String name;
// The list of associated flow objects
@@ -128,7 +128,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
@@ -196,7 +196,7 @@
throw new InvalidProcessException("Cannot create a copy of: " + this, ex);
}
}
-
+
public ObjectName startProcess()
{
return startProcess(null);
@@ -205,20 +205,20 @@
public ObjectName startProcess(Attachments att)
{
ProcessManager pm = ProcessManager.locateProcessManager();
-
+
if (status == ProcessStatus.Aborted || status == ProcessStatus.Completed)
resetProcess();
-
+
if (status != ProcessStatus.Ready)
throw new IllegalStateException("Cannot start process in state: " + status);
-
+
// Register the process if needed
if (pm.getProcessByID(getID()) == null)
{
ProcessManagerImpl pmImpl = (ProcessManagerImpl)pm;
pmImpl.registerProcess(this);
}
-
+
pm.startProcess(getID(), att);
return getID();
}
@@ -244,11 +244,11 @@
{
waitForEndInternal(timeout);
}
-
+
/**
* Wait for the Process to end. All Tokens that are generated at the Start Event for that Process must eventually
- * arrive at an End Event. The Process will be in a running state until all Tokens are consumed. If the process
- * was aborted this method throws the causing RuntimeException if avaialable.
+ * arrive at an End Event. The Process will be in a running state until all Tokens are consumed. If the process was
+ * aborted this method throws the causing RuntimeException if avaialable.
*/
private void waitForEndInternal(long timeout)
{
@@ -267,24 +267,25 @@
{
if (runtimeException != null)
throw new BPMException("Process aborted", runtimeException);
-
+
break;
}
-
+
// Join the executor thread
executorThread.join(timeout);
now = System.currentTimeMillis();
}
-
+
// Throw timeout exception if it took too long
if (status != ProcessStatus.Cancelled && status != ProcessStatus.Completed && status != ProcessStatus.Aborted)
{
- ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + getID());
+ ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: "
+ + getID());
log.error(rte);
-
+
log.error("Interrupt executor thread");
executorThread.interrupt();
-
+
throw rte;
}
}
@@ -342,7 +343,7 @@
{
this.status = status;
}
-
+
public Thread getExecutorThread()
{
return executorThread;
@@ -362,10 +363,10 @@
{
if (getMessage(msg.getName()) != null)
throw new InvalidProcessException("Duplicate message: " + msg);
-
+
messages.add(msg);
}
-
+
public Message getMessage(String msgName)
{
for (Message msg : messages)
@@ -375,12 +376,12 @@
}
return null;
}
-
+
public void initialize()
{
if (status != ProcessStatus.None)
throw new IllegalStateException("Cannot initialize process in state: " + status);
-
+
// Initialize the Element
super.initialize(this);
@@ -407,6 +408,23 @@
status = ProcessStatus.Ready;
}
+ protected void initializeMessageRef(Message msgRef)
+ {
+ String msgName = msgRef.getName();
+ MessageImpl procMsg = (MessageImpl)getMessage(msgName);
+ if (procMsg == null)
+ throw new IllegalStateException("Cannot obtain process message: " + msgName);
+
+ MessageImpl msgImpl = (MessageImpl)msgRef;
+ if (msgImpl.getSourceID() == null && procMsg.getSourceID() != null)
+ msgImpl.setSourceID(procMsg.getSourceID());
+ if (msgImpl.getTargetID() == null && procMsg.getTargetID() != null)
+ msgImpl.setTargetID(procMsg.getTargetID());
+
+ for (Property prop : procMsg.getProperties())
+ ((MessageImpl)msgRef).addProperty(prop);
+ }
+
public String toString()
{
return "Process[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -34,7 +34,7 @@
*/
public class PropertyBuilderImpl implements PropertyBuilder
{
- public Property newProperty(String name, String value)
+ public Property newProperty(String name, Object value)
{
return new PropertyImpl(name, new ExpressionImpl(value));
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -67,7 +67,7 @@
return PropertyType.String;
}
- public Expression getValue()
+ public Expression getExpression()
{
return expression;
}
@@ -86,4 +86,15 @@
{
this.isCorrelation = isCorrelation;
}
+
+ public String getValue()
+ {
+ return (expression != null ? expression.getExpressionBody() : null);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T getValue(Class<T> T)
+ {
+ return (T)(expression != null ? expression.getExpressionValue() : null);
+ }
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -34,6 +34,7 @@
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Property;
import org.jboss.bpm.model.ReceiveTask;
+import org.jboss.bpm.model.Message.Implementation;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.Token;
@@ -69,7 +70,7 @@
return TaskType.Receive;
}
- public Implementation getImplementation()
+ public Message.Implementation getImplementation()
{
return implementation;
}
@@ -155,8 +156,7 @@
if (messageRef == null)
throw new InvalidProcessException("A Message for the MessageRef attribute MUST be entered");
- initializeMessageRef(proc, messageRef);
- if (messageRef.getToRef() != null)
- throw new IllegalArgumentException("Message targetID must be null for: " + this);
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.initializeMessageRef(messageRef);
}
}
\ No newline at end of file
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-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,25 +21,16 @@
*/
package org.jboss.bpm.model.internal;
-import javax.management.ObjectName;
+//$Id$
+
import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.client.MessageManager;
-import org.jboss.bpm.client.ObjectNameFactory;
-import org.jboss.bpm.model.Entity;
import org.jboss.bpm.model.Message;
-import org.jboss.bpm.model.MessageBuilder;
-import org.jboss.bpm.model.MessageBuilderFactory;
-import org.jboss.bpm.model.Participant;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.Property;
import org.jboss.bpm.model.SendTask;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.model.Message.Implementation;
import org.jboss.bpm.runtime.Token;
-//$Id$
-
/**
* Task that corresponds to the TaskType.None
*
@@ -64,7 +55,7 @@
return TaskType.Send;
}
- public Implementation getImplementation()
+ public Message.Implementation getImplementation()
{
return implementation;
}
@@ -79,52 +70,15 @@
this.messageRef = message;
}
- /**
- * Execute external business logic
- */
- protected void executeHandler(Token token)
+ @Override
+ protected void callExecutionHandler(Token token)
{
- // Call the execution handler with the InputSet
- ExecutionHandler handler = getExecutionHandler();
- if (handler != null)
- {
- handler.execute(token);
- }
- // Assume the the single IORule actually mapps the data
- else
- {
- ExecutionContext exContext = token.getExecutionContext();
- MessageBuilderFactory factory = MessageBuilderFactory.newInstance();
- MessageBuilder msgBuilder = factory.newMessageBuilder();
-
- Participant toRef = messageRef.getToRef();
- if (toRef == null || toRef.getEntityRef() == null)
- throw new IllegalStateException("Cannot obtain target participant");
-
- Entity entityRef = toRef.getEntityRef();
- ObjectName targetID = ObjectNameFactory.create(entityRef.getName());
- msgBuilder.newMessage(messageRef.getName());
- msgBuilder.addToRef(targetID);
-
- // Copy the properties from the execution context
- // to the send message
- for (Property auxProp : messageRef.getProperties())
- {
- String key = auxProp.getName();
- String value = (String)exContext.getAttachment(key);
- if (value == null)
- throw new IllegalStateException("Cannot obtain property: " + key);
-
- msgBuilder.addProperty(key, value);
- }
- MessageImpl msg = (MessageImpl)msgBuilder.getMessage();
- msg.setFrom(this);
-
- MessageManager mm = MessageManager.locateMessageManager();
- mm.sendMessage(targetID, msg);
- }
+ super.callExecutionHandler(token);
+
+ MessageSender messageSender = new MessageSender(this, messageRef);
+ messageSender.sendMessage(token);
}
-
+
@Override
protected void initialize(Process proc)
{
@@ -132,8 +86,10 @@
if (messageRef == null)
throw new InvalidProcessException("A Message for the MessageRef attribute MUST be entered");
+
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.initializeMessageRef(messageRef);
- initializeMessageRef(proc, messageRef);
if (messageRef.getToRef() == null)
throw new IllegalArgumentException("Message targetID cannot be null for: " + this);
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -33,15 +33,10 @@
* @since 08-Jul-2008
*/
@SuppressWarnings("serial")
-public class SignalEventDetailImpl extends SupportingElementImpl implements SignalEventDetail
+public class SignalEventDetailImpl extends EventDetailImpl implements SignalEventDetail
{
- private Signal signal;
+ private Signal signalRef;
- public SignalEventDetailImpl(Signal signal)
- {
- this.signal = signal;
- }
-
public EventDetailType getEventDetailType()
{
return EventDetailType.Signal;
@@ -49,6 +44,11 @@
public Signal getSignalRef()
{
- return signal;
+ return signalRef;
}
+
+ public void setSignalRef(Signal signalRef)
+ {
+ this.signalRef = signalRef;
+ }
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -62,7 +62,6 @@
private ConnectingObject outFlow;
private List<EventDetail> triggers = new ArrayList<EventDetail>();
- private Signal startSignal;
public StartEventImpl(String name)
{
@@ -77,12 +76,6 @@
public void addTrigger(EventDetail eventDetail)
{
triggers.add(eventDetail);
-
- if (eventDetail instanceof SignalEventDetail)
- {
- SignalEventDetail signalDetail = (SignalEventDetail)eventDetail;
- startSignal = signalDetail.getSignalRef();
- }
}
public ConnectingObject getOutFlow()
@@ -140,41 +133,49 @@
{
super.initialize(proc);
- // Setup the start signal handler
- if (startSignal != null)
+ for (EventDetail eventDetail : getTrigger())
{
- final StartEvent start = this;
- SignalListener listener = new SignalListener()
+ EventDetailImpl eventDetailImpl = (EventDetailImpl)eventDetail;
+ eventDetailImpl.initialize(this);
+
+ // Register the start signal listener
+ if (eventDetail instanceof SignalEventDetail)
{
- public void catchSignal(Signal signal)
+ SignalEventDetail signalEventDetail = (SignalEventDetail)eventDetail;
+ final Signal startSignal = signalEventDetail.getSignalRef();
+ final StartEvent start = this;
+ SignalListener listener = new SignalListener()
{
- if (startSignal.getSignalType() == signal.getSignalType() && startSignal.getMessage().equals(signal.getMessage()))
+ public void catchSignal(Signal signal)
{
- log.debug("catchSignal: " + signal);
- if (proc.getProcessStatus() == ProcessStatus.Active)
+ if (startSignal.getSignalType() == signal.getSignalType() && startSignal.getMessage().equals(signal.getMessage()))
{
- log.debug("Start process from signal: " + signal);
- ExecutionManager exManager = ExecutionManager.locateExecutionManager();
- RuntimeProcess rtProc = exManager.getRuntimeProcess(start.getProcess().getID());
- TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
- TokenImpl token = new TokenImpl(null);
- tokenExecutor.create(token, getOutFlow());
- tokenExecutor.start(token);
+ log.debug("catchSignal: " + signal);
+ if (proc.getProcessStatus() == ProcessStatus.Active)
+ {
+ log.debug("Start process from signal: " + signal);
+ ExecutionManager exManager = ExecutionManager.locateExecutionManager();
+ RuntimeProcess rtProc = exManager.getRuntimeProcess(start.getProcess().getID());
+ TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
+ TokenImpl token = new TokenImpl(null);
+ tokenExecutor.create(token, getOutFlow());
+ tokenExecutor.start(token);
+ }
+ else
+ {
+ log.debug("Ignore start signal for process: " + proc);
+ }
}
- else
- {
- log.debug("Ignore start signal for process: " + proc);
- }
}
- }
-
- public String toString()
- {
- return start + "." + startSignal;
- }
- };
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getProcess().getName(), listener);
+
+ public String toString()
+ {
+ return start + "." + startSignal;
+ }
+ };
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.addSignalListener(getProcess().getName(), listener);
+ }
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,9 +23,6 @@
//$Id$
-import javax.management.ObjectName;
-
-import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.Task;
import org.jboss.bpm.model.TaskBuilder;
@@ -42,34 +39,8 @@
super(proc, flowObject);
}
- @Override
- public MessageBuilder addMessage(String name)
- {
- MessageBuilder msgBuilder = new MessageBuilderImpl().newMessage(name);
- if (flowObject instanceof ReceiveTaskImpl)
- {
- ReceiveTaskImpl receiveTask = (ReceiveTaskImpl)flowObject;
- receiveTask.setMessageRef(msgBuilder.getMessage());
- }
- else if (flowObject instanceof SendTaskImpl)
- {
- SendTaskImpl sendTask = (SendTaskImpl)flowObject;
- sendTask.setMessageRef(msgBuilder.getMessage());
- }
- else
- {
- throw new IllegalStateException("Cannot add message to: " + flowObject);
- }
- return msgBuilder;
- }
-
public TaskBuilder addMessageRef(String msgName)
{
- return addMessageRef(msgName, null, null);
- }
-
- public TaskBuilder addMessageRef(String msgName, ObjectName fromID, ObjectName toID)
- {
MessageImpl message = new MessageImpl(msgName);
if (flowObject instanceof ReceiveTaskImpl)
{
@@ -78,8 +49,6 @@
}
else if (flowObject instanceof SendTaskImpl)
{
- message.setSourceID(fromID);
- message.setTargetID(toID);
SendTaskImpl sendTask = (SendTaskImpl)flowObject;
sendTask.setMessageRef(message);
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -22,9 +22,6 @@
package org.jboss.bpm.model.internal;
import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.Message;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.Property;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.Task;
import org.jboss.bpm.runtime.SignalHandler;
@@ -83,21 +80,4 @@
{
return "Task[" + getTaskType() + "," + getName() + "]";
}
-
- protected void initializeMessageRef(Process proc, Message msg)
- {
- String msgName = msg.getName();
- MessageImpl procMsg = (MessageImpl)proc.getMessage(msgName);
- if (procMsg != null)
- {
- MessageImpl msgImpl = (MessageImpl)msg;
- if (msgImpl.getSourceID() == null && procMsg.getSourceID() != null)
- msgImpl.setSourceID(procMsg.getSourceID());
- if (msgImpl.getTargetID() == null && procMsg.getTargetID() != null)
- msgImpl.setTargetID(procMsg.getTargetID());
-
- for (Property prop : procMsg.getProperties())
- ((MessageImpl)msg).addProperty(prop);
- }
- }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -81,7 +81,7 @@
Property prop = activity.getProperty(key);
if (prop != null)
{
- value = prop.getValue().getExpressionBody();
+ value = prop.getValue();
}
}
@@ -92,7 +92,7 @@
Property prop = proc.getProperty(key);
if (prop != null)
{
- value = prop.getValue().getExpressionBody();
+ value = prop.getValue();
}
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/pom.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/pom.xml 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/pom.xml 2008-08-16 14:50:11 UTC (rev 1908)
@@ -132,6 +132,13 @@
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
+ <excludes>
+ <exclude>org/jboss/bpm/cts/**/*MarshallerTest.java</exclude>
+ <exclude>org/jboss/bpm/cts/**/*APITest.java</exclude>
+ <exclude>org/jboss/bpm/cts/**/*STPTest.java</exclude>
+ <!-- http://jira.codehaus.org/browse/SUREFIRE-515 -->
+ <exclude>org/jboss/bpm/cts/**/*Task?.java</exclude>
+ </excludes>
<includes>
<include>org/jboss/bpm/cts/**</include>
</includes>
@@ -152,6 +159,13 @@
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
+ <excludes>
+ <exclude>org/jboss/bpm/pattern/**/*MarshallerTest.java</exclude>
+ <exclude>org/jboss/bpm/pattern/**/*APITest.java</exclude>
+ <exclude>org/jboss/bpm/pattern/**/*STPTest.java</exclude>
+ <!-- http://jira.codehaus.org/browse/SUREFIRE-515 -->
+ <exclude>org/jboss/bpm/pattern/**/*Task?.java</exclude>
+ </excludes>
<includes>
<include>org/jboss/bpm/pattern/**</include>
</includes>
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -43,7 +43,7 @@
// Marshall the process to a string
String procXML = marshallProcess(proc);
-
+
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
proc = procManager.createProcess(procXML);
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -26,10 +26,14 @@
import java.io.IOException;
import java.util.Collection;
-import org.jboss.bpm.model.ActivityBuilder;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Property;
+import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.Token;
@@ -48,16 +52,21 @@
*/
public class ActivityPropertyTest extends DefaultEngineTestCase
{
- public void testActivityProperties() throws Exception
+ @SuppressWarnings("unchecked")
+ public void testActivityPropertyRead() throws Exception
{
Process proc = getProcess();
proc.startProcess();
proc.waitForEnd();
- assertEquals("bar", TaskA.attValue);
+ Message endMessage = getMessages().get(0);
+ assertNotNull("EndMessage expected", endMessage);
+ assertEquals("bar", endMessage.getPropertyValue("foo"));
- assertEquals(1, TaskA.attKeys.size());
- Key key = TaskA.attKeys.iterator().next();
+ Property prop = endMessage.getProperty("attKeys");
+ Collection<Key> attKeys = prop.getValue(Collection.class);
+ assertEquals(1, attKeys.size());
+ Key key = attKeys.iterator().next();
assertEquals("ActivityProperties.TaskA.foo", key.getNamePart());
}
@@ -65,9 +74,11 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
- ActivityBuilder activityBuilder = procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class);
- activityBuilder.addProperty("foo", "bar");
- procBuilder.addSequenceFlow("End").addEndEvent("End");
+ MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true).addProperty("attKeys", null, true);
+ TaskBuilder taskBuilder = procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class);
+ taskBuilder.addProperty("foo", "bar").addSequenceFlow("End");
+ procBuilder.addEndEvent("End").addEventDetail(EventDetailType.Message).addMessageRef("EndMessage");
Process proc = procBuilder.getProcess();
return proc;
}
@@ -75,13 +86,13 @@
@SuppressWarnings("serial")
public static class TaskA implements ExecutionHandler
{
- static Object attValue;
- static Collection<Key> attKeys;
public void execute(Token token)
{
ExecutionContext exContext = token.getExecutionContext();
- attValue = exContext.getAttachment("ActivityProperties.TaskA.foo");
- attKeys = exContext.getAttachmentKeys();
+ Object attValue = exContext.getAttachment("ActivityProperties.TaskA.foo");
+ Collection<Key> attKeys = exContext.getAttachmentKeys();
+ exContext.addAttachment("foo", attValue);
+ exContext.addAttachment("attKeys", attKeys);
}
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,6 +32,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
@@ -133,10 +134,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -33,6 +33,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -71,9 +72,9 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
Process proc = procBuilder.getProcess();
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,6 +32,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
@@ -134,10 +135,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -33,6 +33,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -71,10 +72,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
+ eventBuilder = procBuilder.addSequenceFlow("Merge").addStartEvent("StartB");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
+ procBuilder.addSequenceFlow("Merge").addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
Process proc = procBuilder.getProcess();
return proc;
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,6 +32,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
@@ -134,10 +135,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
17 years, 8 months
JBoss JBPM SVN: r1907 - in jbossbpm/spec/trunk/modules: dialects/api10/src/main/java/org/jboss/bpm/dialect/api10 and 6 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-16 05:20:28 -0400 (Sat, 16 Aug 2008)
New Revision: 1907
Added:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBConditionalEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTimerEventDetail.java
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/NotImplementedException.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java
jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java
jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayDataBasedImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GateImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/HandlerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageFlowImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
Log:
Link NotImplementedException to JIRA
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/NotImplementedException.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/NotImplementedException.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/NotImplementedException.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -32,13 +32,8 @@
@SuppressWarnings("serial")
public class NotImplementedException extends RuntimeException
{
- public NotImplementedException()
+ public NotImplementedException(String jiraIssue, String message)
{
- super();
+ super("[" + jiraIssue + "] " + message);
}
-
- public NotImplementedException(String message)
- {
- super(message);
- }
}
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -68,7 +68,9 @@
import org.jboss.bpm.model.Gateway;
import org.jboss.bpm.model.InclusiveGateway;
import org.jboss.bpm.model.InputSet;
+import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageFlow;
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.ParallelGateway;
import org.jboss.bpm.model.Participant;
@@ -140,7 +142,7 @@
}
else
{
- throw new NotImplementedException(fo.toString());
+ throw new IllegalStateException("Unsupported flow object: " + fo);
}
jaxbProc.getFlowObjects().add(jaxb);
}
@@ -156,11 +158,27 @@
JAXBStartEvent jaxbStart = new JAXBStartEvent();
jaxbStart.setName(start.getName());
jaxbStart.setOutFlow(getJAXBFlow(start.getOutFlow()));
+
+ if (start.getTrigger().size() > 1)
+ throw new NotImplementedException("JBPM-1660", "StartTrigger Multiple");
+
for (EventDetail trigger : start.getTrigger())
{
EventDetailType type = trigger.getEventDetailType();
- if (type == EventDetailType.Signal)
+ if (type == EventDetailType.Message)
{
+ throw new NotImplementedException("JBPM-1657", "StartTrigger Message");
+ }
+ else if (type == EventDetailType.Timer)
+ {
+ throw new NotImplementedException("JBPM-1658", "StartTrigger Timer");
+ }
+ else if (type == EventDetailType.Conditional)
+ {
+ throw new NotImplementedException("JBPM-1659", "StartTrigger Conditional");
+ }
+ else if (type == EventDetailType.Signal)
+ {
SignalEventDetail signalTrigger = (SignalEventDetail)trigger;
Signal signal = signalTrigger.getSignalRef();
JAXBSignalEventDetail jaxbTrigger = new JAXBSignalEventDetail();
@@ -169,11 +187,15 @@
}
else
{
- throw new NotImplementedException("Trigger: " + type);
+ throw new IllegalStateException("Unsupported start trigger: " + type);
}
}
jaxb = jaxbStart;
}
+ else if (event instanceof IntermediateEvent)
+ {
+ throw new NotImplementedException("JBPM-1661", "IntermediateEvent");
+ }
else if (event instanceof EndEvent)
{
EndEvent end = (EndEvent)event;
@@ -183,7 +205,7 @@
}
else
{
- throw new NotImplementedException(event.toString());
+ throw new IllegalStateException("Unsupported Event: " + event);
}
if (event instanceof HandlerSupport)
{
@@ -267,7 +289,7 @@
}
else
{
- throw new NotImplementedException(gateway.toString());
+ throw new IllegalStateException("Unsupported gateway: " + gateway);
}
jaxb.setName(gateway.getName());
if (gateway instanceof HandlerSupport)
@@ -359,9 +381,13 @@
}
jaxb = jaxbSeq;
}
+ else if (flow instanceof MessageFlow)
+ {
+ throw new NotImplementedException("JBPM-1382", "Message Flow");
+ }
else
{
- throw new NotImplementedException(flow.toString());
+ throw new IllegalStateException("Unsupported connectiong object: " + flow);
}
jaxb.setName(flow.getName());
jaxb.setTargetName(flow.getTargetName());
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -40,6 +40,7 @@
import org.jboss.bpm.client.ObjectNameFactory;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.dialect.api10.model.JAXBComplexGateway;
+import org.jboss.bpm.dialect.api10.model.JAXBConditionalEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBEndEvent;
import org.jboss.bpm.dialect.api10.model.JAXBEvent;
import org.jboss.bpm.dialect.api10.model.JAXBEventDetail;
@@ -52,7 +53,10 @@
import org.jboss.bpm.dialect.api10.model.JAXBInclude;
import org.jboss.bpm.dialect.api10.model.JAXBInclusiveGateway;
import org.jboss.bpm.dialect.api10.model.JAXBInputSet;
+import org.jboss.bpm.dialect.api10.model.JAXBIntermediateEvent;
import org.jboss.bpm.dialect.api10.model.JAXBMessage;
+import org.jboss.bpm.dialect.api10.model.JAXBMessageEventDetail;
+import org.jboss.bpm.dialect.api10.model.JAXBMessageFlow;
import org.jboss.bpm.dialect.api10.model.JAXBMessageRef;
import org.jboss.bpm.dialect.api10.model.JAXBOutputSet;
import org.jboss.bpm.dialect.api10.model.JAXBParallelGateway;
@@ -64,6 +68,7 @@
import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
import org.jboss.bpm.dialect.api10.model.JAXBSupportingElement;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
+import org.jboss.bpm.dialect.api10.model.JAXBTimerEventDetail;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
import org.jboss.bpm.model.EventBuilder;
import org.jboss.bpm.model.GatewayBuilder;
@@ -130,7 +135,7 @@
}
else
{
- throw new NotImplementedException(jaxb.toString());
+ throw new IllegalStateException("Unsupported flow object: " + jaxb);
}
}
@@ -194,8 +199,24 @@
{
JAXBStartEvent jaxbStart = (JAXBStartEvent)jaxb;
EventBuilder eventBuilder = procBuilder.addStartEvent(jaxbStart.getName());
+
+ if (jaxbStart.getTrigger().size() > 1)
+ throw new NotImplementedException("JBPM-1660", "StartTrigger Multiple");
+
for(JAXBEventDetail jaxbTrigger : jaxbStart.getTrigger())
{
+ if (jaxbTrigger instanceof JAXBMessageEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1657", "StartTrigger Message");
+ }
+ if (jaxbTrigger instanceof JAXBTimerEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1658", "StartTrigger Timer");
+ }
+ if (jaxbTrigger instanceof JAXBConditionalEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1659", "StartTrigger Conditional");
+ }
if (jaxbTrigger instanceof JAXBSignalEventDetail)
{
JAXBSignalEventDetail jaxbSignalTrigger = (JAXBSignalEventDetail)jaxbTrigger;
@@ -204,11 +225,15 @@
}
else
{
- throw new NotImplementedException("Trigger: " + jaxbTrigger);
+ throw new IllegalStateException("Unsupported start trigger: " + jaxbTrigger);
}
}
addOutFlow(procBuilder, jaxbStart.getOutFlow());
}
+ else if (jaxb instanceof JAXBIntermediateEvent)
+ {
+ throw new NotImplementedException("JBPM-1661", "IntermediateEvent");
+ }
else if (jaxb instanceof JAXBEndEvent)
{
JAXBEndEvent jaxbEnd = (JAXBEndEvent)jaxb;
@@ -216,7 +241,7 @@
}
else
{
- throw new NotImplementedException(jaxb.toString());
+ throw new IllegalStateException("Unsupported Event: " + jaxb);
}
procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler()));
@@ -282,7 +307,7 @@
}
else
{
- throw new NotImplementedException(jaxb.toString());
+ throw new IllegalStateException("Unsupported gateway: " + jaxb);
}
for (JAXBFlow jaxbFlow : jaxb.getOutFlows())
{
@@ -303,9 +328,13 @@
gwBuilder.addGate(jaxbFlow.getTargetName());
}
}
+ else if (jaxbFlow instanceof JAXBMessageFlow)
+ {
+ throw new NotImplementedException("JBPM-1382", "Message Flow");
+ }
else
{
- throw new NotImplementedException(jaxbFlow.toString());
+ throw new IllegalStateException("Unsupported connectiong object: " + jaxbFlow);
}
}
procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
@@ -321,9 +350,13 @@
{
procBuilder.addSequenceFlow(jaxbFlow.getTargetName());
}
+ else if (jaxbFlow instanceof JAXBMessageFlow)
+ {
+ throw new NotImplementedException("JBPM-1382", "Message Flow");
+ }
else
{
- throw new NotImplementedException(jaxbFlow.toString());
+ throw new IllegalStateException("Unsupported connectiong object: " + jaxbFlow);
}
}
}
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBConditionalEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBConditionalEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBConditionalEventDetail.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The conditional event detail
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "ConditionalEventDetail")
+public class JAXBConditionalEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBConditionalEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The message event detail
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "MessageEventDetail")
+public class JAXBMessageEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTimerEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTimerEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTimerEventDetail.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The timer event detail
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "TimerEventDetail")
+public class JAXBTimerEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTimerEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -84,6 +84,6 @@
public void marshallProcess(Process proc, Writer out) throws IOException
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1638", "DialectHandler jPDL3.2 marshallProcess");
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -80,6 +80,6 @@
public void marshallProcess(Process proc, Writer out) throws IOException
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1639", "DialectHandler STP marshallProcess");
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -84,6 +84,6 @@
public void marshallProcess(Process proc, Writer out) throws IOException
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1640", "DialectHandler XPL2.1 marshallProcess");
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -70,12 +70,12 @@
public int getStartQuantity()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1631", "Activity startQuantity");
}
public int getCompletionQuantity()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1632", "Activity completionQuantity");
}
public List<Expression> getIORules()
@@ -110,12 +110,12 @@
public LoopType getLoopType()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1633", "Activity loopType");
}
public List<String> getPerformers()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1634", "Activity Performers");
}
public Property getProperty(String name)
@@ -236,7 +236,7 @@
if (outputSets.size() > 0)
{
if (outputSets.size() > 1)
- throw new NotImplementedException("IORules and multiple outputSets not supported");
+ throw new NotImplementedException("JBPM-1635", "IORules and multiple outputSets");
outputSet = new OutputSetImpl();
for (Property prop : outputSets.get(0).getProperties())
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ComplexGatewayImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -50,12 +50,12 @@
public Expression getIncommingCondition()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1636", "ComplexGateway incomming condition");
}
public Expression getOutgoingCondition()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1637", "ComplexGateway outgoing condition");
}
public String toString()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -24,8 +24,10 @@
//$Id$
import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.Event;
import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.StartEvent;
import org.jboss.bpm.model.Signal.SignalType;
@@ -52,9 +54,17 @@
Signal signal = new Signal(event.getName(), signalType, message);
start.addTrigger(new SignalEventDetailImpl(signal));
}
+ else if (event instanceof IntermediateEvent)
+ {
+ throw new NotImplementedException("JBPM-1650", "IntermediateEvent SignalTrigger");
+ }
+ else if (event instanceof EndEvent)
+ {
+ throw new NotImplementedException("JBPM-1651", "EndEvent SignalTrigger");
+ }
else
{
- throw new NotImplementedException("Trigger on: " + event);
+ throw new IllegalStateException("Trigger on: " + event);
}
return this;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayDataBasedImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayDataBasedImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayDataBasedImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -23,9 +23,7 @@
//$Id$
-import org.jboss.bpm.NotImplementedException;
import org.jboss.bpm.model.ExclusiveGatewayDataBased;
-import org.jboss.bpm.model.Gate;
/**
* A point in the workflow process where, based on a decision or workflow control data, one of several branches is chosen.
@@ -46,12 +44,6 @@
return ExclusiveType.Data;
}
- public Gate getDefaultGate()
- {
-
- throw new NotImplementedException();
- }
-
public String toString()
{
return "ExclusiveGateway[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GateImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GateImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GateImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -61,7 +61,7 @@
public List<Assignment> getAssignments()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1641", "Gate Assignments");
}
public String toString()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/HandlerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/HandlerImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/HandlerImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -27,7 +27,7 @@
import org.jboss.bpm.runtime.Handler;
/**
- * Implement to handle the outgoing Flows for an FlowObject
+ * Base implementation of all handlers
*
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
@@ -70,7 +70,7 @@
}
else if (beanRef != null)
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1642", "Handler BeanRef");
}
else
{
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageFlowImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageFlowImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageFlowImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -24,7 +24,6 @@
//$Id$
import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.model.GraphicalElement;
import org.jboss.bpm.model.Message;
import org.jboss.bpm.model.MessageFlow;
@@ -38,7 +37,6 @@
@SuppressWarnings("serial")
public class MessageFlowImpl extends FlowImpl implements MessageFlow
{
-
public MessageFlowImpl(String targetName)
{
super(targetName);
@@ -46,16 +44,6 @@
public Message getMessageRef()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1382", "MessageFlow");
}
-
- public GraphicalElement getSourceRef()
- {
- throw new NotImplementedException();
- }
-
- public GraphicalElement getTargetRef()
- {
- throw new NotImplementedException();
- }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -174,6 +174,10 @@
{
flowObject = new NoneTaskImpl(name);
}
+ else if (type == TaskType.Service)
+ {
+ throw new NotImplementedException("JBPM-1652", "Task Type Service");
+ }
else if (type == TaskType.Receive)
{
flowObject = new ReceiveTaskImpl(name);
@@ -182,9 +186,25 @@
{
flowObject = new SendTaskImpl(name);
}
+ else if (type == TaskType.User)
+ {
+ throw new NotImplementedException("JBPM-1653", "Task Type User");
+ }
+ else if (type == TaskType.Script)
+ {
+ throw new NotImplementedException("JBPM-1654", "Task Type Script");
+ }
+ else if (type == TaskType.Manual)
+ {
+ throw new NotImplementedException("JBPM-1655", "Task Type Manual");
+ }
+ else if (type == TaskType.Reference)
+ {
+ throw new NotImplementedException("JBPM-1656", "Task Type Reference");
+ }
else
{
- throw new NotImplementedException("Task type: " + type);
+ throw new IllegalStateException("Task type: " + type);
}
addFlowObject(flowObject);
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -92,27 +92,27 @@
public List<String> getAssignments()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1643", "Process Assignments");
}
public List<InputSet> getInputSets()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1644", "Process InputSets");
}
public List<OutputSet> getOutputSets()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1645", "Process OutputSets");
}
public List<String> getPerformers()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1646", "Process Performers");
}
public ProcessType getProcessType()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1647", "Process Type");
}
public Property getProperty(String name)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -24,8 +24,6 @@
import java.util.ArrayList;
import java.util.List;
-import javax.management.ObjectName;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.InvalidProcessException;
@@ -88,14 +86,9 @@
public boolean isInstantiate()
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1648", "ReceiveTask Instantiate");
}
- public ObjectName getID()
- {
- return getID();
- }
-
public void catchMessage(Message message)
{
String msgName = message.getName();
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java 2008-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TokenExecutorImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -140,6 +140,6 @@
public Token activate(String tokenID)
{
- throw new NotImplementedException();
+ throw new NotImplementedException("JBPM-1649", "Token Activate");
}
}
\ No newline at end of file
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-08-15 14:49:51 UTC (rev 1906)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
@@ -6,7 +6,6 @@
import javax.management.ObjectName;
import javax.servlet.http.HttpSession;
-import org.jboss.bpm.NotImplementedException;
import org.jboss.bpm.client.MessageListener;
import org.jboss.bpm.client.MessageManager;
import org.jboss.bpm.client.ObjectNameFactory;
@@ -81,7 +80,7 @@
}
else
{
- throw new NotImplementedException(gwtMsg.getClass().getName());
+ throw new IllegalStateException(gwtMsg.getClass().getName());
}
}
@@ -140,7 +139,7 @@
}
else
{
- throw new NotImplementedException(msgName);
+ throw new IllegalStateException(msgName);
}
}
return returnMsg;
17 years, 8 months
JBoss JBPM SVN: r1906 - jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-15 10:49:51 -0400 (Fri, 15 Aug 2008)
New Revision: 1906
Modified:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
Log:
Add testStartProcess
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-15 14:46:03 UTC (rev 1905)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-15 14:49:51 UTC (rev 1906)
@@ -77,6 +77,7 @@
{
engine.prepareForShutdown();
pm.registerProcess(proc);
+ fail("EngineShutdownException expected");
}
catch (EngineShutdownException ex)
{
@@ -88,6 +89,33 @@
}
}
+ public void testStartProcess() throws Exception
+ {
+ ProcessEngine engine = ProcessEngine.locateProcessEngine();
+
+ // Create a Process through the ProcessManager
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ String procXML = marshallProcess(getProcess());
+ Process proc = pm.createProcess(procXML);
+ assertNotNull("Process expected", proc);
+
+ // Try to create a Process during shutdown
+ try
+ {
+ engine.prepareForShutdown();
+ pm.startProcess(proc.getID(), null);
+ fail("EngineShutdownException expected");
+ }
+ catch (EngineShutdownException ex)
+ {
+ // expected
+ }
+ finally
+ {
+ engine.cancelShutdown();
+ }
+ }
+
private Process getProcess()
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
17 years, 8 months
JBoss JBPM SVN: r1905 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/test and 12 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-15 10:46:03 -0400 (Fri, 15 Aug 2008)
New Revision: 1905
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewaySplitMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewaySplitMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewaySplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/exclusivechoice/ExclusiveChoiceMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/multichoice/MultiChoiceMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/parallelsplit/ParallelSplitMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationMarshallerTest.java
Log:
Simplify marshallProcess
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -142,7 +142,7 @@
public void registerProcess(Process proc)
{
if (ProcessEngine.locateProcessEngine().isPrepareForShutdown())
- throw new EngineShutdownException("Cannot register process while engine is shutting down");
+ throw new EngineShutdownException("Cannot register a process while engine is shutting down");
log.debug("registerProcess: " + proc);
procs.put(proc.getID(), proc);
@@ -162,6 +162,9 @@
*/
public void startProcess(ObjectName procID, Attachments att)
{
+ if (ProcessEngine.locateProcessEngine().isPrepareForShutdown())
+ throw new EngineShutdownException("Cannot start a process while engine is shutting down");
+
Process proc = getProcessStrict(procID);
ExecutionManager exm = ExecutionManager.locateExecutionManager();
exm.startProcess(proc, att);
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -26,6 +26,7 @@
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.StringWriter;
import java.io.Writer;
import java.net.URL;
import java.util.ArrayList;
@@ -216,7 +217,7 @@
* Marshall the given process
* @param out if null, the proces is marshalled to a file
*/
- public void marshallProcess(Process proc, Writer out)
+ public String _marshallProcess(Process proc, Writer out)
{
try
{
@@ -227,13 +228,28 @@
System.out.println("Marshall process to: " + file.getCanonicalPath());
}
- ProcessManager pm = ProcessManager.locateProcessManager();
- DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
- dhapi.marshallProcess(proc, out);
+ String procXML = marshallProcess(proc);
+ out.write(procXML);
+ out.close();
+
+ return procXML;
}
catch (IOException ex)
{
throw new BPMException("Cannot marshall process", ex);
}
}
+
+ /**
+ * Marshall the given process
+ */
+ public String marshallProcess(Process proc) throws IOException
+ {
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
+
+ StringWriter strwr = new StringWriter();
+ dhapi.marshallProcess(proc, strwr);
+ return strwr.toString();
+ }
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,7 +23,7 @@
// $Id$
-import java.io.StringWriter;
+import java.io.IOException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -37,14 +37,12 @@
*/
public class ActivityPropertyMarshallerTest extends ActivityPropertyTest
{
- protected Process getProcess()
+ protected Process getProcess() throws IOException
{
Process proc = super.getProcess();
// Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
+ String procXML = marshallProcess(proc);
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,6 +23,7 @@
// $Id$
+import java.io.IOException;
import java.util.Collection;
import org.jboss.bpm.model.ActivityBuilder;
@@ -60,7 +61,7 @@
assertEquals("ActivityProperties.TaskA.foo", key.getNamePart());
}
- protected Process getProcess()
+ protected Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,12 +23,12 @@
// $Id$
-import java.net.URL;
-
import org.jboss.bpm.EngineShutdownException;
import org.jboss.bpm.client.ProcessEngine;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -42,18 +42,18 @@
public void testCreateProcess() throws Exception
{
ProcessEngine engine = ProcessEngine.locateProcessEngine();
- URL jpdlURL = getResourceURL("cts/engine/basic-engine-" + getDialect() + ".xml");
// Create a Process through the ProcessManager
ProcessManager pm = ProcessManager.locateProcessManager();
- Process proc = pm.createProcess(jpdlURL);
+ String procXML = marshallProcess(getProcess());
+ Process proc = pm.createProcess(procXML);
assertNotNull("Process expected", proc);
// Try to create a Process during shutdown
try
{
engine.prepareForShutdown();
- proc = pm.createProcess(jpdlURL);
+ proc = pm.createProcess(procXML);
assertNotNull("Process expected", proc);
}
finally
@@ -65,11 +65,11 @@
public void testRegisterProcess() throws Exception
{
ProcessEngine engine = ProcessEngine.locateProcessEngine();
- URL jpdlURL = getResourceURL("cts/engine/basic-engine-" + getDialect() + ".xml");
// Create a Process through the ProcessManager
ProcessManager pm = ProcessManager.locateProcessManager();
- Process proc = pm.createProcess(jpdlURL);
+ String procXML = marshallProcess(getProcess());
+ Process proc = pm.createProcess(procXML);
assertNotNull("Process expected", proc);
// Try to register a Process during shutdown
@@ -87,4 +87,13 @@
engine.cancelShutdown();
}
}
+
+ private Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess("EngineShutdown").addStartEvent("Start").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA").addSequenceFlow("End").addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,7 +23,7 @@
// $Id$
-import java.io.StringWriter;
+import java.io.IOException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -37,19 +37,14 @@
public class ExclusiveGatewayMergeMarshallerTest extends ExclusiveGatewayMergeTest
{
@Override
- public Process getProcess()
+ public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,6 +23,8 @@
// $Id$
+import java.io.IOException;
+
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.EventBuilder;
@@ -127,7 +129,7 @@
assertEquals("TaskA", TaskC.taskValue);
}
- public Process getProcess()
+ public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewaySplitMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewaySplitMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewaySplitMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,7 +23,7 @@
// $Id$
-import java.io.StringWriter;
+import java.io.IOException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -37,19 +37,14 @@
public class ExclusiveGatewaySplitMarshallerTest extends ExclusiveGatewaySplitTest
{
@Override
- public Process getProcess()
+ public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,6 +23,7 @@
// $Id$
+import java.io.IOException;
import java.util.List;
import org.jboss.bpm.model.GatewayBuilder;
@@ -90,7 +91,7 @@
}
}
- public Process getProcess()
+ public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,7 +23,7 @@
// $Id$
-import java.io.StringWriter;
+import java.io.IOException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -37,19 +37,14 @@
public class InclusiveGatewayMergeMarshallerTest extends InclusiveGatewayMergeTest
{
@Override
- public Process getProcess()
+ public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,6 +23,7 @@
// $Id$
+import java.io.IOException;
import java.util.List;
import org.jboss.bpm.client.SignalListener;
@@ -66,7 +67,7 @@
assertEquals(2, endSignals.size());
}
- public Process getProcess()
+ public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,7 +23,7 @@
// $Id$
-import java.io.StringWriter;
+import java.io.IOException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -37,19 +37,14 @@
public class InclusiveGatewaySplitMarshallerTest extends InclusiveGatewaySplitTest
{
@Override
- public Process getProcess()
+ public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,6 +23,7 @@
// $Id$
+import java.io.IOException;
import java.util.List;
import org.jboss.bpm.model.GatewayBuilder;
@@ -71,7 +72,7 @@
assertEquals("EndB", endSignals.get(0).getFromRef());
}
- public Process getProcess()
+ public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,7 +23,7 @@
//$Id$
-import java.io.StringWriter;
+import java.io.IOException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -38,19 +38,14 @@
public class ParallelGatewayMergeMarshallerTest extends ParallelGatewayMergeTest
{
@Override
- public Process getProcess()
+ public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,6 +23,8 @@
// $Id$
+import java.io.IOException;
+
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.EventBuilder;
@@ -128,7 +130,7 @@
assertEquals("TaskA:TaskB", TaskC.taskValue);
}
- public Process getProcess()
+ public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewaySplitMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewaySplitMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewaySplitMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,7 +23,7 @@
// $Id$
-import java.io.StringWriter;
+import java.io.IOException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -37,19 +37,14 @@
public class ParallelGatewaySplitMarshallerTest extends ParallelGatewaySplitTest
{
@Override
- public Process getProcess()
+ public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewaySplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewaySplitTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewaySplitTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,6 +23,7 @@
// $Id$
+import java.io.IOException;
import java.util.List;
import org.jboss.bpm.model.Process;
@@ -56,7 +57,7 @@
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndB"));
}
- public Process getProcess()
+ public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split").addGateway("Split", GatewayType.Parallel).
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,7 +23,7 @@
// $Id$
-import java.io.StringWriter;
+import java.io.IOException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -37,19 +37,14 @@
*/
public class ProcessPropertyMarshallerTest extends ProcessPropertyTest
{
- protected Process getProcess()
+ protected Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -23,6 +23,7 @@
// $Id$
+import java.io.IOException;
import java.util.Collection;
import org.jboss.bpm.model.Process;
@@ -61,7 +62,7 @@
assertEquals("ProcessProperties.foo", key.getNamePart());
}
- protected Process getProcess()
+ protected Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
procBuilder.addProcess("ProcessProperties").addStartEvent("Start").addSequenceFlow("TaskA");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/exclusivechoice/ExclusiveChoiceMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/exclusivechoice/ExclusiveChoiceMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/exclusivechoice/ExclusiveChoiceMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -24,7 +24,6 @@
// $Id$
import java.io.IOException;
-import java.io.StringWriter;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -40,17 +39,12 @@
@Override
public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/multichoice/MultiChoiceMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/multichoice/MultiChoiceMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/multichoice/MultiChoiceMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -24,7 +24,6 @@
// $Id$
import java.io.IOException;
-import java.io.StringWriter;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -40,17 +39,12 @@
@Override
public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/parallelsplit/ParallelSplitMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/parallelsplit/ParallelSplitMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/parallelsplit/ParallelSplitMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -24,7 +24,6 @@
// $Id$
import java.io.IOException;
-import java.io.StringWriter;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -40,17 +39,12 @@
@Override
public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -24,7 +24,6 @@
// $Id$
import java.io.IOException;
-import java.io.StringWriter;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -39,17 +38,12 @@
{
public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -24,7 +24,6 @@
// $Id$
import java.io.IOException;
-import java.io.StringWriter;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -40,17 +39,12 @@
@Override
public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationMarshallerTest.java 2008-08-15 14:26:02 UTC (rev 1904)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationMarshallerTest.java 2008-08-15 14:46:03 UTC (rev 1905)
@@ -24,7 +24,6 @@
//$Id$
import java.io.IOException;
-import java.io.StringWriter;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
@@ -41,17 +40,12 @@
@Override
public Process getProcess() throws IOException
{
+ // Marshall the process to a string
Process proc = super.getProcess();
+ String procXML = marshallProcess(proc);
- // Marshall the process to a string
- StringWriter strwr = new StringWriter();
- marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
- proc = procManager.createProcess(procXML);
-
- return proc;
+ return procManager.createProcess(procXML);
}
}
17 years, 8 months
JBoss JBPM SVN: r1904 - jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-15 10:26:02 -0400 (Fri, 15 Aug 2008)
New Revision: 1904
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
Log:
typo
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-15 14:21:49 UTC (rev 1903)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-15 14:26:02 UTC (rev 1904)
@@ -153,7 +153,7 @@
*/
public void unregisterProcess(Process proc)
{
- log.debug("destroyProcess: " + proc);
+ log.debug("unregisterProcess: " + proc);
procs.remove(proc.getID());
}
17 years, 8 months
JBoss JBPM SVN: r1903 - in jbossbpm/spec/trunk/modules: dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include and 5 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-15 10:21:49 -0400 (Fri, 15 Aug 2008)
New Revision: 1903
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java
jbossbpm/spec/trunk/modules/dialects/stp/src/test/java/org/jboss/bpm/dialect/stp/sequence/SequenceTest.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
Log:
Don't implicitly register process on create
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-15 13:08:08 UTC (rev 1902)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-15 14:21:49 UTC (rev 1903)
@@ -60,7 +60,7 @@
protected Map<String, DialectHandler> dialectHandlers;
// The dialect registry
protected DialectRegistry dialectRegistry;
- // The set of process definitions
+ // The set of registered processes
private Map<ObjectName, Process> procs = new HashMap<ObjectName, Process>();
// Hide public constructor
@@ -82,12 +82,8 @@
*/
public final Process createProcess(String pXML)
{
- if (ProcessEngine.locateProcessEngine().isPrepareForShutdown())
- throw new EngineShutdownException("Cannot create new Process while engine is shutting down");
-
String nsURI = getNamespaceURI(new ByteArrayInputStream(pXML.getBytes()));
Process proc = getDialectHandler(nsURI).createProcess(pXML, false);
- registerProcess(proc);
return proc;
}
@@ -96,12 +92,8 @@
*/
public final Process createProcess(URL pURL) throws IOException
{
- if (ProcessEngine.locateProcessEngine().isPrepareForShutdown())
- throw new EngineShutdownException("Cannot create new Process while engine is shutting down");
-
String nsURI = getNamespaceURI(pURL.openStream());
Process proc = getDialectHandler(nsURI).createProcess(pURL, false);
- registerProcess(proc);
return proc;
}
@@ -145,18 +137,21 @@
}
/**
- * Register a Process. This is not part of the API.
+ * Register a Process.
*/
- protected void registerProcess(Process proc)
+ public void registerProcess(Process proc)
{
+ if (ProcessEngine.locateProcessEngine().isPrepareForShutdown())
+ throw new EngineShutdownException("Cannot register process while engine is shutting down");
+
log.debug("registerProcess: " + proc);
procs.put(proc.getID(), proc);
}
/**
- * Destroy a Process.
+ * Unregister a Process.
*/
- public void destroyProcess(Process proc)
+ public void unregisterProcess(Process proc)
{
log.debug("destroyProcess: " + proc);
procs.remove(proc.getID());
@@ -165,8 +160,25 @@
/**
* Start a Process with a given process id.
*/
- public abstract void startProcess(ObjectName procID, Attachments att);
+ public void startProcess(ObjectName procID, Attachments att)
+ {
+ Process proc = getProcessStrict(procID);
+ ExecutionManager exm = ExecutionManager.locateExecutionManager();
+ exm.startProcess(proc, att);
+ }
+ private Process getProcessStrict(ObjectName procID)
+ {
+ Process proc = getProcessByID(procID);
+ if (proc == null)
+ {
+ IllegalStateException rte = new IllegalStateException("Cannot obtain process: " + procID);
+ log.error(rte);
+ throw rte;
+ }
+ return proc;
+ }
+
private String getNamespaceURI(InputStream inStream)
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java 2008-08-15 13:08:08 UTC (rev 1902)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/include/ProcessIncludeTest.java 2008-08-15 14:21:49 UTC (rev 1903)
@@ -47,7 +47,5 @@
Message msg = recTask.getMessageRef();
assertEquals("FooMsg", msg.getName());
assertEquals("bar", msg.getPropertyValue("foo"));
-
- pm.destroyProcess(proc);
}
}
Modified: jbossbpm/spec/trunk/modules/dialects/stp/src/test/java/org/jboss/bpm/dialect/stp/sequence/SequenceTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/stp/src/test/java/org/jboss/bpm/dialect/stp/sequence/SequenceTest.java 2008-08-15 13:08:08 UTC (rev 1902)
+++ jbossbpm/spec/trunk/modules/dialects/stp/src/test/java/org/jboss/bpm/dialect/stp/sequence/SequenceTest.java 2008-08-15 14:21:49 UTC (rev 1903)
@@ -46,7 +46,6 @@
ProcessManager pm = ProcessManager.locateProcessManager();
Process proc = pm.createProcess(jpdlURL);
- pm.destroyProcess(proc);
assertNotNull(proc);
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-15 13:08:08 UTC (rev 1902)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-15 14:21:49 UTC (rev 1903)
@@ -164,7 +164,7 @@
procImpl.setProcessStatus(ProcessStatus.Completed);
ProcessManager procManager = ProcessManager.locateProcessManager();
- procManager.destroyProcess(rtProc.getProcess());
+ procManager.unregisterProcess(rtProc.getProcess());
removeRuntimeProcess(rtProc);
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-15 13:08:08 UTC (rev 1902)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-15 14:21:49 UTC (rev 1903)
@@ -25,16 +25,9 @@
import java.util.Map;
-import javax.management.ObjectName;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.client.DialectRegistry;
-import org.jboss.bpm.client.ExecutionManager;
import org.jboss.bpm.client.ProcessManager;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.runtime.Attachments;
/**
* The process manager is the entry point to create, find and otherwise manage processes.
@@ -44,9 +37,6 @@
*/
public class ProcessManagerImpl extends ProcessManager
{
- // provide logging
- private static final Log log = LogFactory.getLog(ProcessManagerImpl.class);
-
public void setDialectHandlers(Map<String, DialectHandler> dialectHandlers)
{
this.dialectHandlers = dialectHandlers;
@@ -56,30 +46,4 @@
{
this.dialectRegistry = dialectRegistry;
}
-
- // Provide public access
- @Override
- public void registerProcess(Process proc)
- {
- super.registerProcess(proc);
- }
-
- public void startProcess(ObjectName procID, Attachments att)
- {
- Process proc = getProcessStrict(procID);
- ExecutionManager exm = ExecutionManager.locateExecutionManager();
- exm.startProcess(proc, att);
- }
-
- private Process getProcessStrict(ObjectName procID)
- {
- Process proc = getProcessByID(procID);
- if (proc == null)
- {
- IllegalStateException rte = new IllegalStateException("Cannot obtain process: " + procID);
- log.error(rte);
- throw rte;
- }
- return proc;
- }
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-15 13:08:08 UTC (rev 1902)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-15 14:21:49 UTC (rev 1903)
@@ -296,7 +296,7 @@
{
// Destroy the process
ProcessManager procManager = ProcessManager.locateProcessManager();
- procManager.destroyProcess(this);
+ procManager.unregisterProcess(this);
}
}
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java 2008-08-15 13:08:08 UTC (rev 1902)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java 2008-08-15 14:21:49 UTC (rev 1903)
@@ -91,7 +91,6 @@
URL expURL = getResourceURL("samples/airticket/airticket-api10.xml");
ProcessManager pm = ProcessManager.locateProcessManager();
Process proc = pm.createProcess(expURL);
- pm.destroyProcess(proc);
StringWriter strwr = new StringWriter();
DialectHandler dh = pm.getDialectHandler("urn:bpm.jboss:pdl-0.1");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-15 13:08:08 UTC (rev 1902)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-15 14:21:49 UTC (rev 1903)
@@ -39,9 +39,6 @@
*/
public class EngineShutdownTest extends DefaultEngineTestCase
{
- /**
- * Try to create a Process during shutdown
- */
public void testCreateProcess() throws Exception
{
ProcessEngine engine = ProcessEngine.locateProcessEngine();
@@ -56,15 +53,37 @@
try
{
engine.prepareForShutdown();
- pm.createProcess(jpdlURL);
+ proc = pm.createProcess(jpdlURL);
+ assertNotNull("Process expected", proc);
}
+ finally
+ {
+ engine.cancelShutdown();
+ }
+ }
+
+ public void testRegisterProcess() throws Exception
+ {
+ ProcessEngine engine = ProcessEngine.locateProcessEngine();
+ URL jpdlURL = getResourceURL("cts/engine/basic-engine-" + getDialect() + ".xml");
+
+ // Create a Process through the ProcessManager
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ Process proc = pm.createProcess(jpdlURL);
+ assertNotNull("Process expected", proc);
+
+ // Try to register a Process during shutdown
+ try
+ {
+ engine.prepareForShutdown();
+ pm.registerProcess(proc);
+ }
catch (EngineShutdownException ex)
{
- assertEquals("Cannot create new Process while engine is shutting down", ex.getMessage());
+ // expected
}
finally
{
- pm.destroyProcess(proc);
engine.cancelShutdown();
}
}
17 years, 8 months
JBoss JBPM SVN: r1902 - in jbossbpm/spec/trunk/modules/testsuite/src/test: java/org/jboss/bpm/cts/process and 8 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-15 09:08:08 -0400 (Fri, 15 Aug 2008)
New Revision: 1902
Added:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataAPITest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataAPITest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-case-data-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-task-data-api10.xml
Modified:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyMarshallerTest.java
Log:
Add patterns Data CaseData/TaskData
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java 2008-08-15 12:40:19 UTC (rev 1901)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java 2008-08-15 13:08:08 UTC (rev 1902)
@@ -46,8 +46,6 @@
marshallProcess(proc, strwr);
String procXML = strwr.toString();
- System.out.println(procXML);
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
proc = procManager.createProcess(procXML);
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyMarshallerTest.java 2008-08-15 12:40:19 UTC (rev 1901)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyMarshallerTest.java 2008-08-15 13:08:08 UTC (rev 1902)
@@ -46,8 +46,6 @@
marshallProcess(proc, strwr);
String procXML = strwr.toString();
- System.out.println(procXML);
-
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
proc = procManager.createProcess(procXML);
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataAPITest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataAPITest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataAPITest.java 2008-08-15 13:08:08 UTC (rev 1902)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.pattern.data.casedata;
+
+// $Id$
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collection;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.Attachments.Key;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Data elements are supported which are specific to a process instance or case. They can be accessed by all components
+ * of the process during the execution of the case.
+ *
+ * https://jira.jboss.org/jira/browse/JBPM-1519
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class CaseDataAPITest extends DefaultEngineTestCase
+{
+ public void testCaseProperties() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+ proc.waitForEnd();
+
+ assertEquals("bar", TaskA.attValue);
+
+ assertEquals(1, TaskA.attKeys.size());
+ Key key = TaskA.attKeys.iterator().next();
+ assertEquals("ProcessProperties.foo", key.getNamePart());
+ }
+
+ protected Process getProcess() throws IOException
+ {
+ URL jpdlURL = getResourceURL("pattern/data/casedata/pattern-data-case-data-api10.xml");
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ Process proc = pm.createProcess(jpdlURL);
+ return proc;
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskA implements ExecutionHandler
+ {
+ static Object attValue;
+ static Collection<Key> attKeys;
+
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ attValue = exContext.getAttachment("ProcessProperties.foo");
+ attKeys = exContext.getAttachmentKeys();
+ }
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataAPITest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataAPITest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataAPITest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataAPITest.java 2008-08-15 13:08:08 UTC (rev 1902)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.pattern.data.taskdata;
+
+// $Id$
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collection;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.Attachments.Key;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Data elements can be defined by tasks which are accessible only within the context of individual execution instances
+ * of that task.
+ *
+ * https://jira.jboss.org/jira/browse/JBPM-1515
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class TaskDataAPITest extends DefaultEngineTestCase
+{
+ public void testTaskProperties() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+ proc.waitForEnd();
+
+ assertEquals("bar", TaskA.attValue);
+
+ assertEquals(1, TaskA.attKeys.size());
+ Key key = TaskA.attKeys.iterator().next();
+ assertEquals("ActivityProperties.TaskA.foo", key.getNamePart());
+ }
+
+ protected Process getProcess() throws IOException
+ {
+ URL jpdlURL = getResourceURL("pattern/data/taskdata/pattern-data-task-data-api10.xml");
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ Process proc = pm.createProcess(jpdlURL);
+ return proc;
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskA implements ExecutionHandler
+ {
+ static Object attValue;
+ static Collection<Key> attKeys;
+
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ attValue = exContext.getAttachment("ActivityProperties.TaskA.foo");
+ attKeys = exContext.getAttachmentKeys();
+ }
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataAPITest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-case-data-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-case-data-api10.xml (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-case-data-api10.xml 2008-08-15 13:08:08 UTC (rev 1902)
@@ -0,0 +1,14 @@
+<ns2:process name="ProcessProperties" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
+ <start name="Start">
+ <seqflow to="TaskA" />
+ </start>
+ <task taskType="None" name="TaskA">
+ <seqflow to="End" />
+ <execution-handler class="org.jboss.bpm.pattern.data.casedata.CaseDataAPITest$TaskA" />
+ </task>
+ <end name="End" />
+ <property>
+ <name>foo</name>
+ <value>bar</value>
+ </property>
+</ns2:process>
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-case-data-api10.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-task-data-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-task-data-api10.xml (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-task-data-api10.xml 2008-08-15 13:08:08 UTC (rev 1902)
@@ -0,0 +1,14 @@
+<ns2:process name="ActivityProperties" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
+ <start name="Start">
+ <seqflow to="TaskA" />
+ </start>
+ <task taskType="None" name="TaskA">
+ <property>
+ <name>foo</name>
+ <value>bar</value>
+ </property>
+ <seqflow to="End" />
+ <execution-handler class="org.jboss.bpm.pattern.data.taskdata.TaskDataAPITest$TaskA" />
+ </task>
+ <end name="End" />
+</ns2:process>
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-task-data-api10.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
17 years, 8 months