Author: rr
Date: Thu Mar 18 21:17:13 2010
New Revision: 924997
URL: http://svn.apache.org/viewvc?rev=924997&view=rev
Log:
Don't broadcast messages to retired processes - 2nd fix
Modified:
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
Modified:
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java?rev=924997&r1=924996&r2=924997&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
Thu Mar 18 21:17:13 2010
@@ -46,6 +46,7 @@ import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MessageExchange;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
+import org.apache.ode.bpel.iapi.ProcessState;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.MessageExchange.FailureType;
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
@@ -133,20 +134,31 @@ public class BpelEngineImpl implements B
throws BpelEngineException {
List<BpelProcess> targets = route(targetService, null);
+ List<BpelProcess> activeTargets = new ArrayList<BpelProcess>();
+ for (BpelProcess target : targets) {
+ if (target.getConf().getState() == ProcessState.ACTIVE) {
+ activeTargets.add(target);
+ }
+ }
if (targets == null || targets.size() == 0)
throw new BpelEngineException("NoSuchService: " + targetService);
- if (targets.size() == 1) {
+ if (targets.size() == 1 || activeTargets.size() == 1) {
// If the number of targets is one, create and return a simple MEX
- BpelProcess target = targets.get(0);
+ BpelProcess target;
+ if (activeTargets.size() == 1) {
+ target = activeTargets.get(0);
+ } else {
+ target = targets.get(0);
+ }
return createNewMyRoleMex(target, clientKey, targetService,
operation, pipedMexId);
} else {
// If the number of targets is greater than one, create and return
// a brokered MEX that embeds the simple MEXs for each of the
targets
- BpelProcess template = targets.get(0);
+ BpelProcess template = activeTargets.get(0);
ArrayList<MyRoleMessageExchange> meps = new
ArrayList<MyRoleMessageExchange>();
- for (BpelProcess target : targets) {
+ for (BpelProcess target : activeTargets) {
meps.add(createNewMyRoleMex(target, clientKey, targetService,
operation, pipedMexId));
}
return createNewMyRoleMex(template, meps);