You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by sa...@apache.org on 2016/02/17 12:27:35 UTC
ode git commit: ODE-974: Identify process instance by iterating all
the correlation sets and finding the intersecting instances during each
iteration
Repository: ode
Updated Branches:
refs/heads/ode-1.3.x 85bb58585 -> a56446717
ODE-974: Identify process instance by iterating all the correlation sets and finding the intersecting instances during each iteration
Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/a5644671
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/a5644671
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/a5644671
Branch: refs/heads/ode-1.3.x
Commit: a56446717ff416c60ff1d53d91a0bb41f781f920
Parents: 85bb585
Author: sathwik <sa...@apache.org>
Authored: Wed Feb 17 16:57:17 2016 +0530
Committer: sathwik <sa...@apache.org>
Committed: Wed Feb 17 16:57:17 2016 +0530
----------------------------------------------------------------------
.../CorrelationMultiScopeEarlyMessageTest.java | 32 +++++++++++--
.../1/TestCorrelationMultiScopeComplex.bpel | 25 +++++-----
...stCorrelationMultiScopeComplexArtifacts.wsdl | 11 ++++-
.../1/second_complete.soap | 29 ++++++++++++
.../1/second_initiate.soap | 29 ++++++++++++
.../1/second_receive2.soap | 29 ++++++++++++
.../1/second_receive3.soap | 29 ++++++++++++
.../1/third_complete.soap | 29 ++++++++++++
.../1/third_initiate.soap | 29 ++++++++++++
.../1/third_receive2.soap | 29 ++++++++++++
.../1/third_receive3.soap | 29 ++++++++++++
.../2/TestCorrelationMultiScopeComplex.bpel | 25 +++++-----
...stCorrelationMultiScopeComplexArtifacts.wsdl | 11 ++++-
.../org/apache/ode/bpel/engine/BpelProcess.java | 50 ++++++++++----------
14 files changed, 328 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiScopeEarlyMessageTest.java
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiScopeEarlyMessageTest.java b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiScopeEarlyMessageTest.java
index 0dc6339..7fc5d04 100644
--- a/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiScopeEarlyMessageTest.java
+++ b/axis2-war/src/test/java/org/apache/ode/axis2/correlation/CorrelationMultiScopeEarlyMessageTest.java
@@ -49,29 +49,51 @@ public class CorrelationMultiScopeEarlyMessageTest extends Axis2TestBase impleme
log.info("response from instance 1 {}",instance1Response);
assertTrue(instance1Response.contains("iid"));
+ String instance2Response = server.sendRequestFile(endpoint,bundleName + "/1", "second_initiate.soap");
+ log.info("response from instance 2 {}",instance2Response);
+ assertTrue(instance2Response.contains("iid"));
+
+ String instance3Response = server.sendRequestFile(endpoint,bundleName + "/1", "third_initiate.soap");
+ log.info("response from instance 3 {}",instance3Response);
+ assertTrue(instance3Response.contains("iid"));
+
//deploy version 2
server.deployProcess(bundleName + "/2");
//create and instance of version 2
- String instance2Response = server.sendRequestFile(endpoint,bundleName + "/2", "initiate.soap");
- log.info("response from instance 2 {}",instance2Response);
- assertTrue(instance2Response.contains("iid"));
+ String instance4Response = server.sendRequestFile(endpoint,bundleName + "/2", "initiate.soap");
+ log.info("response from instance 4 {}",instance4Response);
+ assertTrue(instance4Response.contains("iid"));
- //early message to instance of retired process version 1
+ //early messages to instance of retired process version 1
server.sendRequestFile(endpoint,bundleName + "/1", "receive3.soap");
+ server.sendRequestFile(endpoint,bundleName + "/1", "second_receive3.soap");
+ server.sendRequestFile(endpoint,bundleName + "/1", "third_receive3.soap");
+
//early message to instance of active process version 2
server.sendRequestFile(endpoint,bundleName + "/2", "receive3.soap");
server.sendRequestFile(endpoint,bundleName + "/1", "receive2.soap");
+ server.sendRequestFile(endpoint,bundleName + "/1", "second_receive2.soap");
+ server.sendRequestFile(endpoint,bundleName + "/1", "third_receive2.soap");
+
server.sendRequestFile(endpoint,bundleName + "/2", "receive2.soap");
instance1Response = server.sendRequestFile(endpoint,bundleName + "/1", "complete.soap");
log.info("response from instance 1 {}",instance1Response);
assertTrue(instance1Response.contains("iid"));
- instance2Response = server.sendRequestFile(endpoint,bundleName + "/2", "complete.soap");
+ instance2Response = server.sendRequestFile(endpoint,bundleName + "/1", "second_complete.soap");
log.info("response from instance 2 {}",instance2Response);
assertTrue(instance2Response.contains("iid"));
+
+ instance3Response = server.sendRequestFile(endpoint,bundleName + "/1", "third_complete.soap");
+ log.info("response from instance 3 {}",instance3Response);
+ assertTrue(instance3Response.contains("iid"));
+
+ instance4Response = server.sendRequestFile(endpoint,bundleName + "/2", "complete.soap");
+ log.info("response from instance 4 {}",instance4Response);
+ assertTrue(instance4Response.contains("iid"));
} finally {
if (server.isDeployed(bundleName+"/1"))
server.undeployProcess(bundleName + "/1");
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplex.bpel
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplex.bpel b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplex.bpel
index 39cf400..94d9075 100644
--- a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplex.bpel
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplex.bpel
@@ -54,13 +54,17 @@
</bpel:variables>
<bpel:correlationSets>
<bpel:correlationSet name="CorrSet1" properties="tns:corrProperty1"></bpel:correlationSet>
+ <bpel:correlationSet name="CorrSet2" properties="tns:corrProperty1 tns:corrProperty2"></bpel:correlationSet>
+ <bpel:correlationSet name="CorrSet3" properties="tns:corrProperty1 tns:corrProperty2 tns:corrProperty3"></bpel:correlationSet>
</bpel:correlationSets>
<bpel:sequence name="ancestorSequence">
- <bpel:receive name="initiateRequest" partnerLink="client" operation="initiate" portType="tns:TestCorrelationMultiScopeComplexPort" variable="initiateRequest" createInstance="yes">
- <bpel:correlations>
- <bpel:correlation initiate="yes" set="CorrSet1"></bpel:correlation>
- </bpel:correlations>
- </bpel:receive>
+ <bpel:receive name="initiateRequest" partnerLink="client" operation="initiate" portType="tns:TestCorrelationMultiScopeComplexPort" variable="initiateRequest" createInstance="yes">
+ <bpel:correlations>
+ <bpel:correlation initiate="yes" set="CorrSet1"></bpel:correlation>
+ <bpel:correlation initiate="yes" set="CorrSet2"></bpel:correlation>
+ <bpel:correlation initiate="yes" set="CorrSet3"></bpel:correlation>
+ </bpel:correlations>
+ </bpel:receive>
<bpel:assign validate="no" name="AssignPID">
<bpel:copy>
<bpel:from><bpel:literal><tns:initiateResponse xmlns:tns="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -82,14 +86,12 @@
<bpel:scope name="grandParentScope">
<bpel:variables><bpel:variable name="receive2Request" messageType="tns:receive2Request"></bpel:variable></bpel:variables>
- <bpel:correlationSets>
- <bpel:correlationSet name="CorrSet2" properties="tns:corrProperty2"></bpel:correlationSet>
- </bpel:correlationSets>
<bpel:sequence name="grandParentSequence">
<bpel:receive name="receive2Request" partnerLink="client" operation="receive2" portType="tns:TestCorrelationMultiScopeComplexPort" variable="receive2Request">
<bpel:correlations>
<bpel:correlation initiate="no" set="CorrSet1"></bpel:correlation>
- <bpel:correlation initiate="yes" set="CorrSet2"></bpel:correlation>
+ <bpel:correlation initiate="no" set="CorrSet2"></bpel:correlation>
+ <bpel:correlation initiate="no" set="CorrSet3"></bpel:correlation>
</bpel:correlations>
</bpel:receive>
@@ -97,15 +99,12 @@
<bpel:variables>
<bpel:variable name="receive3Request" messageType="tns:receive3Request"></bpel:variable>
</bpel:variables>
- <bpel:correlationSets>
- <bpel:correlationSet name="CorrSet3" properties="tns:corrProperty3"></bpel:correlationSet>
- </bpel:correlationSets>
<bpel:sequence name="parentSequence">
<bpel:receive name="receive3Request" partnerLink="client" operation="receive3" portType="tns:TestCorrelationMultiScopeComplexPort" variable="receive3Request">
<bpel:correlations>
<bpel:correlation initiate="no" set="CorrSet1"></bpel:correlation>
<bpel:correlation initiate="no" set="CorrSet2"></bpel:correlation>
- <bpel:correlation initiate="yes" set="CorrSet3"></bpel:correlation>
+ <bpel:correlation initiate="no" set="CorrSet3"></bpel:correlation>
</bpel:correlations>
</bpel:receive>
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplexArtifacts.wsdl
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplexArtifacts.wsdl b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplexArtifacts.wsdl
index 3abae1a..14f6575 100644
--- a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplexArtifacts.wsdl
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/TestCorrelationMultiScopeComplexArtifacts.wsdl
@@ -43,6 +43,9 @@
</vprop:propertyAlias>
<vprop:property name="corrProperty2" type="p:string"/>
+ <vprop:propertyAlias messageType="tns:initiateRequest" part="parameters" propertyName="tns:corrProperty2">
+ <vprop:query><![CDATA[/corr2]]></vprop:query>
+ </vprop:propertyAlias>
<vprop:propertyAlias messageType="tns:receive2Request" part="parameters" propertyName="tns:corrProperty2">
<vprop:query><![CDATA[/corr2]]></vprop:query>
</vprop:propertyAlias>
@@ -54,11 +57,17 @@
</vprop:propertyAlias>
<vprop:property name="corrProperty3" type="p:string"/>
- <vprop:propertyAlias messageType="tns:completeRequest" part="parameters" propertyName="tns:corrProperty3">
+ <vprop:propertyAlias messageType="tns:initiateRequest" part="parameters" propertyName="tns:corrProperty3">
+ <vprop:query><![CDATA[/corr3]]></vprop:query>
+ </vprop:propertyAlias>
+ <vprop:propertyAlias messageType="tns:receive2Request" part="parameters" propertyName="tns:corrProperty3">
<vprop:query><![CDATA[/corr3]]></vprop:query>
</vprop:propertyAlias>
<vprop:propertyAlias messageType="tns:receive3Request" part="parameters" propertyName="tns:corrProperty3">
<vprop:query><![CDATA[/corr3]]></vprop:query>
+</vprop:propertyAlias>
+ <vprop:propertyAlias messageType="tns:completeRequest" part="parameters" propertyName="tns:corrProperty3">
+ <vprop:query><![CDATA[/corr3]]></vprop:query>
</vprop:propertyAlias>
<types>
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_complete.soap
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_complete.soap b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_complete.soap
new file mode 100644
index 0000000..c0e9ff1
--- /dev/null
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_complete.soap
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tes="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tes:complete>
+ <corr1>A</corr1>
+ <corr2>D</corr2>
+ <corr3>C</corr3>
+ </tes:complete>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_initiate.soap
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_initiate.soap b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_initiate.soap
new file mode 100644
index 0000000..3928e02
--- /dev/null
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_initiate.soap
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tes="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tes:initiate>
+ <corr1>A</corr1>
+ <corr2>D</corr2>
+ <corr3>C</corr3>
+ </tes:initiate>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_receive2.soap
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_receive2.soap b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_receive2.soap
new file mode 100644
index 0000000..b0cbd36
--- /dev/null
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_receive2.soap
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tes="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tes:receive2>
+ <corr1>A</corr1>
+ <corr2>D</corr2>
+ <corr3>C</corr3>
+ </tes:receive2>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_receive3.soap
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_receive3.soap b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_receive3.soap
new file mode 100644
index 0000000..4976aa6
--- /dev/null
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/second_receive3.soap
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tes="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tes:receive3>
+ <corr1>A</corr1>
+ <corr2>D</corr2>
+ <corr3>C</corr3>
+ </tes:receive3>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_complete.soap
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_complete.soap b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_complete.soap
new file mode 100644
index 0000000..c6ee9fa
--- /dev/null
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_complete.soap
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tes="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tes:complete>
+ <corr1>A</corr1>
+ <corr2>D</corr2>
+ <corr3>E</corr3>
+ </tes:complete>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_initiate.soap
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_initiate.soap b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_initiate.soap
new file mode 100644
index 0000000..f1c5dfe
--- /dev/null
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_initiate.soap
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tes="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tes:initiate>
+ <corr1>A</corr1>
+ <corr2>D</corr2>
+ <corr3>E</corr3>
+ </tes:initiate>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_receive2.soap
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_receive2.soap b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_receive2.soap
new file mode 100644
index 0000000..cc55b6e
--- /dev/null
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_receive2.soap
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tes="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tes:receive2>
+ <corr1>A</corr1>
+ <corr2>D</corr2>
+ <corr3>E</corr3>
+ </tes:receive2>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_receive3.soap
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_receive3.soap b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_receive3.soap
new file mode 100644
index 0000000..d5e1c6b
--- /dev/null
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/1/third_receive3.soap
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tes="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tes:receive3>
+ <corr1>A</corr1>
+ <corr2>D</corr2>
+ <corr3>E</corr3>
+ </tes:receive3>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplex.bpel
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplex.bpel b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplex.bpel
index 39cf400..94d9075 100644
--- a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplex.bpel
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplex.bpel
@@ -54,13 +54,17 @@
</bpel:variables>
<bpel:correlationSets>
<bpel:correlationSet name="CorrSet1" properties="tns:corrProperty1"></bpel:correlationSet>
+ <bpel:correlationSet name="CorrSet2" properties="tns:corrProperty1 tns:corrProperty2"></bpel:correlationSet>
+ <bpel:correlationSet name="CorrSet3" properties="tns:corrProperty1 tns:corrProperty2 tns:corrProperty3"></bpel:correlationSet>
</bpel:correlationSets>
<bpel:sequence name="ancestorSequence">
- <bpel:receive name="initiateRequest" partnerLink="client" operation="initiate" portType="tns:TestCorrelationMultiScopeComplexPort" variable="initiateRequest" createInstance="yes">
- <bpel:correlations>
- <bpel:correlation initiate="yes" set="CorrSet1"></bpel:correlation>
- </bpel:correlations>
- </bpel:receive>
+ <bpel:receive name="initiateRequest" partnerLink="client" operation="initiate" portType="tns:TestCorrelationMultiScopeComplexPort" variable="initiateRequest" createInstance="yes">
+ <bpel:correlations>
+ <bpel:correlation initiate="yes" set="CorrSet1"></bpel:correlation>
+ <bpel:correlation initiate="yes" set="CorrSet2"></bpel:correlation>
+ <bpel:correlation initiate="yes" set="CorrSet3"></bpel:correlation>
+ </bpel:correlations>
+ </bpel:receive>
<bpel:assign validate="no" name="AssignPID">
<bpel:copy>
<bpel:from><bpel:literal><tns:initiateResponse xmlns:tns="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -82,14 +86,12 @@
<bpel:scope name="grandParentScope">
<bpel:variables><bpel:variable name="receive2Request" messageType="tns:receive2Request"></bpel:variable></bpel:variables>
- <bpel:correlationSets>
- <bpel:correlationSet name="CorrSet2" properties="tns:corrProperty2"></bpel:correlationSet>
- </bpel:correlationSets>
<bpel:sequence name="grandParentSequence">
<bpel:receive name="receive2Request" partnerLink="client" operation="receive2" portType="tns:TestCorrelationMultiScopeComplexPort" variable="receive2Request">
<bpel:correlations>
<bpel:correlation initiate="no" set="CorrSet1"></bpel:correlation>
- <bpel:correlation initiate="yes" set="CorrSet2"></bpel:correlation>
+ <bpel:correlation initiate="no" set="CorrSet2"></bpel:correlation>
+ <bpel:correlation initiate="no" set="CorrSet3"></bpel:correlation>
</bpel:correlations>
</bpel:receive>
@@ -97,15 +99,12 @@
<bpel:variables>
<bpel:variable name="receive3Request" messageType="tns:receive3Request"></bpel:variable>
</bpel:variables>
- <bpel:correlationSets>
- <bpel:correlationSet name="CorrSet3" properties="tns:corrProperty3"></bpel:correlationSet>
- </bpel:correlationSets>
<bpel:sequence name="parentSequence">
<bpel:receive name="receive3Request" partnerLink="client" operation="receive3" portType="tns:TestCorrelationMultiScopeComplexPort" variable="receive3Request">
<bpel:correlations>
<bpel:correlation initiate="no" set="CorrSet1"></bpel:correlation>
<bpel:correlation initiate="no" set="CorrSet2"></bpel:correlation>
- <bpel:correlation initiate="yes" set="CorrSet3"></bpel:correlation>
+ <bpel:correlation initiate="no" set="CorrSet3"></bpel:correlation>
</bpel:correlations>
</bpel:receive>
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplexArtifacts.wsdl
----------------------------------------------------------------------
diff --git a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplexArtifacts.wsdl b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplexArtifacts.wsdl
index 3abae1a..9c2af44 100644
--- a/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplexArtifacts.wsdl
+++ b/axis2-war/src/test/resources/TestCorrelationMultiScopeComplex/2/TestCorrelationMultiScopeComplexArtifacts.wsdl
@@ -43,6 +43,9 @@
</vprop:propertyAlias>
<vprop:property name="corrProperty2" type="p:string"/>
+ <vprop:propertyAlias messageType="tns:initiateRequest" part="parameters" propertyName="tns:corrProperty2">
+ <vprop:query><![CDATA[/corr2]]></vprop:query>
+ </vprop:propertyAlias>
<vprop:propertyAlias messageType="tns:receive2Request" part="parameters" propertyName="tns:corrProperty2">
<vprop:query><![CDATA[/corr2]]></vprop:query>
</vprop:propertyAlias>
@@ -54,12 +57,18 @@
</vprop:propertyAlias>
<vprop:property name="corrProperty3" type="p:string"/>
- <vprop:propertyAlias messageType="tns:completeRequest" part="parameters" propertyName="tns:corrProperty3">
+ <vprop:propertyAlias messageType="tns:initiateRequest" part="parameters" propertyName="tns:corrProperty3">
+ <vprop:query><![CDATA[/corr3]]></vprop:query>
+ </vprop:propertyAlias>
+ <vprop:propertyAlias messageType="tns:receive2Request" part="parameters" propertyName="tns:corrProperty3">
<vprop:query><![CDATA[/corr3]]></vprop:query>
</vprop:propertyAlias>
<vprop:propertyAlias messageType="tns:receive3Request" part="parameters" propertyName="tns:corrProperty3">
<vprop:query><![CDATA[/corr3]]></vprop:query>
</vprop:propertyAlias>
+ <vprop:propertyAlias messageType="tns:completeRequest" part="parameters" propertyName="tns:corrProperty3">
+ <vprop:query><![CDATA[/corr3]]></vprop:query>
+ </vprop:propertyAlias>
<types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ode/bpel/unit-test/TestCorrelationMultiScopeComplex">
http://git-wip-us.apache.org/repos/asf/ode/blob/a5644671/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
----------------------------------------------------------------------
diff --git a/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java b/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
index 1a7ca92..92aad6f 100644
--- a/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
+++ b/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
@@ -26,6 +26,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -39,7 +40,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.ode.agents.memory.SizingAgent;
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.BpelDAOConnection;
@@ -290,6 +290,7 @@ public class BpelProcess {
boolean routed = false;
boolean enqueue = true;
List<PartnerLinkMyRoleImpl.RoutingInfo> routings = null;
+ LinkedHashSet<ProcessInstanceDAO> intersectionInstanceSet = new LinkedHashSet<ProcessInstanceDAO>();
/* try to find the active instance that is waiting on the correlated value and then associate the corresponding
* processDAO,correlator on the mex and enqueue for later processing.
@@ -308,36 +309,35 @@ public class BpelProcess {
if (routing != null) {
- for( Iterator<CorrelationKeySet> aSubSetItr = routing.wholeKeySet.findSubSets().iterator();
- (aSubSetItr.hasNext() && !routed);) {
+ for( Iterator<CorrelationKey> keyItr = routing.wholeKeySet.iterator();
+ (keyItr.hasNext() && !routed);) {
- CorrelationKeySet aSubSet = aSubSetItr.next();
+ CorrelationKey key = keyItr.next();
+ __log.info("noRoutingMatch: Finding active instance correlated with {} and process pid {}",key,_pid);
- for(Iterator<CorrelationKey> keyItr = aSubSet.iterator();
- (keyItr.hasNext() && !routed);) {
+ // We need to make sure the PID of process of the instance is same as that of the
+ // partnerlink's associated process in the iteration. Otherwise we might end up
+ // associating wrong correlator with the mex.
+ Collection<ProcessInstanceDAO> instanceDaoList = getProcessDAO().findInstance(key,ProcessState.STATE_ACTIVE);
- CorrelationKey key = keyItr.next();
- __log.info("noRoutingMatch: Finding active instance correlated with {} and process pid {}",new Object[]{key,_pid});
+ if (!(instanceDaoList.isEmpty())) {
+ //find the intersection
+ if(!intersectionInstanceSet.isEmpty())
+ intersectionInstanceSet.retainAll(instanceDaoList);
+ else
+ intersectionInstanceSet.addAll(instanceDaoList);
- // Assumption is, process instance is uniquely identifiable by any single initiated correlation key across multiple versions
- // of a same process type.
-
- // We need to make sure the PID of process of the instance is same as that of the
- // partnerlink's associated process in the iteration. Otherwise we might end up
- // associating wrong correlator with the mex.
- Collection<ProcessInstanceDAO> instanceDaoList = getProcessDAO().findInstance(key,ProcessState.STATE_ACTIVE);
-
- if (!instanceDaoList.isEmpty()) {
- ProcessInstanceDAO instance = instanceDaoList.iterator().next();
- mex.getDAO().setProcess(instance.getProcess());
- target.noRoutingMatch(mex, routing);
- routed = true;
+ __log.debug("noRoutingMatch: intersection Instance set : {} ",intersectionInstanceSet);
+ }
+ }
- __log.info("noRoutingMatch: Active instance found instanceID: {} correlated with {} and process pid {}",
- new Object[]{instance.getInstanceId(),key,_pid});
+ if(!(intersectionInstanceSet.isEmpty())) {
+ ProcessInstanceDAO instance = intersectionInstanceSet.iterator().next();
+ mex.getDAO().setProcess(instance.getProcess());
+ target.noRoutingMatch(mex, routing);
+ routed = true;
- }
- }
+ __log.info("noRoutingMatch: Active instance found instanceID: {} and process pid {}",instance.getInstanceId(),_pid);
}
}
}