[jbpm-commits] JBoss JBPM SVN: r1982 - in jbossbpm/spec/trunk: modules/api/src/main/java/org/jboss/bpm/client and 28 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Aug 22 06:09:28 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-08-22 06:09:27 -0400 (Fri, 22 Aug 2008)
New Revision: 1982
Added:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SupportingElement.java
Removed:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/spec/SupportingElement.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/SignalListener.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/model/AbstractElement.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/GraphicalElement.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/Signal.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/SignalHandler.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/ri/client/ExecutionManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ActivityImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EndEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowObjectImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GraphicalElementImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/IntermediateEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ReceiveTaskImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SendTaskImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SubProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SupportingElementImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TaskImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TokenExecutorImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/spec/Condition.java
jbossbpm/spec/trunk/modules/ri/src/test/java/org/jboss/bpm/runtime/ExecutionManagerTest.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/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/exclusive/ExclusiveGatewaySplitTest.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/InclusiveGatewaySplitTest.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/ParallelGatewaySplitTest.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/cts/processmanager/ProcessManagerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/signalmanager/SignalManagerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/startevent/StartEventSignalTest.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/pattern/control/exclusivechoice/ExclusiveChoiceTest.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/parallelsplit/ParallelSplitTest.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
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/synchronization/pattern-control-synchronization-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-casedata-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-taskdata-api10.xml
jbossbpm/spec/trunk/pom.xml
Log:
Refactor signal handling
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -23,8 +23,11 @@
//$Id$
+import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import javax.management.ObjectName;
@@ -61,21 +64,39 @@
*/
public void addMessageListener(MessageListener listener)
{
- if (hasMessageListener(listener.getID()))
- throw new IllegalStateException("Listener already registered: " + listener.getID());
+ synchronized (listeners)
+ {
+ if (hasMessageListener(listener.getID()))
+ throw new IllegalStateException("Listener already registered: " + listener.getID());
- log.debug("addMessageListener: " + listener.getID());
- listeners.put(listener.getID(), listener);
+ log.debug("addMessageListener: " + listener.getID());
+ listeners.put(listener.getID(), listener);
+ }
}
/**
+ * Get the set of registered MessageListeners
+ */
+ public Set<MessageListener> getMessageListeners()
+ {
+ synchronized (listeners)
+ {
+ HashSet<MessageListener> set = new HashSet<MessageListener>(listeners.values());
+ return Collections.unmodifiableSet(set);
+ }
+ }
+
+ /**
* Get a MessageListener for a given ID
*
* @return null if there is none
*/
public MessageListener getMessageListener(ObjectName listenerID)
{
- return listeners.get(listenerID);
+ synchronized (listeners)
+ {
+ return listeners.get(listenerID);
+ }
}
/**
@@ -91,8 +112,11 @@
*/
public void removeMessageListener(ObjectName listenerID)
{
- log.debug("removeMessageListener: " + listenerID);
- listeners.remove(listenerID);
+ synchronized (listeners)
+ {
+ log.debug("removeMessageListener: " + listenerID);
+ listeners.remove(listenerID);
+ }
}
/**
@@ -105,7 +129,7 @@
*/
public void sendMessage(ObjectName targetID, Message msg)
{
- MessageListener msgListener = listeners.get(targetID);
+ MessageListener msgListener = getMessageListener(targetID);
if (msgListener == null)
throw new IllegalStateException("No message listener registered for: " + targetID);
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalListener.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalListener.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalListener.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -21,21 +21,25 @@
*/
package org.jboss.bpm.client;
-import org.jboss.bpm.model.Signal;
-
//$Id$
+import org.jboss.bpm.model.Signal;
/**
- * A signal listener that can be registered with the ProcessEngine
+ * A signal listener that can be registered with the {@link SignalManager}
*
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
public interface SignalListener
{
+ /**
+ * Returns true if the listener accepts a given signal
+ */
+ boolean acceptSignal(Signal signal);
+
/**
- * Catch a signal from the process that this listener is registered with
+ * Catch a previously accepted signal
*/
void catchSignal(Signal signal);
}
\ No newline at end of file
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -23,9 +23,8 @@
//$Id$
-import java.util.HashMap;
+import java.util.Collections;
import java.util.HashSet;
-import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
@@ -33,7 +32,7 @@
import org.jboss.bpm.model.Signal;
/**
- * The ProcessEngine sends signals through the SignalManager <p/> A {@link Signal} is like an undirected flare shot up
+ * 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 at jboss.com
@@ -45,7 +44,7 @@
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>>();
+ private Set<SignalListener> listeners = new HashSet<SignalListener>();
/**
* Locate the SignalManager
@@ -57,83 +56,66 @@
}
/**
- * Add a SignalListener for a given process
+ * Add a SignalListener for a given source
*/
- public void addSignalListener(String procName, SignalListener listener)
+ public void addSignalListener(SignalListener listener)
{
synchronized (listeners)
{
- log.debug("addSignalListener: " + procName + "=" + listener);
- Set<SignalListener> set = listeners.get(procName);
- if (set == null)
- {
- set = new HashSet<SignalListener>();
- listeners.put(procName, set);
- }
- set.add(listener);
+ log.debug("addSignalListener: " + listener);
+ listeners.add(listener);
}
}
/**
- * Remove an SignalListener for a given process
+ * Get the set of registered SignalListeners
*/
- public void removeSignalListener(String procName, SignalListener listener)
+ public Set<SignalListener> getSignalListeners()
{
synchronized (listeners)
{
- log.debug("removeSignalListener: " + procName + "=" + listener);
- Set<SignalListener> set = listeners.get(procName);
- if (set != null)
- {
- set.remove(listener);
- }
+ return Collections.unmodifiableSet(listeners);
}
}
/**
- * Remove all SignalListener for a given process
+ * Remove a SignalListener for a given source
*/
- public void removeSignalListeners(String procName)
+ public void removeSignalListener(SignalListener listener)
{
synchronized (listeners)
{
- log.debug("removeSignalListeners: " + procName);
- listeners.remove(procName);
+ log.debug("removeSignalListener: " + listener);
+ listeners.remove(listener);
}
}
/**
* Throw a signal to all registered listeners
*/
- public void throwSignal(String procName, Signal signal)
+ public void throwSignal(Signal signal)
{
- log.debug("throwSignal: " + procName + "=" + signal);
-
- // Throw Signal to listeners associated with the process
- Set<SignalListener> procListeners = getListenerSet(procName);
- for (SignalListener listener : procListeners)
+ log.debug("throwSignal: " + signal);
+ Set<SignalListener> currentListeners = getSignalListeners();
+ for (SignalListener listener : currentListeners)
{
- failsafeThrow(listener, signal);
+ if (failsafeAccept(listener, signal))
+ failsafeThrow(listener, signal);
}
-
- // Throw Signal to listeners not associated with any process
- Set<SignalListener> allProcListeners = getListenerSet(null);
- for (SignalListener listener : allProcListeners)
- {
- failsafeThrow(listener, signal);
- }
}
- private Set<SignalListener> getListenerSet(String procName)
+ private boolean failsafeAccept(SignalListener listener, Signal signal)
{
- synchronized (listeners)
+ try
{
- HashSet<SignalListener> retSet = new HashSet<SignalListener>();
- Set<SignalListener> listenerSet = listeners.get(procName);
- if (listenerSet != null)
- retSet.addAll(listenerSet);
- return retSet;
+ boolean accept = listener.acceptSignal(signal);
+ return accept;
}
+ catch (RuntimeException rte)
+ {
+ log.error("Signal processing error", rte);
+ return false;
+ }
}
private void failsafeThrow(SignalListener listener, Signal signal)
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractElement.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractElement.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractElement.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -21,7 +21,7 @@
*/
package org.jboss.bpm.model;
-//$Id$
+//$Id: $
import java.io.Serializable;
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -21,11 +21,9 @@
*/
package org.jboss.bpm.model;
+// $Id: $
import java.util.List;
-
-//$Id$
-
/**
* A Flow Object is one of the set of following graphical objects: Event, Activity, and Gateway.
*
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -52,7 +52,7 @@
* GatewayType is by default Exclusive. The GatewayType MAY be set to Inclusive, Complex, or Parallel. The GatewayType will determine the behavior of the Gateway,
* both for incoming and outgoing Sequence Flow
*/
- Gateway.GatewayType getGatewayType();
+ GatewayType getGatewayType();
/**
* There MAY be zero or more Gates (except where noted below). Zero Gates are allowed if the Gateway is last object in a Process flow and there are no Start or End
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/GraphicalElement.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/GraphicalElement.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/GraphicalElement.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -21,12 +21,10 @@
*/
package org.jboss.bpm.model;
+// $Id: $
-
-//$Id$
-
/**
- * A graphical BPMN element
+ * A graphical element
*
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -35,7 +35,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface Process extends GraphicalElement, PropertySupport
+public interface Process extends SupportingElement, PropertySupport
{
/**
* Defines the type of a {@link Process}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -23,6 +23,8 @@
import java.io.Serializable;
+import javax.management.ObjectName;
+
// $Id$
/**
@@ -31,7 +33,7 @@
* @author Thomas.Diesler at jboss.com
* @since 08-Jul-2008
*/
-public class Signal implements Serializable
+public final class Signal implements Serializable
{
private static final long serialVersionUID = 1L;
@@ -52,10 +54,12 @@
private SignalType type;
private String message;
- private String fromRef;
+ private ObjectName fromRef;
- /** Create the signal for a given process */
- public Signal(String fromRef, SignalType type)
+ /**
+ * Create the signal for a given source and type
+ */
+ public Signal(ObjectName fromRef, SignalType type)
{
this.fromRef = fromRef;
this.type = type;
@@ -65,14 +69,16 @@
throw new IllegalArgumentException("SignalType cannot be null");
}
- /** Create the signal for a given process */
- public Signal(String fromRef, SignalType type, String message)
+ /**
+ * Create the signal for a given source, type and message
+ */
+ public Signal(ObjectName fromRef, SignalType type, String message)
{
this(fromRef, type);
this.message = message;
}
- public String getFromRef()
+ public ObjectName getFromRef()
{
return fromRef;
}
Copied: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SupportingElement.java (from rev 1981, jbossbpm/spec/branches/tdiesler/modules/api/src/main/java/org/jboss/bpm/model/SupportingElement.java)
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SupportingElement.java (rev 0)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SupportingElement.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -0,0 +1,35 @@
+/*
+ * 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$
+
+/**
+ * A supporting element
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public interface SupportingElement extends AbstractElement
+{
+}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/SignalHandler.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/SignalHandler.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/SignalHandler.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -39,10 +39,10 @@
/**
* Get signal for enter
*/
- void throwEnterSignal();
+ void throwEnterSignal(Token token);
/**
* Get signal for exit
*/
- void throwExitSignal();
+ void throwExitSignal(Token token);
}
\ No newline at end of file
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -82,18 +82,40 @@
deployer = new EmbeddedBeansDeployer();
// Setup the SignalListener
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(null, getSignalListener());
+ clearAllSignalListeners();
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ sigManager.addSignalListener(getSignalListener());
synchronized (signals)
{
signals.clear();
}
// Setup the MessageListener
- MessageManager messageManager = MessageManager.locateMessageManager();
- messageManager.addMessageListener(getMessageListener());
+ clearAllMessageListeners();
+ MessageManager msgManager = MessageManager.locateMessageManager();
+ msgManager.addMessageListener(getMessageListener());
}
+ private void clearAllSignalListeners()
+ {
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ Set<SignalListener> sigListeners = sigManager.getSignalListeners();
+ for (SignalListener sigListener : sigListeners)
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
+ }
+
+ private void clearAllMessageListeners()
+ {
+ MessageManager msgManager = MessageManager.locateMessageManager();
+ Set<MessageListener> msgListeners = msgManager.getMessageListeners();
+ for (MessageListener msgListener : msgListeners)
+ {
+ msgManager.removeMessageListener(msgListener.getID());
+ }
+ }
+
@Override
protected void tearDown() throws Exception
{
@@ -101,11 +123,11 @@
// Tear down the SignalListener
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.removeSignalListeners(null);
+ signalManager.removeSignalListener(getSignalListener());
// Tear down the MessageListener
MessageManager messageManager = MessageManager.locateMessageManager();
- messageManager.removeMessageListener(getMessageListenerID());
+ messageManager.removeMessageListener(getTestID());
// Check that there are no registered processes left
ProcessManager procManager = ProcessManager.locateProcessManager();
@@ -117,6 +139,24 @@
log.warn(logMsg);
}
+ // Check that there are no registered signal listeners left
+ Set<SignalListener> sigListeners = signalManager.getSignalListeners();
+ if (sigListeners.size() > 0)
+ {
+ String logMsg = "Registered signal listeners on tear down of " + getName() + ": " + sigListeners;
+ System.out.println(logMsg);
+ log.warn(logMsg);
+ }
+
+ // Check that there are no registered signal listeners left
+ Set<MessageListener> msgListeners = messageManager.getMessageListeners();
+ if (msgListeners.size() > 0)
+ {
+ String logMsg = "Registered message listeners on tear down of " + getName() + ": " + msgListeners;
+ System.out.println(logMsg);
+ log.warn(logMsg);
+ }
+
super.tearDown();
}
@@ -160,6 +200,11 @@
{
signalListener = new SignalListener()
{
+ public boolean acceptSignal(Signal signal)
+ {
+ return true;
+ }
+
public void catchSignal(Signal signal)
{
synchronized (signals)
@@ -207,7 +252,7 @@
{
public ObjectName getID()
{
- return getMessageListenerID();
+ return getTestID();
}
public void catchMessage(Message message)
@@ -223,9 +268,9 @@
return messageListener;
}
- public ObjectName getMessageListenerID()
+ public ObjectName getTestID()
{
- return ObjectNameFactory.create(Constants.ID_DOMAIN, "msgListener", getShortName());
+ return ObjectNameFactory.create(Constants.ID_DOMAIN, "test", getShortName());
}
public List<Message> getMessages()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -134,9 +134,7 @@
{
try
{
- log.debug("Wait to become Active " + proc);
proc.wait();
- log.debug("Notified " + proc);
}
catch (InterruptedException ex)
{
@@ -217,9 +215,7 @@
// Start waiting to get notified
long waitTimeout = forever ? 0 : until - now;
- log.debug("Wait for " + waitTimeout + "ms on " + proc);
proc.wait(waitTimeout);
- log.debug("Notified " + proc);
}
now = System.currentTimeMillis();
}
@@ -320,14 +316,12 @@
public void run()
{
- log.debug("RunnableProcess started");
-
TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
Process proc = rtProc.getProcess();
SignalManager signalManager = SignalManager.locateSignalManager();
-
+
ObjectName procID = proc.getID();
String procName = proc.getName();
try
@@ -335,10 +329,9 @@
synchronized (proc)
{
procImpl.setProcessStatus(ProcessStatus.Active);
- signalManager.throwSignal(proc.getName(), new Signal(proc.getName(), SignalType.SYSTEM_PROCESS_ENTER));
+ signalManager.throwSignal(new Signal(procID, SignalType.SYSTEM_PROCESS_ENTER));
// Notify that the process is now Active
- log.debug("Notify: " + proc);
proc.notifyAll();
}
@@ -349,9 +342,7 @@
{
try
{
- log.debug("Wait: " + rtProc);
rtProc.wait();
- log.debug("Notified: " + rtProc);
}
catch (InterruptedException ex)
{
@@ -367,7 +358,7 @@
}
finally
{
- signalManager.throwSignal(procName, new Signal(procName, Signal.SignalType.SYSTEM_PROCESS_EXIT));
+ signalManager.throwSignal(new Signal(procID, Signal.SignalType.SYSTEM_PROCESS_EXIT));
synchronized (proc)
{
@@ -376,7 +367,6 @@
runtimeProcesses.remove(procID);
// Notify that the process has now ended
- log.debug("Notify: " + proc);
proc.notifyAll();
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -53,14 +53,14 @@
{
super.registerProcess(proc);
ProcessImpl procImpl = (ProcessImpl)proc;
- procImpl.registerElement(proc);
+ procImpl.register(proc);
}
@Override
public void unregisterProcess(Process proc)
{
ProcessImpl procImpl = (ProcessImpl)proc;
- procImpl.unregisterElement(proc);
+ procImpl.unregister(proc);
super.unregisterProcess(proc);
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -26,10 +26,7 @@
import javax.management.ObjectName;
import org.jboss.bpm.model.AbstractElement;
-import org.jboss.bpm.model.Constants;
-import org.jboss.bpm.model.ObjectNameFactory;
import org.jboss.bpm.model.Process;
-import org.jboss.util.id.UID;
/**
* The parrent of all Elements
@@ -38,28 +35,20 @@
* @since 08-Jul-2008
*/
@SuppressWarnings("serial")
-public class AbstractElementImpl implements AbstractElement
+public abstract class AbstractElementImpl implements AbstractElement
{
+ // The cached ID
protected ObjectName id;
-
+
/**
* Get the ID of this element
*/
- public ObjectName getID()
- {
- if (id == null)
- {
- StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
- str.append("type=Other,id=" + new UID());
- id = ObjectNameFactory.create(str.toString());
- }
- return id;
- }
-
+ public abstract ObjectName getID();
+
/**
* Called when the process is created
*/
- protected void createElement(Process proc)
+ protected void create(Process proc)
{
// nothing to do
}
@@ -67,7 +56,7 @@
/**
* Called when the process is registered
*/
- protected void registerElement(Process proc)
+ protected void register(Process proc)
{
// nothing to do
}
@@ -75,7 +64,7 @@
/**
* Called when the process is unregistered
*/
- protected void unregisterElement(Process proc)
+ protected void unregister(Process proc)
{
// nothing to do
}
@@ -83,7 +72,7 @@
/**
* Called when the process is destroyed
*/
- protected void destroyElement(Process proc)
+ protected void destroy(Process proc)
{
// nothing to do
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ActivityImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ActivityImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ActivityImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -300,9 +300,9 @@
}
@Override
- protected void createElement(Process proc)
+ protected void create(Process proc)
{
- super.createElement(proc);
+ super.create(proc);
// Validate InputSets
for (InputSet inSet : inputSets)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EndEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EndEventImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EndEventImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -27,19 +27,25 @@
import java.util.Collections;
import java.util.List;
+import javax.management.ObjectName;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.Constants;
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.MessageEventDetail;
+import org.jboss.bpm.model.ObjectNameFactory;
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.ExecutionContext;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
+import org.jboss.util.id.UID;
/**
* As the name implies, the End Event indicates where a Process will end.
@@ -64,6 +70,18 @@
super(name);
}
+ @Override
+ public ObjectName getID()
+ {
+ if (id == null)
+ {
+ StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
+ str.append("type=EndEvent,name=" + getName() + ",id=" + new UID());
+ id = ObjectNameFactory.create(str.toString());
+ }
+ return id;
+ }
+
public SequenceFlow getInFlow()
{
return inFlow;
@@ -107,7 +125,8 @@
protected void defaultFlowHandler(TokenExecutor tokenExecutor, Token token)
{
log.debug("End reached in: " + getName());
- tokenExecutor.destroy(token);
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment(EndSignalCallback.class, new EndSignalCallback(tokenExecutor));
}
public SignalHandler getSignalHandler()
@@ -118,16 +137,21 @@
handler = new SignalHandler()
{
SignalManager signalManager = SignalManager.locateSignalManager();
- public void throwEnterSignal()
+ public void throwEnterSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_END_EVENT_ENTER);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_END_EVENT_ENTER);
+ signalManager.throwSignal(signal);
}
- public void throwExitSignal()
+ public void throwExitSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_END_EVENT_EXIT);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_END_EVENT_EXIT);
+ signalManager.throwSignal(signal);
+
+ // Destroy the token
+ ExecutionContext exContext = token.getExecutionContext();
+ EndSignalCallback callback = exContext.getAttachment(EndSignalCallback.class);
+ callback.destroyToken(token);
}
};
}
@@ -135,9 +159,9 @@
}
@Override
- protected void createElement(Process proc)
+ protected void create(Process proc)
{
- super.createElement(proc);
+ super.create(proc);
// Initialize Results
for (EventDetail result : getResult())
@@ -151,4 +175,21 @@
{
return "EndEvent[" + getName() + "]";
}
+
+ /**
+ * The callback that destroys the token AFTER the SYSTEM_END_EVENT_EXIT signal
+ */
+ static class EndSignalCallback
+ {
+ TokenExecutor tokenExecutor;
+ public EndSignalCallback(TokenExecutor tokenExecutor)
+ {
+ this.tokenExecutor = tokenExecutor;
+ }
+
+ void destroyToken(Token token)
+ {
+ tokenExecutor.destroy(token);
+ }
+ }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventBuilderImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventBuilderImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -93,7 +93,7 @@
if (eventDetail instanceof SignalEventDetailImpl)
{
SignalEventDetailImpl signalEventDetail = (SignalEventDetailImpl)eventDetail;
- signalEventDetail.setSignalRef(new Signal(flowObject.getName(), signalType, message));
+ signalEventDetail.setSignalRef(new Signal(flowObject.getID(), signalType, message));
}
else
{
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/EventImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -21,12 +21,7 @@
*/
package org.jboss.bpm.ri.model.impl;
-import javax.management.ObjectName;
-
-import org.jboss.bpm.model.Constants;
import org.jboss.bpm.model.Event;
-import org.jboss.bpm.model.ObjectNameFactory;
-import org.jboss.util.id.UID;
//$Id$
@@ -44,16 +39,4 @@
{
super(name);
}
-
- @Override
- public ObjectName getID()
- {
- if (id == null)
- {
- StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
- str.append("type=Event,name=" + getName() + ",id=" + new UID());
- id = ObjectNameFactory.create(str.toString());
- }
- return id;
- }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowObjectImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/FlowObjectImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -212,9 +212,9 @@
}
@Override
- protected void createElement(Process proc)
+ protected void create(Process proc)
{
- super.createElement(proc);
+ super.create(proc);
this.proc = proc;
// Check required name
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GatewayImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GatewayImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -75,7 +75,7 @@
if (id == null)
{
StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
- str.append("type=Gateway,name=" + getName() + ",id=" + new UID());
+ str.append("type=" + getGatewayType() + "Gateway,name=" + getName() + ",id=" + new UID());
id = ObjectNameFactory.create(str.toString());
}
return id;
@@ -166,16 +166,16 @@
handler = new SignalHandler()
{
SignalManager signalManager = SignalManager.locateSignalManager();
- public void throwEnterSignal()
+ public void throwEnterSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_GATEWAY_ENTER);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_GATEWAY_ENTER);
+ signalManager.throwSignal(signal);
}
- public void throwExitSignal()
+ public void throwExitSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_GATEWAY_EXIT);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_GATEWAY_EXIT);
+ signalManager.throwSignal(signal);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GraphicalElementImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GraphicalElementImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/GraphicalElementImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -26,7 +26,8 @@
import org.jboss.bpm.model.GraphicalElement;
/**
- *
+ * A graphical element
+ *
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InclusiveGatewayImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/InclusiveGatewayImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -77,11 +77,6 @@
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);
-
if (applicableGates.size() == 1)
{
SequenceFlow outFlow = applicableGates.get(0).getOutgoingSequenceFlow();
@@ -102,6 +97,11 @@
tokenExecutor.start(outToken);
}
}
+
+ // Destroy the incomming token if there are
+ // more than one applicable gates
+ if (applicableGates.size() > 1)
+ tokenExecutor.destroy(token);
}
// Get applicable gates which' condition evaluates to TRUE
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/IntermediateEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/IntermediateEventImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/IntermediateEventImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -27,15 +27,20 @@
import java.util.Collections;
import java.util.List;
+import javax.management.ObjectName;
+
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.Constants;
import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.IntermediateEvent;
+import org.jboss.bpm.model.ObjectNameFactory;
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
+import org.jboss.util.id.UID;
/**
* An Intermediate Event is an Event that occurs after a Process has been started. It will affect the Flow of the Process, but will not start or (directly) terminate
@@ -57,6 +62,18 @@
super(name);
}
+ @Override
+ public ObjectName getID()
+ {
+ if (id == null)
+ {
+ StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
+ str.append("type=IntermediateEvent,name=" + getName() + ",id=" + new UID());
+ id = ObjectNameFactory.create(str.toString());
+ }
+ return id;
+ }
+
public ConnectingObject getInFlow()
{
return inFlow;
@@ -101,16 +118,16 @@
handler = new SignalHandler()
{
SignalManager signalManager = SignalManager.locateSignalManager();
- public void throwEnterSignal()
+ public void throwEnterSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_EVENT_ENTER);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_EVENT_ENTER);
+ signalManager.throwSignal(signal);
}
- public void throwExitSignal()
+ public void throwExitSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_EVENT_EXIT);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_EVENT_EXIT);
+ signalManager.throwSignal(signal);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessBuilderImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessBuilderImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -86,7 +86,7 @@
public Process getProcess()
{
ProcessImpl internalProc = getProcessInternal();
- internalProc.createElement(internalProc);
+ internalProc.create(internalProc);
return internalProc;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -308,13 +308,13 @@
}
@Override
- public void createElement(Process proc)
+ public void create(Process proc)
{
if (status != ProcessStatus.None)
throw new IllegalStateException("Cannot initialize process in state: " + status);
// Initialize the Element
- super.createElement(this);
+ super.create(this);
// Set the anonymous default name
if (getName() == null)
@@ -333,43 +333,43 @@
for (FlowObject fo : flowObjects)
{
FlowObjectImpl foImpl = (FlowObjectImpl)fo;
- foImpl.createElement(this);
+ foImpl.create(this);
}
status = ProcessStatus.Ready;
}
@Override
- public void registerElement(Process proc)
+ public void register(Process proc)
{
- super.registerElement(proc);
+ super.register(proc);
for (FlowObject fo : flowObjects)
{
FlowObjectImpl foImpl = (FlowObjectImpl)fo;
- foImpl.registerElement(this);
+ foImpl.register(this);
}
}
@Override
- public void unregisterElement(Process proc)
+ public void unregister(Process proc)
{
for (FlowObject fo : flowObjects)
{
FlowObjectImpl foImpl = (FlowObjectImpl)fo;
- foImpl.unregisterElement(this);
+ foImpl.unregister(this);
}
- super.unregisterElement(proc);
+ super.unregister(proc);
}
@Override
- public void destroyElement(Process proc)
+ public void destroy(Process proc)
{
for (FlowObject fo : flowObjects)
{
FlowObjectImpl foImpl = (FlowObjectImpl)fo;
- foImpl.destroyElement(this);
+ foImpl.destroy(this);
}
- super.destroyElement(proc);
+ super.destroy(proc);
}
protected void initializeMessageRef(Message msgRef)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ReceiveTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ReceiveTaskImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ReceiveTaskImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -170,9 +170,9 @@
}
@Override
- protected void createElement(Process proc)
+ protected void create(Process proc)
{
- super.createElement(proc);
+ super.create(proc);
if (messageRef == null)
throw new InvalidProcessException("A Message for the MessageRef attribute MUST be entered");
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SendTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SendTaskImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SendTaskImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -80,9 +80,9 @@
}
@Override
- protected void createElement(Process proc)
+ protected void create(Process proc)
{
- super.createElement(proc);
+ super.create(proc);
if (messageRef == null)
throw new InvalidProcessException("A Message for the MessageRef attribute MUST be entered");
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -27,21 +27,27 @@
import java.util.Collections;
import java.util.List;
+import javax.management.ObjectName;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.client.ExecutionManager;
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.Constants;
import org.jboss.bpm.model.EventDetail;
+import org.jboss.bpm.model.ObjectNameFactory;
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;
import org.jboss.bpm.model.Process.ProcessStatus;
+import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.runtime.TokenExecutor;
+import org.jboss.util.id.UID;
/**
* A Start Event indicates where a particular Process will start. In terms of Sequence Flow, the Start Event starts the
@@ -66,6 +72,18 @@
super(name == null ? "Start" : name);
}
+ @Override
+ public ObjectName getID()
+ {
+ if (id == null)
+ {
+ StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
+ str.append("type=StartEvent,name=" + getName() + ",id=" + new UID());
+ id = ObjectNameFactory.create(str.toString());
+ }
+ return id;
+ }
+
public List<EventDetail> getTrigger()
{
return Collections.unmodifiableList(triggers);
@@ -100,16 +118,17 @@
handler = new SignalHandler()
{
SignalManager signalManager = SignalManager.locateSignalManager();
- public void throwEnterSignal()
+
+ public void throwEnterSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_START_EVENT_ENTER);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_START_EVENT_ENTER);
+ signalManager.throwSignal(signal);
}
- public void throwExitSignal()
+ public void throwExitSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_START_EVENT_EXIT);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_START_EVENT_EXIT);
+ signalManager.throwSignal(signal);
}
};
}
@@ -117,15 +136,15 @@
}
@Override
- protected void registerElement(final Process proc)
+ protected void register(final Process proc)
{
- super.registerElement(proc);
-
+ super.register(proc);
+
for (EventDetail eventDetail : getTrigger())
{
EventDetailImpl eventDetailImpl = (EventDetailImpl)eventDetail;
eventDetailImpl.initialize(this);
-
+
// Register the start signal listener
if (eventDetail instanceof SignalEventDetail)
{
@@ -136,48 +155,60 @@
final StartEvent start = this;
startListener = new SignalListener()
{
+ public boolean acceptSignal(Signal signal)
+ {
+ SignalType expType = startSignal.getSignalType();
+ String expMsg = startSignal.getMessage();
+
+ String sigMsg = signal.getMessage();
+ SignalType sigType = signal.getSignalType();
+
+ boolean accept = (expType == sigType);
+ if (accept && expMsg != null)
+ accept = accept && expMsg.equals(sigMsg);
+
+ return accept;
+ }
+
public void catchSignal(Signal signal)
{
- if (startSignal.getSignalType() == signal.getSignalType() && startSignal.getMessage().equals(signal.getMessage()))
+ log.debug("catchSignal: " + signal);
+ ProcessStatus procStatus = proc.getProcessStatus();
+ if (procStatus == ProcessStatus.Ready || procStatus == ProcessStatus.Active)
{
- log.debug("catchSignal: " + signal);
- ProcessStatus procStatus = proc.getProcessStatus();
- if (procStatus == ProcessStatus.Ready || procStatus == ProcessStatus.Active)
- {
- log.debug("Start process from signal: " + signal);
- ExecutionManager exManager = ExecutionManager.locateExecutionManager();
- exManager.startProcess(start, null);
- }
- else
- {
- log.debug("Ignore start signal for process: " + proc);
- }
+ log.debug("Start process from signal: " + signal);
+ ExecutionManager exManager = ExecutionManager.locateExecutionManager();
+ exManager.startProcess(start, null);
}
+ else
+ {
+ log.debug("Ignore start signal for process: " + proc);
+ }
}
-
+
public String toString()
{
return start + "." + startSignal;
}
};
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getProcess().getName(), startListener);
+ signalManager.addSignalListener(startListener);
}
}
}
}
-
+
@Override
- protected void unregisterElement(final Process proc)
+ protected void unregister(final Process proc)
{
// Unregister the start signal listener
if (startListener != null)
{
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.removeSignalListener(getProcess().getName(), startListener);
+ signalManager.removeSignalListener(startListener);
startListener = null;
}
- super.unregisterElement(proc);
+ super.unregister(proc);
}
public String toString()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SubProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SubProcessImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SubProcessImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -23,10 +23,16 @@
//$Id$
+import javax.management.ObjectName;
+
import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.Constants;
+import org.jboss.bpm.model.ObjectNameFactory;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.ri.model.spec.SubProcess;
import org.jboss.bpm.runtime.SignalHandler;
+import org.jboss.bpm.runtime.Token;
+import org.jboss.util.id.UID;
/**
* A Sub-Process is Process that is included within another Process.
@@ -47,6 +53,18 @@
return ActivityType.SubProcess;
}
+ @Override
+ public ObjectName getID()
+ {
+ if (id == null)
+ {
+ StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
+ str.append("type=SubProcess,name=" + getName() + ",id=" + new UID());
+ id = ObjectNameFactory.create(str.toString());
+ }
+ return id;
+ }
+
public SignalHandler getSignalHandler()
{
SignalHandler handler = super.getSignalHandler();
@@ -55,16 +73,16 @@
handler = new SignalHandler()
{
SignalManager signalManager = SignalManager.locateSignalManager();
- public void throwEnterSignal()
+ public void throwEnterSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_SUB_PROCESS_ENTER);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_SUB_PROCESS_ENTER);
+ signalManager.throwSignal(signal);
}
- public void throwExitSignal()
+ public void throwExitSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_SUB_PROCESS_EXIT);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_SUB_PROCESS_EXIT);
+ signalManager.throwSignal(signal);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SupportingElementImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SupportingElementImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/SupportingElementImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -23,14 +23,31 @@
//$Id$
-import org.jboss.bpm.ri.model.spec.SupportingElement;
+import javax.management.ObjectName;
+import org.jboss.bpm.model.Constants;
+import org.jboss.bpm.model.ObjectNameFactory;
+import org.jboss.bpm.model.SupportingElement;
+import org.jboss.util.id.UID;
+
/**
- *
+ * A supporting element
+ *
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
@SuppressWarnings("serial")
public abstract class SupportingElementImpl extends AbstractElementImpl implements SupportingElement
{
+ @Override
+ public ObjectName getID()
+ {
+ if (id == null)
+ {
+ StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
+ str.append("type=SupportingElement,id=" + new UID());
+ id = ObjectNameFactory.create(str.toString());
+ }
+ return id;
+ }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TaskImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TaskImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -29,6 +29,7 @@
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.Task;
import org.jboss.bpm.runtime.SignalHandler;
+import org.jboss.bpm.runtime.Token;
import org.jboss.util.id.UID;
//$Id$
@@ -63,7 +64,7 @@
if (id == null)
{
StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
- str.append("type=Task,name=" + getName() + ",id=" + new UID());
+ str.append("type=" + getTaskType() + "Task,name=" + getName() + ",id=" + new UID());
id = ObjectNameFactory.create(str.toString());
}
return id;
@@ -77,16 +78,17 @@
handler = new SignalHandler()
{
SignalManager signalManager = SignalManager.locateSignalManager();
- public void throwEnterSignal()
+
+ public void throwEnterSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_TASK_ENTER);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_TASK_ENTER);
+ signalManager.throwSignal(signal);
}
- public void throwExitSignal()
+ public void throwExitSignal(Token token)
{
- Signal signal = new Signal(getName(), Signal.SignalType.SYSTEM_TASK_EXIT);
- signalManager.throwSignal(getProcess().getName(), signal);
+ Signal signal = new Signal(getID(), Signal.SignalType.SYSTEM_TASK_EXIT);
+ signalManager.throwSignal(signal);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TokenExecutorImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TokenExecutorImpl.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/TokenExecutorImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -233,20 +233,20 @@
// Synchronize execution on the target FlowObject
synchronized (flowObject)
{
- // Throw the Enter Signal
- sigHandler.throwEnterSignal();
-
// Create a Token that includes properties from the current Activity
- DelegatingToken delegatingToken = new DelegatingToken(token);
+ DelegatingToken tokCopy = new DelegatingToken(token);
+ // Throw the Enter Signal
+ sigHandler.throwEnterSignal(tokCopy);
+
// Execute the target FlowObject
- flowObjectImpl.execute(delegatingToken);
+ flowObjectImpl.execute(tokCopy);
// Transfer the token to the FlowHandler
- flowObjectImpl.executeFlowHandler(tokenExecutor, delegatingToken);
+ flowObjectImpl.executeFlowHandler(tokenExecutor, tokCopy);
// Throw the Exit Signal
- sigHandler.throwExitSignal();
+ sigHandler.throwExitSignal(tokCopy);
tokStatus = token.getTokenStatus();
procStatus = proc.getProcessStatus();
@@ -289,7 +289,6 @@
// Notify the runtime process
synchronized (rtProc)
{
- log.debug("Notify: " + rtProc);
rtProc.notifyAll();
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/spec/Condition.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/spec/Condition.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/spec/Condition.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -22,6 +22,7 @@
package org.jboss.bpm.ri.model.spec;
import org.jboss.bpm.model.Expression;
+import org.jboss.bpm.model.SupportingElement;
//$Id$
Deleted: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/spec/SupportingElement.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/spec/SupportingElement.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/spec/SupportingElement.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -1,36 +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.ri.model.spec;
-
-import org.jboss.bpm.model.AbstractElement;
-
-//$Id$
-
-/**
- * A graphical BPMN element
- *
- * @author thomas.diesler at jboss.com
- * @since 08-Jul-2008
- */
-public interface SupportingElement extends AbstractElement
-{
-}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/test/java/org/jboss/bpm/runtime/ExecutionManagerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/test/java/org/jboss/bpm/runtime/ExecutionManagerTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/ri/src/test/java/org/jboss/bpm/runtime/ExecutionManagerTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -61,7 +61,7 @@
ProcessStatus status = em.waitForEnd(proc);
assertEquals(ProcessStatus.Completed, status);
-
+
ProcessManager pm = ProcessManager.locateProcessManager();
assertNull("Process should be unregistered", pm.getProcessByID(proc.getID()));
}
@@ -86,7 +86,7 @@
status = em.waitForEnd(proc);
assertEquals(ProcessStatus.Completed, status);
-
+
ProcessManager pm = ProcessManager.locateProcessManager();
assertNull("Process should be unregistered", pm.getProcessByID(proc.getID()));
}
@@ -116,7 +116,7 @@
ProcessStatus status = proc.getProcessStatus();
assertEquals(ProcessStatus.Aborted, status);
-
+
ProcessManager pm = ProcessManager.locateProcessManager();
assertNull("Process should be unregistered", pm.getProcessByID(proc.getID()));
}
@@ -136,11 +136,11 @@
em.startProcess(proc, null);
SignalManager sm = SignalManager.locateSignalManager();
- sm.throwSignal(getName(), new Signal(getName(), SignalType.USER_SIGNAL, "A"));
+ sm.throwSignal(new Signal(getTestID(), SignalType.USER_SIGNAL, "A"));
ProcessStatus status = em.waitForEnd(proc);
assertEquals(ProcessStatus.Completed, status);
-
+
ProcessManager pm = ProcessManager.locateProcessManager();
assertNull("Process should be unregistered", pm.getProcessByID(proc.getID()));
}
@@ -171,7 +171,7 @@
ProcessStatus status = proc.getProcessStatus();
assertEquals(ProcessStatus.Aborted, status);
-
+
ProcessManager pm = ProcessManager.locateProcessManager();
assertNull("Process should be unregistered", pm.getProcessByID(proc.getID()));
}
@@ -179,40 +179,49 @@
public void testStartTwice() throws Exception
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("TaskA").
- addTask("TaskA").addSequenceFlow("End").addEndEvent("End");
+ procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("TaskA").addTask("TaskA").addSequenceFlow(
+ "End").addEndEvent("End");
final Process proc = procBuilder.getProcess();
-
+
class TestSignalListener implements SignalListener
{
RuntimeException signalException;
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER;
+ }
+
public void catchSignal(Signal signal)
{
- if (signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER)
+ try
{
- try
- {
- proc.startProcess();
- fail("Cannot start process twice");
- }
- catch (RuntimeException rte)
- {
- signalException = rte;
- }
+ proc.startProcess();
+ fail("Cannot start process twice");
}
+ catch (RuntimeException rte)
+ {
+ signalException = rte;
+ }
}
}
TestSignalListener sigListener = new TestSignalListener();
- SignalManager sm = SignalManager.locateSignalManager();
- sm.addSignalListener(getName(), sigListener);
-
- proc.startProcess();
- proc.waitForEnd();
-
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ sigManager.addSignalListener(sigListener);
+
+ try
+ {
+ proc.startProcess();
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
+
assertNotNull("Signal Exception expected", sigListener.signalException);
}
-
+
@SuppressWarnings("serial")
public static class ThrowHandler implements ExecutionHandler
{
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -32,7 +32,7 @@
@SuppressWarnings("serial")
public class AirticketServiceImpl extends RemoteServiceServlet implements AirticketService
{
- private ObjectName listenerID = ObjectNameFactory.create("mydomain:type=MessageListener");
+ private ObjectName sampleID = ObjectNameFactory.create("org.jboss.bpm:sample=AirticketService");
public void sendMessage(GwtMessage gwtMsg)
{
@@ -52,7 +52,7 @@
AirticketMessageListener msgListener = new AirticketMessageListener(messageQueue);
mm.addMessageListener(msgListener);
- sm.addSignalListener(AirticketProcessBuilder.PROCESS_NAME, new AirticketSignalListener());
+ sm.addSignalListener(new AirticketSignalListener());
httpSession.setAttribute("messageQueue", messageQueue);
}
@@ -62,7 +62,7 @@
if (procID == null || pm.getProcessByID(procID) == null)
{
System.out.println("Create new Process");
- AirticketProcessBuilder procBuilder = new AirticketProcessBuilder(listenerID);
+ AirticketProcessBuilder procBuilder = new AirticketProcessBuilder(sampleID);
Process proc = procBuilder.buildProcess();
procID = proc.startProcess();
httpSession.setAttribute("procID", procID);
@@ -188,12 +188,17 @@
public ObjectName getID()
{
- return listenerID;
+ return sampleID;
}
}
class AirticketSignalListener implements SignalListener
{
+ public boolean acceptSignal(Signal signal)
+ {
+ return true;
+ }
+
public void catchSignal(Signal signal)
{
System.out.println(signal);
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -76,7 +76,7 @@
}
@Override
- public ObjectName getMessageListenerID()
+ public ObjectName getTestID()
{
return ObjectNameFactory.create("jboss.bpm:client=AirticketTest");
}
@@ -84,14 +84,14 @@
@Override
public MessageListener getMessageListener()
{
- msgListener = new AirticketMessageListener(getMessageListenerID());
+ msgListener = new AirticketMessageListener(getTestID());
return msgListener;
}
@Override
protected void tearDown() throws Exception
{
- messageManager.removeMessageListener(getMessageListenerID());
+ messageManager.removeMessageListener(getTestID());
super.tearDown();
}
@@ -137,7 +137,7 @@
protected Process getProcess() throws IOException
{
- AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+ AirticketProcessBuilder builder = new AirticketProcessBuilder(getTestID());
return builder.buildProcess();
}
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -68,7 +68,7 @@
taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "ActivityProperties_TaskA_foo", "foo");
procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
- msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true);
+ msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
Process proc = procBuilder.getProcess();
return proc;
}
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -55,18 +55,25 @@
public void testGateA() throws Exception
{
Process proc = getProcess();
- proc.startProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
- signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
+ sigManager.addSignalListener(sigListener);
- // Send start trigger signal
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ try
+ {
+ // Send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
- // Wait for the process to end
- proc.waitForEnd();
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
// Verify the result
Message endMessage = getMessages().get(0);
@@ -77,18 +84,25 @@
public void testGateB() throws Exception
{
Process proc = getProcess();
- proc.startProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
- signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ sigManager.addSignalListener(sigListener);
- // Send start trigger signal
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B"));
+ try
+ {
+ // Send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
- // Wait for the process to end
- proc.waitForEnd();
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
// Verify the result
Message endMessage = getMessages().get(0);
@@ -99,38 +113,50 @@
public void testInvalidToken() throws Exception
{
Process proc = getProcess();
- proc.startProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
- signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ sigManager.addSignalListener(sigListener);
- // Send start trigger signal
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
-
try
{
- proc.waitForEnd();
- fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
+ // Send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ try
+ {
+ proc.waitForEnd();
+ fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
+ }
+ catch (RuntimeException rte)
+ {
+ // expected
+ }
}
- catch (RuntimeException rte)
+ finally
{
- // expected
+ sigManager.removeSignalListener(sigListener);
}
- // Restart the process
- proc.startProcess();
-
// Add a signal listener that sends the other start trigger signal
- startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
- signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+ sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
+ sigManager.addSignalListener(sigListener);
- // Send start trigger signal
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ try
+ {
+ // Send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
- // Wait for the process to end
- proc.waitForEnd();
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
// Verify the result
Message endMessage = getMessages().get(0);
@@ -142,44 +168,46 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow(
+ "TaskA");
TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValue");
taskBuilder.addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow(
+ "TaskB");
taskBuilder = procBuilder.addTask("TaskB");
taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValue");
taskBuilder.addSequenceFlow("Merge");
procBuilder.addGateway("Merge", Gateway.GatewayType.Exclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
- msgBuilder.addToRef(getMessageListenerID()).addProperty("taskValue", null, true);
+ msgBuilder.addToRef(getTestID()).addProperty("taskValue", null, true);
Process proc = procBuilder.getProcess();
return proc;
}
class MergeListener implements SignalListener
{
- private String fromRef;
private Signal nextSignal;
- public MergeListener(String fromRef, Signal nextSignal)
+ public MergeListener(Signal nextSignal)
{
- this.fromRef = fromRef;
this.nextSignal = nextSignal;
}
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
+ }
+
public void catchSignal(Signal signal)
{
- if (signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER)
+ if (nextSignal != null)
{
- if (nextSignal != null)
- {
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(fromRef, nextSignal);
- nextSignal = null;
- }
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(nextSignal);
+ nextSignal = null;
}
}
}
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -56,7 +56,7 @@
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
- assertEquals("EndA", endSignals.get(0).getFromRef());
+ assertEquals("EndA", endSignals.get(0).getFromRef().getKeyProperty("name"));
}
public void testGateB() throws Exception
@@ -70,7 +70,7 @@
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
- assertEquals("EndB", endSignals.get(0).getFromRef());
+ assertEquals("EndB", endSignals.get(0).getFromRef().getKeyProperty("name"));
}
public void testInvalidGate() throws Exception
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -39,9 +39,8 @@
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
- * Inclusive gateway that has multiple incoming sequence flows.
- * All tokens arriving from incoming sequence flows proceeds unconditionally along the outgoing sequence flow.
- * The inclusive join is stateless.
+ * Inclusive gateway that has multiple incoming sequence flows. All tokens arriving from incoming sequence flows
+ * proceeds unconditionally along the outgoing sequence flow. The inclusive join is stateless.
*
* @author thomas.diesler at jboss.com
* @since 06-Aug-2008
@@ -51,19 +50,26 @@
public void testGateA() throws Exception
{
Process proc = getProcess();
- proc.startProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
- signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
-
- // Send start trigger signals
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
+ sigManager.addSignalListener(sigListener);
- // Wait for the process to end
- proc.waitForEnd();
+ try
+ {
+ // Send start trigger signals
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
+
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(2, endSignals.size());
}
@@ -72,10 +78,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", Gateway.GatewayType.Inclusive).addSequenceFlow("End");
+ eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
+ eventBuilder = procBuilder.addSequenceFlow("Merge").addStartEvent("StartB");
+ eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
+ procBuilder.addSequenceFlow("Merge").addGateway("Merge", Gateway.GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
Process proc = procBuilder.getProcess();
return proc;
@@ -83,25 +89,25 @@
class MergeListener implements SignalListener
{
- private String fromRef;
private Signal nextSignal;
- public MergeListener(String fromRef, Signal nextSignal)
+ public MergeListener(Signal nextSignal)
{
- this.fromRef = fromRef;
this.nextSignal = nextSignal;
}
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
+ }
+
public void catchSignal(Signal signal)
{
- if (signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER)
+ if (nextSignal != null)
{
- if (nextSignal != null)
- {
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(fromRef, nextSignal);
- nextSignal = null;
- }
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(nextSignal);
+ nextSignal = null;
}
}
}
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -69,7 +69,7 @@
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
- assertEquals("EndB", endSignals.get(0).getFromRef());
+ assertEquals("EndB", endSignals.get(0).getFromRef().getKeyProperty("name"));
}
public Process getProcess() throws IOException
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -57,16 +57,23 @@
Process proc = getProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
- signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
+ sigManager.addSignalListener(sigListener);
- // Start the process and send start trigger signal
- proc.startProcess();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ try
+ {
+ // Start the process and send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
- // Wait for the process to end
- proc.waitForEnd();
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
// Verify the result
Message endMessage = getMessages().get(0);
@@ -81,7 +88,7 @@
// Start the process and send start trigger signal
proc.startProcess();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ signalManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
// Wait for the process to end
try
@@ -100,34 +107,48 @@
Process proc = getProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
- signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ sigManager.addSignalListener(sigListener);
- // Start the process and send start trigger signal
- proc.startProcess();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
-
try
{
- proc.waitForEnd();
- fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
+ // Start the process and send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ try
+ {
+ proc.waitForEnd();
+ fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
+ }
+ catch (RuntimeException rte)
+ {
+ // expected
+ }
}
- catch (RuntimeException rte)
+ finally
{
- // expected
+ sigManager.removeSignalListener(sigListener);
}
// Add a signal listener that sends the other start trigger signal
- startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
- signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
+ sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
+ sigManager.addSignalListener(sigListener);
- // Start the process and send start trigger signal
- proc.startProcess();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ try
+ {
+ // Start the process and send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
- // Wait for the process to end
- proc.waitForEnd();
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
// Verify the result
Message endMessage = getMessages().get(0);
@@ -139,44 +160,44 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
- TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+ eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
+ TaskBuilder taskBuilder = procBuilder.addSequenceFlow("TaskA").addTask("TaskA");
taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA");
taskBuilder.addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
- taskBuilder = procBuilder.addTask("TaskB");
+ eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
+ taskBuilder = procBuilder.addSequenceFlow("TaskB").addTask("TaskB");
taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB");
taskBuilder.addSequenceFlow("Merge");
procBuilder.addGateway("Merge", Gateway.GatewayType.Parallel).addSequenceFlow("End");
procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
- msgBuilder.addToRef(getMessageListenerID()).addProperty("taskValueA", null, true).addProperty("taskValueB", null, true);
+ msgBuilder.addToRef(getTestID()).addProperty("taskValueA", null, true).addProperty("taskValueB", null, true);
Process proc = procBuilder.getProcess();
return proc;
}
public static class MergeListener implements SignalListener
{
- private String fromRef;
private Signal nextSignal;
- public MergeListener(String fromRef, Signal nextSignal)
+ public MergeListener(Signal nextSignal)
{
- this.fromRef = fromRef;
this.nextSignal = nextSignal;
}
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
+ }
+
public void catchSignal(Signal signal)
{
- if (signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER)
+ if (nextSignal != null)
{
- if (nextSignal != null)
- {
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(fromRef, nextSignal);
- nextSignal = null;
- }
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(nextSignal);
+ nextSignal = null;
}
}
}
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewaySplitTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -26,6 +26,8 @@
import java.io.IOException;
import java.util.List;
+import javax.management.ObjectName;
+
import org.jboss.bpm.model.Gateway;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
@@ -52,7 +54,9 @@
// Validate received signals
List<Signal> signals = getSignals(SignalType.SYSTEM_END_EVENT_ENTER);
assertEquals(2, signals.size());
- String fromRefs = signals.get(0).getFromRef() + signals.get(1).getFromRef();
+ ObjectName fromRef0 = signals.get(0).getFromRef();
+ ObjectName fromRef1 = signals.get(1).getFromRef();
+ String fromRefs = fromRef0.getKeyProperty("name") + fromRef1.getKeyProperty("name");
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndA"));
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndB"));
}
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessPropertyTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -68,7 +68,7 @@
procBuilder.addProperty("foo", "bar").addTask("TaskA").addSequenceFlow("End");
procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
- msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true);
+ msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
Process proc = procBuilder.getProcess();
return proc;
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessManagerTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -51,23 +51,32 @@
final ProcessManager pm = ProcessManager.locateProcessManager();
assertNull("A process created through the builder is not registered automatically", pm.getProcessByID(procID));
- SignalListener signalListener = new SignalListener()
+ SignalListener sigListener = new SignalListener()
{
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER;
+ }
+
public void catchSignal(Signal signal)
{
- if (signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER)
- {
- assertNotNull(pm.getProcessByID(procID));
- }
+ assertNotNull(pm.getProcessByID(procID));
}
};
- SignalManager sm = SignalManager.locateSignalManager();
- sm.addSignalListener(getName(), signalListener);
-
- // Start the process, which automatically adds it to the registery
- assertEquals(procID, proc.startProcess());
- proc.waitForEnd();
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ sigManager.addSignalListener(sigListener);
+ try
+ {
+ // Start the process, which automatically adds it to the registery
+ assertEquals(procID, proc.startProcess());
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
+
assertNull("A terminated process is removed from the registry", pm.getProcessByID(procID));
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/signalmanager/SignalManagerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/signalmanager/SignalManagerTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/signalmanager/SignalManagerTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -38,8 +38,8 @@
public class SignalManagerTest extends DefaultEngineTestCase
{
final SignalManager sigManager = SignalManager.locateSignalManager();
- final Signal sigA = new Signal(getShortName(), SignalType.USER_SIGNAL, "A");
- final Signal sigB = new Signal(getShortName(), SignalType.USER_SIGNAL, "B");
+ final Signal sigA = new Signal(getTestID(), SignalType.USER_SIGNAL, "A");
+ final Signal sigB = new Signal(getTestID(), SignalType.USER_SIGNAL, "B");
private Signal gotA;
private Signal gotB;
@@ -48,26 +48,28 @@
{
SignalListener sigListener = new SignalListener()
{
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.USER_SIGNAL;
+ }
+
public void catchSignal(Signal signal)
{
String sigMsg = signal.getMessage();
- if (signal.getSignalType() == SignalType.USER_SIGNAL)
+ if ("A".equals(sigMsg))
{
- if ("A".equals(sigMsg))
- {
- gotA = signal;
- sigManager.throwSignal(getShortName(), sigB);
- }
- if ("B".equals(sigMsg))
- {
- gotB = signal;
- }
+ gotA = signal;
+ sigManager.throwSignal(sigB);
}
+ if ("B".equals(sigMsg))
+ {
+ gotB = signal;
+ }
}
};
- sigManager.addSignalListener(getShortName(), sigListener);
- sigManager.throwSignal(getShortName(), sigA);
- sigManager.removeSignalListeners(getShortName());
+ sigManager.addSignalListener(sigListener);
+ sigManager.throwSignal(sigA);
+ sigManager.removeSignalListener(sigListener);
assertEquals(sigA, gotA);
assertEquals(sigB, gotB);
@@ -77,26 +79,28 @@
{
SignalListener sigListener = new SignalListener()
{
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.USER_SIGNAL;
+ }
+
public void catchSignal(Signal signal)
{
String sigMsg = signal.getMessage();
- if (signal.getSignalType() == SignalType.USER_SIGNAL)
+ if ("A".equals(sigMsg))
{
- if ("A".equals(sigMsg))
- {
- gotA = signal;
- sendThreadSignal(sigB);
- }
- if ("B".equals(sigMsg))
- {
- gotB = signal;
- }
+ gotA = signal;
+ sendThreadSignal(sigB);
}
+ if ("B".equals(sigMsg))
+ {
+ gotB = signal;
+ }
}
};
- sigManager.addSignalListener(getShortName(), sigListener);
+ sigManager.addSignalListener(sigListener);
sendThreadSignal(sigA);
- sigManager.removeSignalListeners(getShortName());
+ sigManager.removeSignalListener(sigListener);
assertEquals(sigA, gotA);
assertEquals(sigB, gotB);
@@ -139,7 +143,7 @@
public void run()
{
hasStarted = true;
- sigManager.throwSignal(getShortName(), threadSig);
+ sigManager.throwSignal(threadSig);
}
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/startevent/StartEventSignalTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/startevent/StartEventSignalTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/startevent/StartEventSignalTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -57,7 +57,7 @@
// Start the process and send start trigger signal
proc.startProcess();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ signalManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
// Wait for the process to end
proc.waitForEnd();
@@ -74,14 +74,14 @@
// Start the process and send start trigger signal
proc.startProcess();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ signalManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
// Wait for the process to end
proc.waitForEnd();
// Start the process and send start trigger signal
proc.startProcess();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ signalManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
// Wait for the process to end
proc.waitForEnd();
@@ -98,16 +98,23 @@
Process proc = getProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
- signalManager.addSignalListener(proc.getName(), new TaskListener(proc.getName(), startTrigger));
+ TaskListener sigListener = new TaskListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ sigManager.addSignalListener(sigListener);
- // Start the process and send start trigger signal
- proc.startProcess();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ try
+ {
+ // Start the process and send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
- // Wait for the process to end
- proc.waitForEnd();
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
// Verify the result
List<Message> messages = getMessages();
@@ -127,32 +134,32 @@
taskBuilder.addSequenceFlow("End");
procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
- msgBuilder.addToRef(getMessageListenerID()).addProperty("taskValue", null, true);
+ msgBuilder.addToRef(getTestID()).addProperty("taskValue", null, true);
Process proc = procBuilder.getProcess();
return proc;
}
public static class TaskListener implements SignalListener
{
- private String fromRef;
private Signal nextSignal;
- public TaskListener(String fromRef, Signal nextSignal)
+ public TaskListener(Signal nextSignal)
{
- this.fromRef = fromRef;
this.nextSignal = nextSignal;
}
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER;
+ }
+
public void catchSignal(Signal signal)
{
- if (signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER)
+ if (nextSignal != null)
{
- if (nextSignal != null)
- {
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(fromRef, nextSignal);
- nextSignal = null;
- }
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(nextSignal);
+ nextSignal = null;
}
}
}
Modified: 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/ReceiveTaskTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/ReceiveTaskTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -64,11 +64,11 @@
// expected
}
}
-
+
public void testUnregisteredProcess() throws Exception
{
Process proc = getProcess();
-
+
MessageManager msgManager = MessageManager.locateMessageManager();
try
{
@@ -90,10 +90,10 @@
// 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"));
@@ -102,29 +102,39 @@
public void testSuspendedToken() throws Exception
{
final Process proc = getProcess();
- SignalListener signalListener = new SignalListener()
+ SignalListener sigListener = new SignalListener()
{
private boolean sendMessage = true;
+
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_TASK_EXIT;
+ }
+
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)
{
- if (sendMessage == true)
- {
- sendMessage = false;
- MessageManager msgManager = MessageManager.locateMessageManager();
- msgManager.sendMessage(proc.getID(), "TaskA", getMessage());
- }
+ 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();
-
+ sigManager.addSignalListener(sigListener);
+
+ try
+ {
+ proc.startProcess();
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
+
Message endMsg = getMessages().get(0);
assertNotNull("End message expected", endMsg);
assertEquals("bar", endMsg.getPropertyValue("foo"));
@@ -136,14 +146,14 @@
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);
+ msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA", Task.TaskType.Receive).addMessageRef("ReceiveTaskMessage");
EventBuilder eventBuilder = procBuilder.addSequenceFlow("End").addEndEvent("End");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/exclusivechoice/ExclusiveChoiceTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/exclusivechoice/ExclusiveChoiceTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/exclusivechoice/ExclusiveChoiceTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -56,7 +56,7 @@
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
- assertEquals("EndA", endSignals.get(0).getFromRef());
+ assertEquals("EndA", endSignals.get(0).getFromRef().getKeyProperty("name"));
}
public void testGateB() throws Exception
@@ -70,7 +70,7 @@
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
- assertEquals("EndB", endSignals.get(0).getFromRef());
+ assertEquals("EndB", endSignals.get(0).getFromRef().getKeyProperty("name"));
}
public void testInvalidGate() throws Exception
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/multichoice/MultiChoiceTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -69,7 +69,7 @@
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(1, endSignals.size());
- assertEquals("EndB", endSignals.get(0).getFromRef());
+ assertEquals("EndB", endSignals.get(0).getFromRef().getKeyProperty("name"));
}
public Process getProcess() throws IOException
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/parallelsplit/ParallelSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/parallelsplit/ParallelSplitTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/parallelsplit/ParallelSplitTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -26,6 +26,8 @@
import java.io.IOException;
import java.util.List;
+import javax.management.ObjectName;
+
import org.jboss.bpm.model.Gateway;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
@@ -52,7 +54,9 @@
// Validate received signals
List<Signal> signals = getSignals(SignalType.SYSTEM_END_EVENT_ENTER);
assertEquals(2, signals.size());
- String fromRefs = signals.get(0).getFromRef() + signals.get(1).getFromRef();
+ ObjectName fromRef0 = signals.get(0).getFromRef();
+ ObjectName fromRef1 = signals.get(1).getFromRef();
+ String fromRefs = fromRef0.getKeyProperty("name") + fromRef1.getKeyProperty("name");
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndA"));
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndB"));
}
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -39,9 +39,8 @@
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
- * Inclusive gateway that has multiple incoming sequence flows.
- * All tokens arriving from incoming sequence flows proceeds unconditionally along the outgoing sequence flow.
- * The inclusive join is stateless.
+ * Inclusive gateway that has multiple incoming sequence flows. All tokens arriving from incoming sequence flows
+ * proceeds unconditionally along the outgoing sequence flow. The inclusive join is stateless.
*
* @author thomas.diesler at jboss.com
* @since 06-Aug-2008
@@ -51,19 +50,26 @@
public void testSimpleMerge() throws Exception
{
Process proc = getProcess();
- proc.startProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
- signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
-
- // Send start trigger signals
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ MergeListener sigListener = new MergeListener(proc.getName(), new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ sigManager.addSignalListener(sigListener);
- // Wait for the process to end
- proc.waitForEnd();
+ try
+ {
+ // Send start trigger signals
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
+
List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
assertEquals(2, endSignals.size());
}
@@ -83,25 +89,25 @@
class MergeListener implements SignalListener
{
- private String fromRef;
private Signal nextSignal;
public MergeListener(String fromRef, Signal nextSignal)
{
- this.fromRef = fromRef;
this.nextSignal = nextSignal;
}
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
+ }
+
public void catchSignal(Signal signal)
{
- if (signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER)
+ if (nextSignal != null)
{
- if (nextSignal != null)
- {
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(fromRef, nextSignal);
- nextSignal = null;
- }
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(nextSignal);
+ nextSignal = null;
}
}
}
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-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -57,16 +57,23 @@
Process proc = getProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
- signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
+ MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ sigManager.addSignalListener(sigListener);
- // Start the process and send start trigger signal
- proc.startProcess();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ try
+ {
+ // Start the process and send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
- // Wait for the process to end
- proc.waitForEnd();
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
// Verify the result
Message endMessage = getMessages().get(0);
@@ -81,7 +88,7 @@
// Start the process and send start trigger signal
proc.startProcess();
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ signalManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
// Wait for the process to end
try
@@ -100,34 +107,50 @@
Process proc = getProcess();
// Add a signal listener that sends the other start trigger signal
- SignalManager signalManager = SignalManager.locateSignalManager();
- Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
- signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
+ Signal startTrigger = new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A");
+ MergeListener sigListener = new MergeListener(startTrigger);
+ SignalManager sigManager = SignalManager.locateSignalManager();
+ sigManager.addSignalListener(sigListener);
- // Start the process and send start trigger signal
- proc.startProcess();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
-
try
{
- proc.waitForEnd();
- fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
+ // Start the process and send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ try
+ {
+ proc.waitForEnd();
+ fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
+ }
+ catch (RuntimeException rte)
+ {
+ // expected
+ }
}
- catch (RuntimeException rte)
+ finally
{
- // expected
+ sigManager.removeSignalListener(sigListener);
}
// Add a signal listener that sends the other start trigger signal
- startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
- signalManager.addSignalListener(proc.getName(), new MergeListener(proc.getName(), startTrigger));
+ startTrigger = new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B");
+ sigListener = new MergeListener(startTrigger);
+ sigManager.addSignalListener(sigListener);
- // Start the process and send start trigger signal
- proc.startProcess();
- signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ try
+ {
+ // Start the process and send start trigger signal
+ proc.startProcess();
+ sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
- // Wait for the process to end
- proc.waitForEnd();
+ // Wait for the process to end
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
// Verify the result
Message endMessage = getMessages().get(0);
@@ -139,44 +162,44 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess("Synchronization").addStartEvent("StartA");
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
- TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+ eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
+ TaskBuilder taskBuilder = procBuilder.addSequenceFlow("TaskA").addTask("TaskA");
taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA");
taskBuilder.addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
- taskBuilder = procBuilder.addTask("TaskB");
+ eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
+ taskBuilder = procBuilder.addSequenceFlow("TaskB").addTask("TaskB");
taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB");
taskBuilder.addSequenceFlow("Merge");
procBuilder.addGateway("Merge", Gateway.GatewayType.Parallel).addSequenceFlow("End");
procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
- msgBuilder.addToRef(getMessageListenerID()).addProperty("taskValueA", null, true).addProperty("taskValueB", null, true);
+ msgBuilder.addToRef(getTestID()).addProperty("taskValueA", null, true).addProperty("taskValueB", null, true);
Process proc = procBuilder.getProcess();
return proc;
}
public static class MergeListener implements SignalListener
{
- private String fromRef;
private Signal nextSignal;
- public MergeListener(String fromRef, Signal nextSignal)
+ public MergeListener(Signal nextSignal)
{
- this.fromRef = fromRef;
this.nextSignal = nextSignal;
}
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
+ }
+
public void catchSignal(Signal signal)
{
- if (signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER)
+ if (nextSignal != null)
{
- if (nextSignal != null)
- {
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.throwSignal(fromRef, nextSignal);
- nextSignal = null;
- }
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(nextSignal);
+ nextSignal = null;
}
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/casedata/CaseDataTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -65,7 +65,7 @@
procBuilder.addProperty("foo", "bar").addTask("TaskA").addSequenceFlow("End");
procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
- msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true);
+ msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
Process proc = procBuilder.getProcess();
return proc;
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataTest.java 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/data/taskdata/TaskDataTest.java 2008-08-22 10:09:27 UTC (rev 1982)
@@ -67,7 +67,7 @@
taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "TaskData_TaskA_foo", "foo");
procBuilder.addEndEvent("End").addEventDetail(EventDetail.EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
- msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true);
+ msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
Process proc = procBuilder.getProcess();
return proc;
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/synchronization/pattern-control-synchronization-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/synchronization/pattern-control-synchronization-api10.xml 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/synchronization/pattern-control-synchronization-api10.xml 2008-08-22 10:09:27 UTC (rev 1982)
@@ -38,7 +38,7 @@
</message-result>
</end>
<message name="EndMessage">
- <to>jboss.bpm:msgListener=SynchronizationDescriptorTest</to>
+ <to>jboss.bpm:test=SynchronizationDescriptorTest</to>
<property correlation="true">
<name>taskValueA</name>
</property>
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-casedata-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-casedata-api10.xml 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/casedata/pattern-data-casedata-api10.xml 2008-08-22 10:09:27 UTC (rev 1982)
@@ -15,7 +15,7 @@
</message-result>
</end>
<message name="EndMessage">
- <to>jboss.bpm:msgListener=CaseDataDescriptorTest</to>
+ <to>jboss.bpm:test=CaseDataDescriptorTest</to>
<property correlation="true">
<name>foo</name>
</property>
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-taskdata-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-taskdata-api10.xml 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/data/taskdata/pattern-data-taskdata-api10.xml 2008-08-22 10:09:27 UTC (rev 1982)
@@ -19,7 +19,7 @@
</message-result>
</end>
<message name="EndMessage">
- <to>jboss.bpm:msgListener=TaskDataDescriptorTest</to>
+ <to>jboss.bpm:test=TaskDataDescriptorTest</to>
<property correlation="true">
<name>foo</name>
</property>
Modified: jbossbpm/spec/trunk/pom.xml
===================================================================
--- jbossbpm/spec/trunk/pom.xml 2008-08-22 09:40:49 UTC (rev 1981)
+++ jbossbpm/spec/trunk/pom.xml 2008-08-22 10:09:27 UTC (rev 1982)
@@ -173,8 +173,15 @@
<!-- DistributionManagement -->
<distributionManagement>
<!--
- Add this to your ~/.m2/settings.xml <servers> <server> <id>jbpm.dyndns.org</id> <username>yourname</username>
- <privateKey>/home/yourname/.ssh/id_rsa</privateKey> <passphrase>yourpass</passphrase> </server> </servers>
+ Add this to your ~/.m2/settings.xml
+ <servers>
+ <server>
+ <id>jbpm.dyndns.org</id>
+ <username>yourname</username>
+ <privateKey>/home/yourname/.ssh/id_rsa</privateKey>
+ <passphrase>yourpass</passphrase>
+ </server>
+ </servers>
-->
<site>
<id>jbpm.dyndns.org</id>
@@ -182,6 +189,14 @@
</site>
</distributionManagement>
+ <!-- Repositories -->
+ <repositories>
+ <repository>
+ <id>repository.jboss.org</id>
+ <url>http://repository.jboss.org/maven2</url>
+ </repository>
+ </repositories>
+
<!-- Profiles -->
<profiles>
<!--
More information about the jbpm-commits
mailing list