You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2008/11/20 17:26:28 UTC
svn commit: r719270 [3/4] - in /ode/branches/APACHE_ODE_1.X:
axis2-war/src/test/java/org/apache/ode/axis2/correlation/
axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/
axis2-war/src/test/resources/TestCorrelationJoin/ axis2-war/src/test/re...
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java Thu Nov 20 08:26:25 2008
@@ -175,6 +175,8 @@
* @param mex
*/
void invokeProcess(MyRoleMessageExchangeImpl mex) {
+ boolean routed = false;
+
try {
_hydrationLatch.latch(1);
List<PartnerLinkMyRoleImpl> targets = getMyRolesForService(mex.getServiceName());
@@ -197,7 +199,6 @@
// Ideally, if Java supported closure, the routing code would return null or the appropriate
// closure to handle the route.
List<PartnerLinkMyRoleImpl.RoutingInfo> routings = null;
- boolean routed = false;
for (PartnerLinkMyRoleImpl target : targets) {
routings = target.findRoute(mex);
boolean createInstance = target.isCreateInstance(mex);
@@ -241,7 +242,8 @@
}
// For a one way, once the engine is done, the mex can be safely released.
- if (mex.getPattern().equals(MessageExchange.MessageExchangePattern.REQUEST_ONLY)) {
+ // Sean: not really, if route is not found, we cannot delete the mex yet
+ if (mex.getPattern().equals(MessageExchange.MessageExchangePattern.REQUEST_ONLY) && routed) {
mex.release();
}
}
@@ -414,7 +416,7 @@
if (__log.isDebugEnabled()) {
__log.debug("Matcher event for iid " + we.getIID());
}
- processInstance.matcherEvent(we.getCorrelatorId(), we.getCorrelationKey());
+ processInstance.matcherEvent(we.getCorrelatorId(), we.getCorrelationKeySet());
}
}
} finally {
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java Thu Nov 20 08:26:25 2008
@@ -29,6 +29,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.common.CorrelationKey;
+import org.apache.ode.bpel.common.CorrelationKeySet;
import org.apache.ode.bpel.common.FaultException;
import org.apache.ode.bpel.common.ProcessState;
import org.apache.ode.bpel.dao.CorrelationSetDAO;
@@ -333,8 +334,6 @@
_outstandingRequests.register(pickResponseChannelStr, selectors);
- // TODO - ODE-58
-
// First check if we match to a new instance.
if (_instantiatingMessageExchange != null && _dao.getState() == ProcessState.STATE_READY) {
if (BpelProcess.__log.isDebugEnabled()) {
@@ -353,38 +352,6 @@
}
}
- // if (BpelProcess.__log.isDebugEnabled()) {
- // BpelProcess.__log.debug("SELECT: " + pickResponseChannel
- // + ": NEW instance match NOT FOUND; CHECKING MESSAGES. ");
- // }
- //
- //
- // for (int i = 0; i < selectors.length; ++i) {
- // CorrelatorDAO correlator = correlators.get(i);
- // Selector selector = selectors[i];
- // MessageExchangeDAO mexdao = correlator
- // .dequeueMessage(selector.correlationKey);
- // if (mexdao != null) {
- // // Found message matching one of our selectors.
- // if (BpelProcess.__log.isDebugEnabled()) {
- // BpelProcess.__log.debug("SELECT: " + pickResponseChannel
- // + ": FOUND match to MESSAGE " + mexdao + " on CKEY "
- // + selector.correlationKey);
- // }
- //
- // MyRoleMessageExchangeImpl mex = new MyRoleMessageExchangeImpl(
- // _bpelProcess._engine, mexdao);
- //
- // inputMsgMatch(pickResponseChannel.export(), i, mex);
- // return;
- // }
- // }
- //
- // if (BpelProcess.__log.isDebugEnabled()) {
- // BpelProcess.__log.debug("SELECT: " + pickResponseChannel
- // + ": MESSAGE match NOT FOUND.");
- // }
-
if (timeout != null) {
registerTimer(pickResponseChannel, timeout);
if (BpelProcess.__log.isDebugEnabled()) {
@@ -396,16 +363,14 @@
CorrelatorDAO correlator = correlators.get(i);
Selector selector = selectors[i];
- correlator.addRoute(pickResponseChannel.export(), _dao, i, selector.correlationKey, selector.route);
- scheduleCorrelatorMatcher(correlator.getCorrelatorId(), selector.correlationKey);
+ correlator.addRoute(pickResponseChannel.export(), _dao, i, selector.correlationKeySet, selector.route);
+ scheduleCorrelatorMatcher(correlator.getCorrelatorId(), selector.correlationKeySet);
if (BpelProcess.__log.isDebugEnabled()) {
BpelProcess.__log.debug("SELECT: " + pickResponseChannel + ": ADDED ROUTE " + correlator.getCorrelatorId() + ": "
- + selector.correlationKey + " --> " + _dao.getInstanceId());
+ + selector.correlationKeySet + " --> " + _dao.getInstanceId());
}
}
-
-
}
/**
@@ -670,12 +635,12 @@
_bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), timeToFire);
}
- private void scheduleCorrelatorMatcher(String correlatorId, CorrelationKey key) {
+ private void scheduleCorrelatorMatcher(String correlatorId, CorrelationKeySet keySet) {
WorkEvent we = new WorkEvent();
we.setIID(_dao.getInstanceId());
we.setType(WorkEvent.Type.MATCHER);
we.setCorrelatorId(correlatorId);
- we.setCorrelationKey(key);
+ we.setCorrelationKeySet(keySet);
we.setInMem(_bpelProcess.isInMemory());
_bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
}
@@ -1357,15 +1322,15 @@
* Attempt to match message exchanges on a correlator.
*
*/
- public void matcherEvent(String correlatorId, CorrelationKey ckey) {
+ public void matcherEvent(String correlatorId, CorrelationKeySet ckeySet) {
if (BpelProcess.__log.isDebugEnabled()) {
- __log.debug("MatcherEvent handling: correlatorId=" + correlatorId + ", ckey=" + ckey);
+ __log.debug("MatcherEvent handling: correlatorId=" + correlatorId + ", ckeySet=" + ckeySet);
}
CorrelatorDAO correlator = _dao.getProcess().getCorrelator(correlatorId);
// Find the route first, this is a SELECT FOR UPDATE on the "selector" row,
// So we want to acquire the lock before we do anthing else.
- List<MessageRouteDAO> mroutes = correlator.findRoute(ckey);
+ List<MessageRouteDAO> mroutes = correlator.findRoute(ckeySet);
if (mroutes == null || mroutes.size() == 0) {
// Ok, this means that a message arrived before we did, so nothing to do.
__log.debug("MatcherEvent handling: nothing to do, route no longer in DB");
@@ -1373,7 +1338,7 @@
}
// Now see if there is a message that matches this selector.
- MessageExchangeDAO mexdao = correlator.dequeueMessage(ckey);
+ MessageExchangeDAO mexdao = correlator.dequeueMessage(ckeySet);
if (mexdao != null) {
__log.debug("MatcherEvent handling: found matching message in DB (i.e. message arrived before <receive>)");
@@ -1385,7 +1350,7 @@
// Found message matching one of our selectors.
if (BpelProcess.__log.isDebugEnabled()) {
BpelProcess.__log.debug("SELECT: " + mroute.getGroupId() + ": matched to MESSAGE " + mexdao
- + " on CKEY " + ckey);
+ + " on CKEYSET " + ckeySet);
}
MyRoleMessageExchangeImpl mex = new MyRoleMessageExchangeImpl(_bpelProcess, _bpelProcess._engine, mexdao);
@@ -1396,6 +1361,8 @@
for (String groupId : groupIds) {
correlator.removeRoutes(groupId, _dao);
}
+
+ mexdao.release(true);
} else {
__log.debug("MatcherEvent handling: nothing to do, no matching message in DB");
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java Thu Nov 20 08:26:25 2008
@@ -19,7 +19,6 @@
package org.apache.ode.bpel.engine;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -31,8 +30,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.common.CorrelationKey;
+import org.apache.ode.bpel.common.CorrelationKeySet;
import org.apache.ode.bpel.common.FaultException;
import org.apache.ode.bpel.common.InvalidMessageException;
+import org.apache.ode.bpel.common.OptionalCorrelationKey;
import org.apache.ode.bpel.dao.CorrelatorDAO;
import org.apache.ode.bpel.dao.MessageRouteDAO;
import org.apache.ode.bpel.dao.ProcessDAO;
@@ -51,7 +52,6 @@
import org.apache.ode.bpel.o.OScope;
import org.apache.ode.bpel.runtime.InvalidProcessException;
import org.apache.ode.bpel.runtime.PROCESS;
-import org.apache.ode.utils.CollectionUtils;
import org.apache.ode.utils.ObjectPrinter;
import org.apache.ode.utils.msg.MessageBundle;
import org.w3c.dom.Element;
@@ -111,7 +111,7 @@
CorrelatorDAO correlator = _process.getProcessDAO().getCorrelator(correlatorId);
- CorrelationKey[] keys;
+ CorrelationKeySet keySet;
// We need to compute the correlation keys (based on the operation
// we can infer which correlation keys to compute - this is merely a set
@@ -119,7 +119,7 @@
// that is ever referenced in an <receive>/<onMessage> on this
// partnerlink/operation.
try {
- keys = computeCorrelationKeys(mex);
+ keySet = computeCorrelationKeys(mex);
} catch (InvalidMessageException ime) {
// We'd like to do a graceful exit here, no sense in rolling back due to a
// a message format problem.
@@ -132,30 +132,23 @@
String partnerSessionId = mex.getProperty(MessageExchange.PROPERTY_SEP_PARTNERROLE_SESSIONID);
if (__log.isDebugEnabled()) {
__log.debug("INPUTMSG: " + correlatorId + ": MSG RCVD keys="
- + CollectionUtils.makeCollection(HashSet.class, keys) + " mySessionId=" + mySessionId
+ + keySet + " mySessionId=" + mySessionId
+ " partnerSessionId=" + partnerSessionId);
}
- if (keys == null || keys.length == 0) {
- keys = new CorrelationKey[] { null };
- }
-
// Try to find a route for one of our keys.
- for (CorrelationKey key : keys) {
- List<MessageRouteDAO> messageRoutes = correlator.findRoute(key);
- if (messageRoutes != null && messageRoutes.size() > 0) {
- for (MessageRouteDAO messageRoute : messageRoutes) {
- if (__log.isDebugEnabled()) {
- __log.debug("INPUTMSG: " + correlatorId + ": ckey " + key + " route is to " + messageRoute);
- }
- routingInfos.add(new RoutingInfo(messageRoute, key, correlator, keys));
+ List<MessageRouteDAO> messageRoutes = correlator.findRoute(keySet);
+ if (messageRoutes != null && messageRoutes.size() > 0) {
+ for (MessageRouteDAO messageRoute : messageRoutes) {
+ if (__log.isDebugEnabled()) {
+ __log.debug("INPUTMSG: " + correlatorId + ": ckeySet " + messageRoute.getCorrelationKeySet() + " route is to " + messageRoute);
}
- break;
+ routingInfos.add(new RoutingInfo(messageRoute, messageRoute.getCorrelationKeySet(), correlator, keySet));
}
}
if (routingInfos.size() == 0) {
- routingInfos.add(new RoutingInfo(null, null, correlator, keys));
+ routingInfos.add(new RoutingInfo(null, null, correlator, keySet));
}
return routingInfos;
@@ -163,16 +156,17 @@
class RoutingInfo {
MessageRouteDAO messageRoute;
- CorrelationKey matchedKey;
+ CorrelationKeySet matchedKeySet;
CorrelatorDAO correlator;
- CorrelationKey[] keys;
+// CorrelationKey[] keys;
+ CorrelationKeySet wholeKeySet;
- public RoutingInfo(MessageRouteDAO messageRoute, CorrelationKey matchedKey,
- CorrelatorDAO correlator, CorrelationKey[] keys) {
+ public RoutingInfo(MessageRouteDAO messageRoute, CorrelationKeySet matchedKeySet,
+ CorrelatorDAO correlator, CorrelationKeySet wholeKeySet) {
this.messageRoute = messageRoute;
- this.matchedKey = matchedKey;
+ this.matchedKeySet = matchedKeySet;
this.correlator = correlator;
- this.keys = keys;
+ this.wholeKeySet = wholeKeySet;
}
}
@@ -232,7 +226,7 @@
// send process instance event
CorrelationMatchEvent evt = new CorrelationMatchEvent(new QName(_process.getOProcess().targetNamespace,
_process.getOProcess().getName()), _process.getProcessDAO().getProcessId(),
- instanceDao.getInstanceId(), routing.matchedKey);
+ instanceDao.getInstanceId(), routing.matchedKeySet);
evt.setPortType(mex.getPortType().getQName());
evt.setOperation(operation.getName());
evt.setMexId(mex.getMessageExchangeId());
@@ -261,7 +255,7 @@
// send event
CorrelationNoMatchEvent evt = new CorrelationNoMatchEvent(mex.getPortType().getQName(), mex
- .getOperation().getName(), mex.getMessageExchangeId(), routing.keys);
+ .getOperation().getName(), mex.getMessageExchangeId(), routing.wholeKeySet);
evt.setProcessId(_process.getProcessDAO().getProcessId());
evt.setProcessName(new QName(_process.getOProcess().targetNamespace, _process.getOProcess().getName()));
@@ -270,7 +264,7 @@
mex.setCorrelationStatus(MyRoleMessageExchange.CorrelationStatus.QUEUED);
// No match, means we add message exchange to the queue.
- routing.correlator.enqueueMessage(mex.getDAO(), routing.keys);
+ routing.correlator.enqueueMessage(mex.getDAO(), routing.wholeKeySet);
}
}
}
@@ -283,35 +277,44 @@
: MessageExchange.MessageExchangePattern.REQUEST_RESPONSE);
}
- @SuppressWarnings("unchecked")
private Operation getMyRoleOperation(String operationName) {
return _plinkDef.getMyRoleOperation(operationName);
}
- private CorrelationKey[] computeCorrelationKeys(MyRoleMessageExchangeImpl mex) {
+ private CorrelationKeySet computeCorrelationKeys(MyRoleMessageExchangeImpl mex) {
+ CorrelationKeySet keySet = new CorrelationKeySet();
+
Operation operation = mex.getOperation();
Element msg = mex.getRequest().getMessage();
javax.wsdl.Message msgDescription = operation.getInput().getMessage();
- List<CorrelationKey> keys = new ArrayList<CorrelationKey>();
- Set<OScope.CorrelationSet> csets = _plinkDef.getCorrelationSetsForOperation(operation);
+ Set<OScope.CorrelationSet> csets = _plinkDef.getNonInitiatingCorrelationSetsForOperation(operation);
+ for (OScope.CorrelationSet cset : csets) {
+ CorrelationKey key = computeCorrelationKey(cset,
+ _process.getOProcess().messageTypes.get(msgDescription.getQName()), msg);
+ keySet.add(key);
+ }
+ csets = _plinkDef.getJoinningCorrelationSetsForOperation(operation);
for (OScope.CorrelationSet cset : csets) {
CorrelationKey key = computeCorrelationKey(cset,
_process.getOProcess().messageTypes.get(msgDescription.getQName()), msg);
- keys.add(key);
+ keySet.add(key);
}
// Let's creata a key based on the sessionId
String mySessionId = mex.getProperty(MessageExchange.PROPERTY_SEP_MYROLE_SESSIONID);
if (mySessionId != null)
- keys.add(new CorrelationKey(-1, new String[] { mySessionId }));
+ keySet.add(new CorrelationKey(-1, new String[] { mySessionId }));
- return keys.toArray(new CorrelationKey[keys.size()]);
+ return keySet;
}
+ @SuppressWarnings("unchecked")
private CorrelationKey computeCorrelationKey(OScope.CorrelationSet cset, OMessageVarType messagetype,
Element msg) {
+ CorrelationKey key = null;
+
String[] values = new String[cset.properties.size()];
int jIdx = 0;
@@ -337,10 +340,16 @@
values[jIdx] = value;
}
- CorrelationKey key = new CorrelationKey(cset.getId(), values);
+ if( cset.hasJoinUseCases ) {
+ key = new OptionalCorrelationKey(cset.getId(), values);
+ } else {
+ key = new CorrelationKey(cset.getId(), values);
+ }
+
return key;
}
+ @SuppressWarnings("unchecked")
public boolean isOneWayOnly() {
PortType portType = _plinkDef.myRolePortType;
if (portType == null) {
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/WorkEvent.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/WorkEvent.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/WorkEvent.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/WorkEvent.java Thu Nov 20 08:26:25 2008
@@ -19,7 +19,7 @@
package org.apache.ode.bpel.engine;
-import org.apache.ode.bpel.common.CorrelationKey;
+import org.apache.ode.bpel.common.CorrelationKeySet;
import javax.xml.namespace.QName;
import java.util.HashMap;
@@ -93,12 +93,12 @@
_jobDetail.put("correlatorId", correlatorId);
}
- public CorrelationKey getCorrelationKey() {
- return new CorrelationKey((String) _jobDetail.get("ckey"));
+ public CorrelationKeySet getCorrelationKeySet() {
+ return new CorrelationKeySet((String) _jobDetail.get("ckeySet"));
}
- public void setCorrelationKey(CorrelationKey ckey) {
- _jobDetail.put("ckey", ckey == null ? null : ckey.toCanonicalString());
+ public void setCorrelationKeySet(CorrelationKeySet ckeySet) {
+ _jobDetail.put("ckeySet", ckeySet == null ? null : ckeySet.toCanonicalString());
}
public void setInMem(boolean inmem) {
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/CorrelatorDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/CorrelatorDaoImpl.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/CorrelatorDaoImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/CorrelatorDaoImpl.java Thu Nov 20 08:26:25 2008
@@ -21,18 +21,15 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.common.CorrelationKey;
+import org.apache.ode.bpel.common.CorrelationKeySet;
import org.apache.ode.bpel.dao.CorrelatorDAO;
import org.apache.ode.bpel.dao.MessageExchangeDAO;
import org.apache.ode.bpel.dao.MessageRouteDAO;
import org.apache.ode.bpel.dao.ProcessInstanceDAO;
-import org.apache.ode.utils.CollectionUtils;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import java.util.Set;
-
/**
* A very simple, in-memory implementation of the {@link CorrelatorDAO} interface.
@@ -52,14 +49,14 @@
_conn = conn;
}
- public MessageExchangeDAO dequeueMessage(CorrelationKey key) {
+ public MessageExchangeDAO dequeueMessage(CorrelationKeySet instanceKeySet) {
if (__log.isDebugEnabled()) {
- __log.debug("dequeueEarliest: MATCHING correlationKey=" + key);
+ __log.debug("dequeueEarliest: MATCHING correlationKey=" + instanceKeySet);
}
- for (Iterator i = _messages.iterator(); i.hasNext();) {
- MsgQueueEntry mqe = (MsgQueueEntry)i.next();
- Set<CorrelationKey> keyset = (Set<CorrelationKey>) CollectionUtils.makeCollection(HashSet.class, mqe.keys);
- if ((key == null) || (key.getValues().length == 0) || keyset.contains(key)) {
+ for (Iterator<MsgQueueEntry> i = _messages.iterator(); i.hasNext();) {
+ MsgQueueEntry mqe = i.next();
+ CorrelationKeySet aKeySet = mqe.keySet;
+ if (aKeySet.isRoutableTo(instanceKeySet, false)) {
i.remove();
return mqe.message;
}
@@ -70,34 +67,24 @@
return null;
}
- public List<MessageRouteDAO> findRoute(CorrelationKey key) {
+ public List<MessageRouteDAO> findRoute(CorrelationKeySet keySet) {
List<MessageRouteDAO> routes = new ArrayList<MessageRouteDAO>();
+
+ assert keySet != null;
if (__log.isDebugEnabled()) {
- __log.debug("findRoute: key=" + key);
+ __log.debug("findRoute: keySet=" + keySet);
}
List<ProcessInstanceDAO> targets = new ArrayList<ProcessInstanceDAO>();
for (MessageRouteDaoImpl we : _routes) {
- if ("all".equals(we.getRoute())) {
- if ((we._ckey == null && key == null) ||
- ((we._ckey != null && key == null) &&
- (we._ckey.getCSetId() == -1)) ||
- (we._ckey != null && key != null &&
- ((we._ckey.getCSetId() == -1 && key.getCSetId() == -1) ||
- we._ckey.equals(key)))) {
- routes.add(we);
- targets.add(we.getTargetInstance());
- }
- } else if ("one".equals(we.getRoute())) {
- if (!targets.contains(we.getTargetInstance()) &&
- ((we._ckey == null && key == null) ||
- (we._ckey != null && key != null &&
- we._ckey.equals(key)))) {
- routes.add(we);
- targets.add(we.getTargetInstance());
- }
- }
+ assert we._ckeySet != null;
+
+ if( keySet.isRoutableTo(we._ckeySet, "all".equals(we.getRoute())) ) {
+ routes.add(we);
+ targets.add(we.getTargetInstance());
+ }
}
+
return routes;
}
@@ -109,22 +96,21 @@
((ProcessInstanceDaoImpl)target).removeRoutes(routeGroupId);
}
- public void enqueueMessage(MessageExchangeDAO mex, CorrelationKey[] keys) {
+ public void enqueueMessage(MessageExchangeDAO mex, CorrelationKeySet keySet) {
if (__log.isDebugEnabled()) {
- __log.debug("enqueueProcessInvocation: data=" + mex + " keys="
- + CollectionUtils.makeCollection(ArrayList.class, keys));
+ __log.debug("enqueueProcessInvocation: data=" + mex + " keys=" + keySet);
}
- MsgQueueEntry mqe = new MsgQueueEntry(mex, keys);
+ MsgQueueEntry mqe = new MsgQueueEntry(mex, keySet);
_messages.add(mqe);
}
- public void addRoute(String routeId,ProcessInstanceDAO target, int idx, CorrelationKey key, String routePolicy) {
+ public void addRoute(String routeId,ProcessInstanceDAO target, int idx, CorrelationKeySet keySet, String routePolicy) {
if (__log.isDebugEnabled()) {
- __log.debug("addRoute: target=" + target + " correlationKey=" + key);
+ __log.debug("addRoute: target=" + target + " correlationKeySet=" + keySet);
}
- final MessageRouteDaoImpl mr = new MessageRouteDaoImpl((ProcessInstanceDaoImpl)target, routeId, key, idx, routePolicy);
+ final MessageRouteDaoImpl mr = new MessageRouteDaoImpl((ProcessInstanceDaoImpl)target, routeId, keySet, idx, routePolicy);
_conn.defer(new Runnable() {
public void run() {
_routes.add(mr);
@@ -163,12 +149,12 @@
private class MsgQueueEntry {
public final MessageExchangeDAO message;
- public final CorrelationKey[] keys;
+ public final CorrelationKeySet keySet;
private MsgQueueEntry(MessageExchangeDAO mex,
- CorrelationKey[] keys) {
+ CorrelationKeySet keySet) {
this.message = mex;
- this.keys = keys;
+ this.keySet = keySet;
}
}
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/MessageRouteDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/MessageRouteDaoImpl.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/MessageRouteDaoImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/MessageRouteDaoImpl.java Thu Nov 20 08:26:25 2008
@@ -18,7 +18,7 @@
*/
package org.apache.ode.bpel.memdao;
-import org.apache.ode.bpel.common.CorrelationKey;
+import org.apache.ode.bpel.common.CorrelationKeySet;
import org.apache.ode.bpel.dao.MessageRouteDAO;
import org.apache.ode.bpel.dao.ProcessInstanceDAO;
@@ -29,14 +29,14 @@
class MessageRouteDaoImpl extends DaoBaseImpl implements MessageRouteDAO {
ProcessInstanceDaoImpl _instance;
String _groupId;
- CorrelationKey _ckey;
+ CorrelationKeySet _ckeySet;
int _idx;
String _route;
- MessageRouteDaoImpl(ProcessInstanceDaoImpl owner, String groupId, CorrelationKey ckey, int idx, String routePolicy) {
+ MessageRouteDaoImpl(ProcessInstanceDaoImpl owner, String groupId, CorrelationKeySet ckeySet, int idx, String routePolicy) {
_instance = owner;
_groupId = groupId;
- _ckey = ckey;
+ _ckeySet = ckeySet;
_idx = idx;
_route = routePolicy;
}
@@ -56,4 +56,8 @@
public String getRoute() {
return _route;
}
+
+ public CorrelationKeySet getCorrelationKeySet() {
+ return _ckeySet;
+ }
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java Thu Nov 20 08:26:25 2008
@@ -24,6 +24,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.common.CorrelationKey;
+import org.apache.ode.bpel.common.CorrelationKeySet;
import org.apache.ode.bpel.common.FaultException;
import org.apache.ode.bpel.o.OEventHandler;
import org.apache.ode.bpel.o.OScope;
@@ -113,27 +114,26 @@
Selector selector;
try {
PickResponseChannel pickResponseChannel = newChannel(PickResponseChannel.class);
- CorrelationKey key = null;
+ CorrelationKeySet keySet = new CorrelationKeySet();
PartnerLinkInstance pLinkInstance = _scopeFrame.resolve(_oevent.partnerLink);
- if(_oevent.joinCorrelation != null) {
- if(getBpelRuntimeContext().isCorrelationInitialized(_scopeFrame.resolve(_oevent.joinCorrelation))) {
- key = getBpelRuntimeContext().readCorrelation(_scopeFrame.resolve(_oevent.joinCorrelation));
-
- assert key != null;
+ for( OScope.CorrelationSet cset : _oevent.joinCorrelations ) {
+ if(getBpelRuntimeContext().isCorrelationInitialized(_scopeFrame.resolve(cset))) {
+ keySet.add(getBpelRuntimeContext().readCorrelation(_scopeFrame.resolve(cset)));
}
- } else if (_oevent.matchCorrelation == null ) {
- // Adding a route for opaque correlation. In this case correlation is done on "out-of-band" session id.
- String sessionId = getBpelRuntimeContext().fetchMySessionId(pLinkInstance);
- key = new CorrelationKey(-1, new String[] {sessionId});
- } else {
- if (!getBpelRuntimeContext().isCorrelationInitialized(_scopeFrame.resolve(_oevent.matchCorrelation))) {
+ }
+ for( OScope.CorrelationSet cset : _oevent.matchCorrelations ) {
+ if (!getBpelRuntimeContext().isCorrelationInitialized(_scopeFrame.resolve(cset))) {
throw new FaultException(_oevent.getOwner().constants.qnCorrelationViolation,"Correlation not initialized.");
}
- key = getBpelRuntimeContext().readCorrelation(_scopeFrame.resolve(_oevent.matchCorrelation));
- assert key != null;
+ keySet.add(getBpelRuntimeContext().readCorrelation(_scopeFrame.resolve(cset)));
+ }
+ if( keySet.isEmpty() ) {
+ // Adding a route for opaque correlation. In this case correlation is done on "out-of-band" session id.
+ String sessionId = getBpelRuntimeContext().fetchMySessionId(pLinkInstance);
+ keySet.add(new CorrelationKey(-1, new String[] {sessionId}));
}
- selector = new Selector(0,pLinkInstance,_oevent.operation.getName(), _oevent.operation.getOutput() == null, _oevent.messageExchangeId, key, _oevent.route);
+ selector = new Selector(0,pLinkInstance,_oevent.operation.getName(), _oevent.operation.getOutput() == null, _oevent.messageExchangeId, keySet, _oevent.route);
getBpelRuntimeContext().select(pickResponseChannel, null, false, new Selector[] { selector} );
instance(new WAITING(pickResponseChannel));
} catch(FaultException e){
@@ -252,14 +252,13 @@
}
}
-
try {
for (OScope.CorrelationSet cset : _oevent.initCorrelations) {
initializeCorrelation(ehScopeFrame.resolve(cset), ehScopeFrame.resolve(_oevent.variable));
}
- if( _oevent.joinCorrelation != null ) {
+ for( OScope.CorrelationSet cset : _oevent.joinCorrelations ) {
// will be ignored if already initialized
- initializeCorrelation(ehScopeFrame.resolve(_oevent.joinCorrelation), ehScopeFrame.resolve(_oevent.variable));
+ initializeCorrelation(ehScopeFrame.resolve(cset), ehScopeFrame.resolve(_oevent.variable));
}
if (_oevent.partnerLink.hasPartnerRole()) {
@@ -278,10 +277,6 @@
getBpelRuntimeContext().initializePartnersSessionId(ehScopeFrame.resolve(_oevent.partnerLink),
partnersSessionId);
}
-
-
-
-
} catch (FaultException e) {
__log.error(e);
if (_fault == null) {
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java Thu Nov 20 08:26:25 2008
@@ -21,12 +21,15 @@
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
import javax.xml.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.common.CorrelationKey;
+import org.apache.ode.bpel.common.CorrelationKeySet;
import org.apache.ode.bpel.common.FaultException;
import org.apache.ode.bpel.evt.VariableModificationEvent;
import org.apache.ode.bpel.explang.EvaluationException;
@@ -35,7 +38,6 @@
import org.apache.ode.bpel.o.OPickReceive;
import org.apache.ode.bpel.o.OScope;
import org.apache.ode.bpel.o.OMessageVarType.Part;
-import org.apache.ode.bpel.o.OScope.CorrelationSet;
import org.apache.ode.bpel.runtime.channels.FaultData;
import org.apache.ode.bpel.runtime.channels.PickResponseChannel;
import org.apache.ode.bpel.runtime.channels.PickResponseChannelListener;
@@ -78,20 +80,20 @@
selectors = new Selector[_opick.onMessages.size()];
int idx = 0;
for (OPickReceive.OnMessage onMessage : _opick.onMessages) {
- CorrelationSet matchCorrelation = null;
- if( onMessage.joinCorrelation != null &&
- getBpelRuntimeContext().isCorrelationInitialized(_scopeFrame.resolve(onMessage.joinCorrelation))) {
- // use this join correlation as a match correlation to resolve the correlation key
- matchCorrelation = onMessage.joinCorrelation;
- } else {
- matchCorrelation = onMessage.matchCorrelation;
- }
+ // collect all initiated correlations
+ Set<OScope.CorrelationSet> matchCorrelations = new HashSet<OScope.CorrelationSet>();
+ matchCorrelations.addAll(onMessage.matchCorrelations);
+ for( OScope.CorrelationSet cset : onMessage.joinCorrelations ) {
+ if(getBpelRuntimeContext().isCorrelationInitialized(_scopeFrame.resolve(cset))) {
+ matchCorrelations.add(cset);
+ }
+ }
PartnerLinkInstance pLinkInstance = _scopeFrame.resolve(onMessage.partnerLink);
- CorrelationKey key = resolveCorrelationKey(pLinkInstance, matchCorrelation);
+ CorrelationKeySet keySet = resolveCorrelationKey(pLinkInstance, matchCorrelations);
selectors[idx] = new Selector(idx, pLinkInstance, onMessage.operation.getName(), onMessage.operation
- .getOutput() == null, onMessage.messageExchangeId, key, onMessage.route);
+ .getOutput() == null, onMessage.messageExchangeId, keySet, onMessage.route);
idx++;
}
@@ -137,29 +139,36 @@
* @return returns the resolved CorrelationKey
* @throws FaultException thrown when the correlation is not initialized and createInstance flag is not set
*/
- private CorrelationKey resolveCorrelationKey(PartnerLinkInstance pLinkInstance, OScope.CorrelationSet matchCorrelation) throws FaultException {
- CorrelationKey key = null; // this will be the case for the
- // createInstance activity
+ private CorrelationKeySet resolveCorrelationKey(PartnerLinkInstance pLinkInstance, Set<OScope.CorrelationSet> matchCorrelations) throws FaultException {
+ CorrelationKeySet keySet = new CorrelationKeySet(); // is empty for the case of the createInstance activity
- if (matchCorrelation == null && !_opick.createInstanceFlag) {
+ if (matchCorrelations.isEmpty() && !_opick.createInstanceFlag) {
// Adding a route for opaque correlation. In this case,
// correlation is on "out-of-band" session-id
String sessionId = getBpelRuntimeContext().fetchMySessionId(pLinkInstance);
- key = new CorrelationKey(-1, new String[] { sessionId });
- } else if (matchCorrelation != null) {
- if (!getBpelRuntimeContext().isCorrelationInitialized(
- _scopeFrame.resolve(matchCorrelation))) {
- if (!_opick.createInstanceFlag)
- throw new FaultException(_opick.getOwner().constants.qnCorrelationViolation,
- "Correlation not initialized.");
- } else {
- key = getBpelRuntimeContext().readCorrelation(_scopeFrame.resolve(matchCorrelation));
-
- assert key != null;
- }
+ keySet.add(new CorrelationKey(-1, new String[] { sessionId }));
+ } else if (!matchCorrelations.isEmpty()) {
+ for( OScope.CorrelationSet cset : matchCorrelations ) {
+ CorrelationKey key = null;
+
+ if(!getBpelRuntimeContext().isCorrelationInitialized(
+ _scopeFrame.resolve(cset))) {
+ if (!_opick.createInstanceFlag) {
+ throw new FaultException(_opick.getOwner().constants.qnCorrelationViolation,
+ "Correlation not initialized.");
+ }
+ } else {
+ key = getBpelRuntimeContext().readCorrelation(_scopeFrame.resolve(cset));
+ assert key != null;
+ }
+
+ if( key != null ) {
+ keySet.add(key);
+ }
+ }
}
- return key;
+ return keySet;
}
/**
@@ -269,7 +278,6 @@
}
public void run() {
-
object(false, new PickResponseChannelListener(_pickResponseChannel) {
private static final long serialVersionUID = -8237296827418738011L;
@@ -294,11 +302,10 @@
for (OScope.CorrelationSet cset : onMessage.initCorrelations) {
initializeCorrelation(_scopeFrame.resolve(cset), _scopeFrame.resolve(onMessage.variable));
}
- OScope.CorrelationSet cset = onMessage.joinCorrelation;
- if( cset != null ) {
+ for( OScope.CorrelationSet cset : onMessage.joinCorrelations ) {
// will be ignored if already initialized
initializeCorrelation(_scopeFrame.resolve(cset), _scopeFrame.resolve(onMessage.variable));
- }
+ }
if (onMessage.partnerLink.hasPartnerRole()) {
// Trying to initialize partner epr based on a
// message-provided epr/session.
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/Selector.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/Selector.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/Selector.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/Selector.java Thu Nov 20 08:26:25 2008
@@ -19,6 +19,7 @@
package org.apache.ode.bpel.runtime;
import org.apache.ode.bpel.common.CorrelationKey;
+import org.apache.ode.bpel.common.CorrelationKeySet;
import org.apache.ode.utils.ObjectPrinter;
import java.io.Serializable;
@@ -27,17 +28,20 @@
private static final long serialVersionUID = 1L;
public final PartnerLinkInstance plinkInstance;
- public final CorrelationKey correlationKey;
+ // here for the backward compatibility
+ @SuppressWarnings("unused")
+ private final CorrelationKey correlationKey = null;
+ public final CorrelationKeySet correlationKeySet;
public final String opName;
public final String messageExchangeId;
public final int idx;
public final boolean oneWay;
public final String route;
- Selector(int idx, PartnerLinkInstance plinkInstance, String opName, boolean oneWay, String mexId, CorrelationKey ckey, String route) {
+ Selector(int idx, PartnerLinkInstance plinkInstance, String opName, boolean oneWay, String mexId, CorrelationKeySet keySet, String route) {
this.idx = idx;
this.plinkInstance = plinkInstance;
- this.correlationKey = ckey;
+ this.correlationKeySet = keySet;
this.opName = opName;
this.messageExchangeId = mexId;
this.oneWay = oneWay;
@@ -47,7 +51,7 @@
public String toString() {
return ObjectPrinter.toString(this, new Object[] {
"plinkInstnace", plinkInstance,
- "ckey", correlationKey,
+ "ckeySet", correlationKeySet,
"opName" ,opName,
"oneWay", oneWay ? "yes" : "no",
"mexId", messageExchangeId,
Modified: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/MessageRouting20Test.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/MessageRouting20Test.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/MessageRouting20Test.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/MessageRouting20Test.java Thu Nov 20 08:26:25 2008
@@ -55,6 +55,22 @@
go("/bpel/2.0/TestCorrelationJoinReply");
}
+ @Test public void testCorrelationMulti() throws Throwable {
+ go("/bpel/2.0/TestCorrelationMulti");
+ }
+
+ @Test public void testCorrelationMultiNegative() throws Throwable {
+ go("/bpel/2.0/TestCorrelationMultiNegative");
+ }
+
+ @Test public void testCorrelationMultiJoin() throws Throwable {
+ go("/bpel/2.0/TestCorrelationMultiJoin");
+ }
+
+ @Test public void testCorrelationMultiComplex() throws Throwable {
+ go("/bpel/2.0/TestCorrelationMultiComplex");
+ }
+
@Ignore("fix test bed for handling ASYNC mex") @Test public void testCorrelationOpaque() throws Throwable {
//TODO Fix me, we need to capture the session id to send it in the second test message
go("/bpel/2.0/TestCorrelationOpaque");
Modified: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/PubSubTest.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/PubSubTest.java?rev=719270&r1=719269&r2=719270&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/PubSubTest.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/PubSubTest.java Thu Nov 20 08:26:25 2008
@@ -26,7 +26,7 @@
go("/bpel/2.0/TestPubSubInProc");
}
- @Test public void testPubSubOutOfProc() throws Throwable {
+ @Ignore @Test public void testPubSubOutOfProc() throws Throwable {
go("/bpel/2.0/TestPubSubOutOfProc");
}
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/deploy.xml
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/deploy.xml?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/deploy.xml (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/deploy.xml Thu Nov 20 08:26:25 2008
@@ -0,0 +1,32 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+ xmlns:pns="http://ode/bpel/unit-test/testCorrelation"
+ xmlns:prns="http://ode/bpel/unit-test/ProbeService.wsdl"
+ xmlns:wns="http://ode/bpel/unit-test/testCorrelation.wsdl">
+
+
+ <process name="pns:TestCorrelationProcess">
+ <active>true</active>
+ <provide partnerLink="request">
+ <service name="wns:testCorrelationService" port="wns:testCorrelationPort"/>
+ </provide>
+ </process>
+</deploy>
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/test1.properties
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/test1.properties?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/test1.properties (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/test1.properties Thu Nov 20 08:26:25 2008
@@ -0,0 +1,22 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+namespace=http://ode/bpel/unit-test/testCorrelation.wsdl
+service=testCorrelationService
+operation=request
+request1=<message><requestMessageData><correlationID1>CORR1</correlationID1><correlationID2>CORR2</correlationID2><correlationID3>CORR3</correlationID3><requestText>1;</requestText><requestEnd>no</requestEnd></requestMessageData></message>
+response1=.*1;2;.*
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/test2.properties
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/test2.properties?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/test2.properties (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/test2.properties Thu Nov 20 08:26:25 2008
@@ -0,0 +1,21 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+namespace=http://ode/bpel/unit-test/testCorrelation.wsdl
+service=testCorrelationService
+operation=continue
+request1=<message><requestMessageData><correlationID1>CORR1</correlationID1><correlationID2>CORR2</correlationID2><correlationID3>CORR3</correlationID3><requestText>2;</requestText><requestEnd>yes</requestEnd></requestMessageData></message>
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/testCorrelation.bpel
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/testCorrelation.bpel?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/testCorrelation.bpel (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/testCorrelation.bpel Thu Nov 20 08:26:25 2008
@@ -0,0 +1,87 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<process xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://docs.oasis-open.org/wsbpel/2.0/process/executable ../../../../../../../bpel-schemas/src/main/resources/wsbpel_executable.xsd"
+ xmlns:tns="http://ode/bpel/unit-test/testCorrelation"
+ xmlns:wns="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ name="TestCorrelationProcess"
+ targetNamespace="http://ode/bpel/unit-test/testCorrelation"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ suppressJoinFailure="yes">
+
+ <import location="testCorrelation.wsdl"
+ namespace="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <!-- test correlated receive -->
+ <partnerLinks>
+ <partnerLink name="request" partnerLinkType="wns:testCorrelationRequest" myRole="testCorrelationService"/>
+ </partnerLinks>
+ <variables>
+ <variable name="request" messageType="wns:requestMessage"/>
+ <variable name="reply" messageType="wns:replyMessage"/>
+ </variables>
+ <correlationSets>
+ <correlationSet name="testCorr1" properties="wns:testCorrelationID1"/>
+ <correlationSet name="testCorr2" properties="wns:testCorrelationID2"/>
+ <correlationSet name="testCorr3" properties="wns:testCorrelationID3"/>
+ </correlationSets>
+ <sequence>
+ <receive name="receive1" partnerLink="request" portType="wns:testCorrelationPT" operation="request" variable="request" createInstance="yes">
+ <correlations>
+ <correlation set="testCorr1" initiate="yes"/>
+ <correlation set="testCorr2" initiate="yes"/>
+ </correlations>
+ </receive>
+ <!-- Copy input variables to internal accumulators -->
+ <assign name="assign1">
+ <copy>
+ <from variable="request" property="wns:testCorrelationID1"/>
+ <to variable="reply" part="replyID"/>
+ </copy>
+ <copy>
+ <from>
+ $request.requestMessageData/requestText
+ </from>
+ <to variable="reply" part="replyText"/>
+ </copy>
+ </assign>
+
+ <receive name="receive2" partnerLink="request" portType="wns:testCorrelationPT" operation="continue" variable="request">
+ <correlations>
+ <correlation set="testCorr1" initiate="no"/>
+ <correlation set="testCorr2" initiate="no"/>
+ <correlation set="testCorr3" initiate="yes"/>
+ </correlations>
+ </receive>
+ <assign>
+ <copy>
+ <from>
+ concat($reply.replyText, $request.requestMessageData/requestText)
+ </from>
+ <to variable="reply" part="replyText"/>
+ </copy>
+ </assign>
+
+ <reply name="reply" partnerLink="request" portType="wns:testCorrelationPT" operation="request" variable="reply"> </reply>
+ </sequence>
+</process>
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/testCorrelation.wsdl
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/testCorrelation.wsdl?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/testCorrelation.wsdl (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMulti/testCorrelation.wsdl Thu Nov 20 08:26:25 2008
@@ -0,0 +1,106 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<wsdl:definitions
+ targetNamespace="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ xmlns:tns="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ xmlns:typens="http://ode/bpel/unit-test/testCorrelation.wsdl.types"
+ xmlns="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:prop="http://docs.oasis-open.org/wsbpel/2.0/varprop">
+
+
+ <!-- type defs -->
+ <wsdl:types>
+ <xsd:schema
+ targetNamespace="http://ode/bpel/unit-test/testCorrelation.wsdl.types"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:complexType name="testMessage">
+ <xsd:sequence>
+ <xsd:element name="correlationID1" type="xsd:string"/>
+ <xsd:element name="correlationID2" type="xsd:string"/>
+ <xsd:element name="correlationID3" type="xsd:string"/>
+ <xsd:element name="requestText" type="xsd:string"/>
+ <xsd:element name="requestEnd" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+
+
+ <wsdl:message name="requestMessage">
+ <wsdl:part name="requestMessageData" type="typens:testMessage"/>
+ </wsdl:message>
+
+ <wsdl:message name="replyMessage">
+ <wsdl:part name="replyID" type="xsd:string"/>
+ <wsdl:part name="replyText" type="xsd:string"/>
+ </wsdl:message>
+
+
+ <wsdl:portType name="testCorrelationPT">
+ <wsdl:operation name="request">
+ <wsdl:input message="requestMessage"/>
+ <wsdl:output message="replyMessage"/>
+ </wsdl:operation>
+ <wsdl:operation name="continue">
+ <wsdl:input message="requestMessage"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="TestCorrelationBinding" type="tns:testCorrelationPT">
+ <wsdl:operation name="request">
+ </wsdl:operation>
+ <wsdl:operation name="continue">
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="TestCorrelationService">
+ <wsdl:port name="TestCorrelationPort" binding="tns:TestCorrelationBinding">
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="testCorrelationRequest">
+ <plnk:role name="testCorrelationService" portType="testCorrelationPT"/>
+ </plnk:partnerLinkType>
+
+ <prop:property name="testCorrelationID1" type="xsd:string"/>
+ <prop:propertyAlias propertyName="tns:testCorrelationID1" messageType="tns:requestMessage" part="requestMessageData">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ correlationID1
+ </prop:query>
+ </prop:propertyAlias>
+
+ <prop:property name="testCorrelationID2" type="xsd:string"/>
+ <prop:propertyAlias propertyName="tns:testCorrelationID2" messageType="tns:requestMessage" part="requestMessageData">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ correlationID2
+ </prop:query>
+ </prop:propertyAlias>
+
+ <prop:property name="testCorrelationID3" type="xsd:string"/>
+ <prop:propertyAlias propertyName="tns:testCorrelationID3" messageType="tns:requestMessage" part="requestMessageData">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ correlationID3
+ </prop:query>
+ </prop:propertyAlias>
+</wsdl:definitions>
\ No newline at end of file
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/deploy.xml
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/deploy.xml?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/deploy.xml (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/deploy.xml Thu Nov 20 08:26:25 2008
@@ -0,0 +1,35 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+ xmlns:pns="http://ode/bpel/unit-test/testCorrelation"
+ xmlns:prns="http://ode/bpel/unit-test/ProbeService.wsdl"
+ xmlns:wns="http://ode/bpel/unit-test/testCorrelation.wsdl">
+
+
+ <process name="pns:TestCorrelationProcess">
+ <active>true</active>
+ <provide partnerLink="request">
+ <service name="wns:testCorrelationService" port="wns:testCorrelationPort"/>
+ </provide>
+ <invoke partnerLink="probe">
+ <service name="prns:testCorrelationService" port="prns:testCorrelationPort"/>
+ </invoke>
+ </process>
+</deploy>
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test1.properties
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test1.properties?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test1.properties (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test1.properties Thu Nov 20 08:26:25 2008
@@ -0,0 +1,22 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+namespace=http://ode/bpel/unit-test/testCorrelation.wsdl
+service=testCorrelationService
+operation=request
+request1=<message><requestMessageData><correlationID1>CORR1</correlationID1><correlationID2>CORR2</correlationID2><correlationID3>CORR3</correlationID3><requestText>1;</requestText><requestEnd>no</requestEnd></requestMessageData></message>
+response1=.*1;2;3;4;4; -> CORR1.*
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test2.properties
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test2.properties?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test2.properties (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test2.properties Thu Nov 20 08:26:25 2008
@@ -0,0 +1,21 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+namespace=http://ode/bpel/unit-test/testCorrelation.wsdl
+service=testCorrelationService
+operation=receive2
+request1=<message><requestMessageData><correlationID1>CORR1</correlationID1><correlationID2>CORR2</correlationID2><correlationID3>CORR3</correlationID3><requestText>2;</requestText><requestEnd>yes</requestEnd></requestMessageData></message>
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test3.properties
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test3.properties?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test3.properties (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test3.properties Thu Nov 20 08:26:25 2008
@@ -0,0 +1,21 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+namespace=http://ode/bpel/unit-test/testCorrelation.wsdl
+service=testCorrelationService
+operation=receive3
+request1=<message><requestMessageData><correlationID1>CORR1</correlationID1><correlationID2>CORR2</correlationID2><correlationID3>CORR3</correlationID3><requestText>3;</requestText><requestEnd>yes</requestEnd></requestMessageData></message>
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test4.properties
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test4.properties?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test4.properties (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/test4.properties Thu Nov 20 08:26:25 2008
@@ -0,0 +1,21 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+namespace=http://ode/bpel/unit-test/testCorrelation.wsdl
+service=testCorrelationService
+operation=receive4
+request1=<message><requestMessageData><correlationID1>CORR1</correlationID1><correlationID2>CORR2</correlationID2><correlationID3>CORR3</correlationID3><requestText>4;</requestText><requestEnd>yes</requestEnd></requestMessageData></message>
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/testCorrelation.bpel
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/testCorrelation.bpel?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/testCorrelation.bpel (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/testCorrelation.bpel Thu Nov 20 08:26:25 2008
@@ -0,0 +1,179 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<process xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://docs.oasis-open.org/wsbpel/2.0/process/executable ../../../../../../../bpel-schemas/src/main/resources/wsbpel_executable.xsd"
+ xmlns:tns="http://ode/bpel/unit-test/testCorrelation"
+ xmlns:prb="http://ode/bpel/unit-test/ProbeService.wsdl"
+ xmlns:wns="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ name="TestCorrelationProcess"
+ targetNamespace="http://ode/bpel/unit-test/testCorrelation"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ suppressJoinFailure="yes">
+
+ <import location="../ProbeService/probeService.wsdl"
+ namespace="http://ode/bpel/unit-test/ProbeService.wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <import location="testCorrelation.wsdl"
+ namespace="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <!-- test correlated receive -->
+ <partnerLinks>
+ <partnerLink name="request" partnerLinkType="wns:testCorrelationRequest" myRole="testCorrelationService"/>
+ <partnerLink name="probe" partnerLinkType="wns:probeRequest" partnerRole="probeService" initializePartnerRole="yes"/>
+ </partnerLinks>
+ <variables>
+ <variable name="request" messageType="wns:requestMessage"/>
+ <variable name="probeInput" messageType="prb:probeMessage"/>
+ <variable name="reply" messageType="wns:replyMessage"/>
+ </variables>
+ <correlationSets>
+ <correlationSet name="testCorr1" properties="wns:testCorrelationID1"/>
+ <correlationSet name="testCorr2" properties="wns:testCorrelationID2"/>
+ <correlationSet name="testCorr3" properties="wns:testCorrelationID3"/>
+ <correlationSet name="testCorr4" properties="wns:testCorrelationID4"/>
+ <correlationSet name="testCorr5" properties="wns:testCorrelationID5"/>
+ </correlationSets>
+ <sequence>
+ <receive name="receive1" partnerLink="request" portType="wns:testCorrelationPT" operation="request" variable="request" createInstance="yes">
+ <correlations>
+ <correlation set="testCorr1" initiate="yes"/>
+ <correlation set="testCorr2" initiate="yes"/>
+ </correlations>
+ </receive>
+ <!-- Copy input variables to internal accumulators -->
+ <assign name="assign1">
+ <copy>
+ <from variable="request" property="wns:testCorrelationID1"/>
+ <to variable="reply" part="replyID"/>
+ </copy>
+ <copy>
+ <from>
+ $request.requestMessageData/requestText
+ </from>
+ <to variable="reply" part="replyText"/>
+ </copy>
+ </assign>
+
+ <scope name="subprocess">
+ <eventHandlers>
+ <onEvent partnerLink="request" portType="wns:testCorrelationPT" operation="receive2" variable="request" messageType="wns:requestMessage">
+ <correlations>
+ <correlation set="testCorr1" initiate="no"/>
+ <correlation set="testCorr2" initiate="yes"/>
+ </correlations>
+ <scope name="receive3">
+ <sequence>
+ <assign>
+ <copy>
+ <from>
+ concat($reply.replyText, $request.requestMessageData/requestText)
+ </from>
+ <to variable="reply" part="replyText"/>
+ </copy>
+ </assign>
+ </sequence>
+ </scope>
+ </onEvent>
+ </eventHandlers>
+ <sequence>
+ <pick>
+ <onMessage partnerLink="request" portType="wns:testCorrelationPT" operation="receive_never" variable="request">
+ <correlations>
+ <correlation set="testCorr1" initiate="no"/>
+ <correlation set="testCorr2" initiate="no"/>
+ <correlation set="testCorr3" initiate="yes"/>
+ </correlations>
+ <sequence>
+ <empty name="donothing"/>
+ </sequence>
+ </onMessage>
+ <onMessage partnerLink="request" portType="wns:testCorrelationPT" operation="receive3" variable="request">
+ <correlations>
+ <correlation set="testCorr1" initiate="no"/>
+ <correlation set="testCorr2" initiate="no"/>
+ <correlation set="testCorr3" initiate="yes"/>
+ </correlations>
+ <sequence>
+ <assign>
+ <copy>
+ <from>
+ concat($reply.replyText, $request.requestMessageData/requestText)
+ </from>
+ <to variable="reply" part="replyText"/>
+ </copy>
+ </assign>
+ </sequence>
+ </onMessage>
+ </pick>
+ <receive name="receive4" partnerLink="request" portType="wns:testCorrelationPT" operation="receive4" variable="request" createInstance="yes">
+ <correlations>
+ <correlation set="testCorr1" initiate="join"/>
+ <correlation set="testCorr2" initiate="join"/>
+ <correlation set="testCorr3" initiate="join"/>
+ </correlations>
+ </receive>
+ <!-- Copy input variables to internal accumulators -->
+ <assign name="assign4">
+ <copy>
+ <from>
+ concat($reply.replyText, $request.requestMessageData/requestText)
+ </from>
+ <to variable="reply" part="replyText"/>
+ </copy>
+ </assign>
+
+ <assign name="assign5">
+ <copy>
+ <from>$request.requestMessageData/correlationID1</from>
+ <to variable="probeInput" part="probeName"/>
+ </copy>
+ <copy>
+ <from>$request.requestMessageData/requestText</from>
+ <to variable="probeInput" part="probeData"/>
+ </copy>
+ </assign>
+ <invoke name="probe" partnerLink="probe" portType="prb:probeMessagePT" operation="probe" inputVariable="probeInput" outputVariable="probeInput">
+ <correlations>
+ <correlation set="testCorr1" initiate="join"/>
+ <correlation set="testCorr2" initiate="join"/>
+ <correlation set="testCorr4" initiate="join"/>
+ <correlation set="testCorr5" initiate="join"/>
+ </correlations>
+ </invoke>
+ <assign name="assign6">
+ <copy>
+ <from>concat($reply.replyText, $probeInput.probeData)</from>
+ <to variable="reply" part="replyText"/>
+ </copy>
+ </assign>
+
+ <reply name="reply" partnerLink="request" portType="wns:testCorrelationPT" operation="request" variable="reply">
+ <correlations>
+ <correlation set="testCorr4" initiate="join"/>
+ <correlation set="testCorr5" initiate="join"/>
+ </correlations>
+ </reply>
+ </sequence>
+ </scope>
+ </sequence>
+</process>
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/testCorrelation.wsdl
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/testCorrelation.wsdl?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/testCorrelation.wsdl (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiComplex/testCorrelation.wsdl Thu Nov 20 08:26:25 2008
@@ -0,0 +1,158 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<wsdl:definitions
+ targetNamespace="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ xmlns:tns="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ xmlns:typens="http://ode/bpel/unit-test/testCorrelation.wsdl.types"
+ xmlns="http://ode/bpel/unit-test/testCorrelation.wsdl"
+ xmlns:prb="http://ode/bpel/unit-test/ProbeService.wsdl"
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:prop="http://docs.oasis-open.org/wsbpel/2.0/varprop">
+
+
+ <!-- type defs -->
+ <wsdl:types>
+ <xsd:schema
+ targetNamespace="http://ode/bpel/unit-test/testCorrelation.wsdl.types"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:complexType name="testMessage">
+ <xsd:sequence>
+ <xsd:element name="correlationID1" type="xsd:string"/>
+ <xsd:element name="correlationID2" type="xsd:string"/>
+ <xsd:element name="correlationID3" type="xsd:string"/>
+ <xsd:element name="requestText" type="xsd:string"/>
+ <xsd:element name="requestEnd" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+
+
+ <wsdl:message name="requestMessage">
+ <wsdl:part name="requestMessageData" type="typens:testMessage"/>
+ </wsdl:message>
+
+ <wsdl:message name="replyMessage">
+ <wsdl:part name="replyID" type="xsd:string"/>
+ <wsdl:part name="replyText" type="xsd:string"/>
+ </wsdl:message>
+
+
+ <wsdl:portType name="testCorrelationPT">
+ <wsdl:operation name="request">
+ <wsdl:input message="requestMessage"/>
+ <wsdl:output message="replyMessage"/>
+ </wsdl:operation>
+ <wsdl:operation name="continue">
+ <wsdl:input message="requestMessage"/>
+ </wsdl:operation>
+ <wsdl:operation name="receive2">
+ <wsdl:input message="requestMessage"/>
+ </wsdl:operation>
+ <wsdl:operation name="receive3">
+ <wsdl:input message="requestMessage"/>
+ </wsdl:operation>
+ <wsdl:operation name="receive4">
+ <wsdl:input message="requestMessage"/>
+ </wsdl:operation>
+ <wsdl:operation name="receive_never">
+ <wsdl:input message="requestMessage"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="TestCorrelationBinding" type="tns:testCorrelationPT">
+ <wsdl:operation name="request"/>
+ <wsdl:operation name="receive2"/>
+ <wsdl:operation name="receive3"/>
+ <wsdl:operation name="receive4"/>
+ <wsdl:operation name="receive_never"/>
+ <wsdl:operation name="continue"/>
+ </wsdl:binding>
+ <wsdl:service name="TestCorrelationService">
+ <wsdl:port name="TestCorrelationPort" binding="tns:TestCorrelationBinding">
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="testCorrelationRequest">
+ <plnk:role name="testCorrelationService" portType="testCorrelationPT"/>
+ </plnk:partnerLinkType>
+ <plnk:partnerLinkType name="probeRequest">
+ <plnk:role name="probeService" portType="prb:probeMessagePT"/>
+ </plnk:partnerLinkType>
+
+ <prop:property name="testCorrelationID1" type="xsd:string"/>
+ <prop:propertyAlias propertyName="tns:testCorrelationID1" messageType="tns:requestMessage" part="requestMessageData">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ correlationID1
+ </prop:query>
+ </prop:propertyAlias>
+ <prop:propertyAlias propertyName="tns:testCorrelationID1" messageType="prb:probeMessage" part="probeName">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ .
+ </prop:query>
+ </prop:propertyAlias>
+
+ <prop:property name="testCorrelationID2" type="xsd:string"/>
+ <prop:propertyAlias propertyName="tns:testCorrelationID2" messageType="tns:requestMessage" part="requestMessageData">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ correlationID2
+ </prop:query>
+ </prop:propertyAlias>
+ <prop:propertyAlias propertyName="tns:testCorrelationID2" messageType="prb:probeMessage" part="probeName">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ .
+ </prop:query>
+ </prop:propertyAlias>
+
+ <prop:property name="testCorrelationID3" type="xsd:string"/>
+ <prop:propertyAlias propertyName="tns:testCorrelationID3" messageType="tns:requestMessage" part="requestMessageData">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ correlationID3
+ </prop:query>
+ </prop:propertyAlias>
+
+ <prop:property name="testCorrelationID4" type="xsd:string"/>
+ <prop:propertyAlias propertyName="tns:testCorrelationID4" messageType="tns:requestMessage" part="requestMessageData">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ requestText
+ </prop:query>
+ </prop:propertyAlias>
+ <prop:propertyAlias propertyName="tns:testCorrelationID4" messageType="tns:replyMessage" part="replyID">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ .
+ </prop:query>
+ </prop:propertyAlias>
+
+ <prop:property name="testCorrelationID5" type="xsd:string"/>
+ <prop:propertyAlias propertyName="tns:testCorrelationID5" messageType="tns:requestMessage" part="requestMessageData">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ requestText
+ </prop:query>
+ </prop:propertyAlias>
+ <prop:propertyAlias propertyName="tns:testCorrelationID5" messageType="tns:replyMessage" part="replyText">
+ <prop:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+ .
+ </prop:query>
+ </prop:propertyAlias>
+</wsdl:definitions>
\ No newline at end of file
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiJoin/deploy.xml
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiJoin/deploy.xml?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiJoin/deploy.xml (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiJoin/deploy.xml Thu Nov 20 08:26:25 2008
@@ -0,0 +1,32 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+-->
+
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+ xmlns:pns="http://ode/bpel/unit-test/testCorrelation"
+ xmlns:prns="http://ode/bpel/unit-test/ProbeService.wsdl"
+ xmlns:wns="http://ode/bpel/unit-test/testCorrelation.wsdl">
+
+
+ <process name="pns:TestCorrelationProcess">
+ <active>true</active>
+ <provide partnerLink="request">
+ <service name="wns:testCorrelationService" port="wns:testCorrelationPort"/>
+ </provide>
+ </process>
+</deploy>
Added: ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiJoin/test1.properties
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiJoin/test1.properties?rev=719270&view=auto
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiJoin/test1.properties (added)
+++ ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestCorrelationMultiJoin/test1.properties Thu Nov 20 08:26:25 2008
@@ -0,0 +1,22 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+namespace=http://ode/bpel/unit-test/testCorrelation.wsdl
+service=testCorrelationService
+operation=request
+request1=<message><requestMessageData><correlationID1>CORR1</correlationID1><correlationID2>CORR2</correlationID2><correlationID3>CORR3</correlationID3><requestText>1;</requestText><requestEnd>no</requestEnd></requestMessageData></message>
+response1=.*1;2;3;.*