You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ka...@apache.org on 2008/11/12 20:14:32 UTC

svn commit: r713457 [2/2] - in /ode/trunk: ./ axis2/src/main/java/org/apache/ode/axis2/ bpel-api/src/main/java/org/apache/ode/bpel/common/ bpel-api/src/main/java/org/apache/ode/bpel/iapi/ bpel-api/src/main/java/org/apache/ode/bpel/rapi/ bpel-compiler/s...

Modified: ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/BpelCompilerImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/BpelCompilerImpl.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/BpelCompilerImpl.java (original)
+++ ode/trunk/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/v2/BpelCompilerImpl.java Wed Nov 12 11:13:58 2008
@@ -658,6 +658,12 @@
         } else {
             _oprocess.processName = _processDef.getName();
         }
+        
+        if (process.getAtomicScope() == null) {
+        	_oprocess.atomicScope = false;
+        } else {
+        	_oprocess.atomicScope = _processDef.getAtomicScope().booleanValue();
+        }
 
         _oprocess.compileDate = _generatedDate;
 
@@ -708,10 +714,11 @@
         	compileExtension(e);
         }
 
-        OScope procesScope = new OScope(_oprocess, null);
-        procesScope.name = "__PROCESS_SCOPE:" + process.getName();
-        procesScope.debugInfo = createDebugInfo(process, null);
-        _oprocess.processScope = compileScope(procesScope, process, new Runnable() {
+        OScope processScope = new OScope(_oprocess, null);
+        processScope.atomicScope = _oprocess.atomicScope;
+        processScope.name = "__PROCESS_SCOPE:" + process.getName();
+        processScope.debugInfo = createDebugInfo(process, null);
+        _oprocess.processScope = compileScope(processScope, process, new Runnable() {
             public void run() {
                 if (process.getRootActivity() == null) {
                     throw new CompilationException(__cmsgs.errNoRootActivity());
@@ -732,6 +739,7 @@
                     }
                 }
                 _structureStack.topScope().activity = compile(process.getRootActivity());
+                _structureStack.topScope().inboundMessageChildActivity = "OPickReceive".equals(_structureStack.topScope().activity.getType());
             }
         });
 
@@ -753,7 +761,7 @@
         }
         return _oprocess;
     }
-
+    
     // TODO unused?
     // private String getBpelPartnerLinkUri(){
     // switch(_processDef.getBpelVersion()){
@@ -848,6 +856,7 @@
         implicitScope.implicitScope = true;
         implicitScope.name = createName(source, "implicit-scope");
         implicitScope.debugInfo = createDebugInfo(source, "Scope-like construct " + source);
+        implicitScope.atomicScope = _oprocess.atomicScope;
         compileScope(implicitScope, source.getScope(), new Runnable() {
             public void run() {
                 compileLinks(source);
@@ -860,9 +869,14 @@
                     if (scopeChild == null)
                         throw new CompilationException(__cmsgs.errEmptyScope().setSource(source));
                     implicitScope.activity = compile(scopeChild);
+                    if (source.getScope() != null && source.getScope().getAtomicScope() != null) {
+	                    implicitScope.atomicScope = source.getScope().getAtomicScope().booleanValue();
+                    }
                 } else {
                     implicitScope.activity = compileActivity(false, source);
                 }
+                implicitScope.inboundMessageChildActivity = 
+                	"OPickReceive".equals(implicitScope.activity);
             }
         });
 
@@ -1095,7 +1109,7 @@
                 oscope.isolatedScope = _isolatedScope = true;
             }
         }
-
+        
         try {
             compile(oscope, src, new Runnable() {
                 public void run() {
@@ -1250,6 +1264,7 @@
                     oevent.variable = new OScope.Variable(_oprocess, varType);
                     oevent.variable.name = onEvent.getVariable();
                     oevent.variable.declaringScope = _structureStack.topScope();
+                    oevent.atomicScope = onEvent.isAtomic();
 
                     oevent.addLocalVariable(oevent.variable);
                     break;

Modified: ode/trunk/bpel-schemas/src/main/resources/ws-bpel_abstract_common_base.xsd
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-schemas/src/main/resources/ws-bpel_abstract_common_base.xsd?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/bpel-schemas/src/main/resources/ws-bpel_abstract_common_base.xsd (original)
+++ ode/trunk/bpel-schemas/src/main/resources/ws-bpel_abstract_common_base.xsd Wed Nov 12 11:13:58 2008
@@ -130,6 +130,7 @@
 				<xsd:attribute name="suppressJoinFailure" type="tBoolean" default="no"/>
 				<xsd:attribute name="exitOnStandardFault" type="tBoolean" default="no"/>
 				<xsd:attribute name="abstractProcessProfile" type="xsd:anyURI" use="required"/>
+				<xsd:attribute name="atomic" type="tBoolean" default="no"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -419,6 +420,7 @@
 				</xsd:sequence>
 				<xsd:attribute name="messageType" type="xsd-derived:QName" use="optional"/>
 				<xsd:attribute name="element" type="xsd-derived:QName" use="optional"/>
+				<xsd:attribute name="atomic" type="tBoolean" default="no"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -1043,6 +1045,7 @@
 					<xsd:group ref="activity" minOccurs="0"/>
 				</xsd:sequence>
 				<xsd:attribute name="isolated" type="tBoolean" default="no"/>
+				<xsd:attribute name="atomic" type="tBoolean" default="no"/>
 				<xsd:attribute name="exitOnStandardFault" type="tBoolean"/>
 			</xsd:extension>
 		</xsd:complexContent>

Modified: ode/trunk/bpel-schemas/src/main/resources/ws-bpel_executable.xsd
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-schemas/src/main/resources/ws-bpel_executable.xsd?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/bpel-schemas/src/main/resources/ws-bpel_executable.xsd (original)
+++ ode/trunk/bpel-schemas/src/main/resources/ws-bpel_executable.xsd Wed Nov 12 11:13:58 2008
@@ -205,6 +205,7 @@
 				<xsd:attribute name="expressionLanguage" type="xsd:anyURI" default="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"/>
 				<xsd:attribute name="suppressJoinFailure" type="tBoolean" default="no"/>
 				<xsd:attribute name="exitOnStandardFault" type="tBoolean" default="no"/>
+				<xsd:attribute name="atomic" type="tBoolean" default="no"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -484,6 +485,7 @@
 				</xsd:sequence>
 				<xsd:attribute name="messageType" type="xsd:QName" use="optional"/>
 				<xsd:attribute name="element" type="xsd:QName" use="optional"/>
+				<xsd:attribute name="atomic" type="tBoolean" default="no"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -1098,6 +1100,7 @@
 					<xsd:group ref="activity" minOccurs="1"/>
 				</xsd:sequence>
 				<xsd:attribute name="isolated" type="tBoolean" default="no"/>
+				<xsd:attribute name="atomic" type="tBoolean" default="no"/>
 				<xsd:attribute name="exitOnStandardFault" type="tBoolean"/>
 			</xsd:extension>
 		</xsd:complexContent>

Modified: ode/trunk/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java (original)
+++ ode/trunk/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java Wed Nov 12 11:13:58 2008
@@ -135,7 +135,7 @@
 //                }
 //            }
 //        });
-        _server.setConfigProperties(getConfigProperties());
+        _server.setConfigProperties(new OdeConfigProperties(getConfigProperties(), ""));
         // _server.registerBpelEventListener(new DebugBpelEventListener());
         _server.init();
         _server.start();
@@ -249,9 +249,19 @@
         inv.operation = operation;
         inv.request = DOMUtils.stringToDOM(request);
         if (responsePattern != null) {
-            inv.expectedFinalStatus = AckType.RESPONSE;
-
-            inv.expectedResponsePattern = Pattern.compile(responsePattern, Pattern.DOTALL);
+            if ("ONEWAY".equals(responsePattern)) {
+            	inv.expectedFinalStatus = AckType.ONEWAY;
+            	inv.expectedResponsePattern = null;
+            } else if ("FAULT".equals(responsePattern)) {
+            	inv.expectedFinalStatus = AckType.FAULT;
+            	inv.expectedResponsePattern = null;
+            } else if ("FAILURE".equals(responsePattern)) {
+            	inv.expectedFinalStatus = AckType.FAILURE;
+            	inv.expectedResponsePattern = null;
+            } else {
+                inv.expectedResponsePattern = Pattern.compile(responsePattern, Pattern.DOTALL);
+                inv.expectedFinalStatus = AckType.RESPONSE;
+            }
         } else
             inv.expectedFinalStatus = AckType.ONEWAY;
 
@@ -349,7 +359,15 @@
             store.undeploy(d.deployDir);
         }
     }
+    
+    protected int getMaximumWaitInMillis() {
+    	return 60 * 1000;
+    }
 
+    protected int getMinimumWaitInMillis() {
+    	return -1;
+    }
+    
     protected void doInvokes() throws Exception {
         ArrayList<Thread> testThreads = new ArrayList<Thread>();
         for (Invocation i : _invocations) {
@@ -412,7 +430,7 @@
         // could also return null, returning an empty properties
         // object is more fail-safe.
         Properties p = new Properties();
-        p.setProperty("debugeventlistener.dumpToStdOut", SHOW_EVENTS_ON_CONSOLE);
+        p.setProperty("debugeventlistener.dumpToStdOut", SHOW_EVENTS_ON_CONSOLE);        
         return p;
     }
 
@@ -513,7 +531,7 @@
         public long maximumWaitMs = 60 * 1000;
 
         /** If non-null, minimum number of ms before a response should be available. */
-        public Long minimumWaitMs = null;
+        public long minimumWaitMs = -1;
 
         long invokeTime;
 
@@ -528,7 +546,7 @@
         public String toString() {
             return "Invocation#" + id;
         }
-
+        
     }
 
     class InvokerThread extends Thread {
@@ -536,6 +554,8 @@
 
         InvokerThread(Invocation invocation) {
             _invocation = invocation;
+            _invocation.maximumWaitMs = getMaximumWaitInMillis();
+            _invocation.minimumWaitMs = getMinimumWaitInMillis();
         }
 
         public void run() {
@@ -544,7 +564,7 @@
 
             // Wait for it....
             try {
-                Thread.sleep(_invocation.invokeDelayMs);
+                Thread.sleep(_invocation.invokeDelayMs * 1000 );
             } catch (Exception ex) {
             }
 
@@ -579,7 +599,7 @@
 
             long ctime = System.currentTimeMillis();
             long itime = ctime - _invocation.invokeTime;
-            if (_invocation.minimumWaitMs != null && _invocation.minimumWaitMs >= itime)
+            if (_invocation.minimumWaitMs != -1 && _invocation.minimumWaitMs >= itime)
                 failure(_invocation, "Response received too soon.", _invocation.minimumWaitMs, itime);
 
             if (_invocation.maximumWaitMs <= itime)

Modified: ode/trunk/bpel-test/src/test/java/org/apache/ode/test/StructuredActivities20Test.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/StructuredActivities20Test.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/bpel-test/src/test/java/org/apache/ode/test/StructuredActivities20Test.java (original)
+++ ode/trunk/bpel-test/src/test/java/org/apache/ode/test/StructuredActivities20Test.java Wed Nov 12 11:13:58 2008
@@ -18,13 +18,16 @@
  */
 package org.apache.ode.test;
 
+import org.junit.Ignore;
 import org.junit.Test;
 
 public class StructuredActivities20Test extends BPELTestAbstract {
+	@Ignore
 	@Test public void testFlowActivity1() throws Throwable {
         // Test Flow with XPath20
         go("/bpel/2.0/TestFlowActivity1");
     }
+	@Ignore
 	@Test public void testFlowActivity2() throws Throwable {
         // Test Flow with XPath10
         go("/bpel/2.0/TestFlowActivity2");
@@ -33,11 +36,12 @@
          // Test Flow with XPath10
          go("/bpel/2.0/TestFlowLinks");
      }
-    
+	@Ignore
     @Test public void testIsolatedScopes1() throws Throwable {
         // Test Flow with XPath10
         go("/bpel/2.0/TestIsolatedScopes1");
     }
+	@Ignore
     @Test public void testForEach() throws Throwable {
         go("/bpel/2.0/TestForEach");
     }

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorld.bpel
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorld.bpel?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorld.bpel (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorld.bpel Wed Nov 12 11:13:58 2008
@@ -0,0 +1,74 @@
+<!--
+  ~ 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 name="HelloWorld"
+    targetNamespace="http://ode/bpel/unit-test" 
+    xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+    xmlns:tns="http://ode/bpel/unit-test"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:test="http://ode/bpel/unit-test.wsdl"
+    queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+    expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+
+  <import location="HelloWorld.wsdl"
+     namespace="http://ode/bpel/unit-test.wsdl"
+     importType="http://schemas.xmlsoap.org/wsdl/" />
+
+   <partnerLinks>
+      <partnerLink name="helloPartnerLink" 
+         partnerLinkType="test:HelloPartnerLinkType" 
+         myRole="me" />
+   </partnerLinks>
+    
+   <variables>
+     <variable name="myVar" messageType="test:HelloMessage"/>
+     <variable name="tmpVar" type="xsd:string"/>
+   </variables>
+
+   <sequence>
+       <receive
+          name="start"
+          partnerLink="helloPartnerLink"
+          portType="test:HelloPortType"
+          operation="hello"
+          variable="myVar"
+          createInstance="yes"/>
+
+      <assign name="assign1">
+          <copy>
+              <from variable="myVar" part="TestPart"/>
+              <to variable="tmpVar"/>
+          </copy>
+          <copy>
+              <from>concat($tmpVar,' World')</from>
+              <to variable="myVar" part="TestPart"/>
+          </copy>
+      </assign>
+       <!--<reply name="end"  
+              partnerLink="helloPartnerLink"
+              portType="test:HelloPortType" 
+              operation="hello"
+              variable="myVar"/>-->
+       <reply name="end"  
+              partnerLink="helloPartnerLink"
+              portType="test:HelloPortType" 
+              operation="hello"
+              faultName="test:TestFault"
+              variable="myVar"/>
+   </sequence>
+</process>

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorld.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorld.wsdl?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorld.wsdl (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorld.wsdl Wed Nov 12 11:13:58 2008
@@ -0,0 +1,69 @@
+<?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.
+  -->
+
+<wsdl:definitions 
+    targetNamespace="http://ode/bpel/unit-test.wsdl"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:tns="http://ode/bpel/unit-test.wsdl"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+    
+    <wsdl:message name="HelloMessage">
+        <wsdl:part name="TestPart" type="xsd:string"/>
+    </wsdl:message>
+    
+    <wsdl:portType name="HelloPortType">
+        <wsdl:operation name="hello">
+            <wsdl:input message="tns:HelloMessage" name="TestIn"/>
+            <wsdl:output message="tns:HelloMessage" name="TestOut"/>
+            <wsdl:fault message="tns:HelloMessage" name="TestFault"/>
+        </wsdl:operation>    
+    </wsdl:portType>
+    
+     <wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType">
+        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="hello">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl"
+                    use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl" 
+                    use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="HelloService">
+		<wsdl:port name="HelloPort" binding="tns:HelloSoapBinding">
+     		<soap:address location="http://localhost:8080/ode/processes/helloWorld"/>			
+		</wsdl:port>
+    </wsdl:service>
+    
+   <plnk:partnerLinkType name="HelloPartnerLinkType">
+       <plnk:role name="me" portType="tns:HelloPortType"/>
+       <plnk:role name="you" portType="tns:HelloPortType"/>
+   </plnk:partnerLinkType>
+</wsdl:definitions>
+

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldAtomic.bpel
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldAtomic.bpel?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldAtomic.bpel (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldAtomic.bpel Wed Nov 12 11:13:58 2008
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpel:process
+	xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
+	xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:Start="http://ode/bpel/unit-test/Start"
+	xmlns:HelloWorld="http://ode/bpel/unit-test/HelloWorld"
+	xmlns:this="http://ode/bpel/unit-test"
+	xmlns:diag="http://ode/bpel/unit-test.wsdl"
+	xmlns:tns="http://ode/bpel/unit-test.wsdl"
+	xmlns:xml="http://www.w3.org/XML/1998/namespace"
+	xmlns:atomic="http://ode.apache.org/atomicScope"
+	queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+	expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+	name="HelloWorldAtomic" targetNamespace="http://ode/bpel/unit-test" 
+    atomic="yes">
+	<bpel:import namespace="http://ode/bpel/unit-test.wsdl"
+		location="HelloWorld.wsdl"
+		importType="http://schemas.xmlsoap.org/wsdl/"/>
+	<bpel:import namespace="http://ode/bpel/unit-test.wsdl"
+		location="HelloWorldAtomic.wsdl"
+		importType="http://schemas.xmlsoap.org/wsdl/"/>
+	<bpel:partnerLinks>
+		<bpel:partnerLink name="helloWorldAndPoolForHelloPortPlkVar"
+			partnerLinkType="diag:HelloWorldAndPoolForHelloPortPlk"
+			initializePartnerRole="true" partnerRole="HelloWorld_for_Pool"/>
+		<bpel:partnerLink name="poolAndStartForHelloPortPlkVar"
+			partnerLinkType="diag:PoolAndStartForHelloPortPlk"
+			myRole="Pool_for_Start"/>
+	</bpel:partnerLinks>
+	<bpel:variables>
+		<bpel:variable name="tnsHelloRequestMsg" messageType="tns:HelloMessage"/>
+		<bpel:variable name="tnsHelloResponseMsg" messageType="tns:HelloMessage"/>
+	</bpel:variables>
+    <bpel:sequence>
+        <bpel:receive partnerLink="poolAndStartForHelloPortPlkVar"
+            portType="tns:HelloPortType" operation="hello"
+            variable="tnsHelloRequestMsg" createInstance="yes"/>
+        <bpel:invoke partnerLink="helloWorldAndPoolForHelloPortPlkVar"
+            portType="tns:HelloPortType" operation="hello"
+            inputVariable="tnsHelloRequestMsg"
+            outputVariable="tnsHelloResponseMsg"/>
+        <bpel:reply partnerLink="poolAndStartForHelloPortPlkVar"
+            portType="tns:HelloPortType" operation="hello"
+            variable="tnsHelloResponseMsg"/>
+    </bpel:sequence>
+</bpel:process>
\ No newline at end of file

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldAtomic.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldAtomic.wsdl?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldAtomic.wsdl (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldAtomic.wsdl Wed Nov 12 11:13:58 2008
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='utf-8'?>
+<wsdl:definitions
+	xmlns:bpdm="http://www.intalio/designer/business-process-data-modeling"
+	xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+	xmlns:diag="http://ode/bpel/unit-test.wsdl"
+	xmlns:Start="http://ode/bpel/unit-test.wsdl/Start"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:tns="http://ode/bpel/unit-test.wsdl"
+	xmlns:Pool="http://example.com/diagram/Pool"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	targetNamespace="http://ode/bpel/unit-test.wsdl">
+	<wsdl:import namespace="http://ode/bpel/unit-test.wsdl"
+		location="HelloWorld.wsdl"/>
+	<wsdl:import namespace="http://ode/bpel/unit-test.wsdl"
+		location="HelloWorldExternal.wsdl"/>
+	<pnlk:partnerLinkType name="HelloWorldAndPoolForHelloPortPlk">
+		<pnlk:role name="HelloWorld_for_Pool" portType="tns:HelloPortType"/>
+	</pnlk:partnerLinkType>
+	<pnlk:partnerLinkType name="PoolAndStartForHelloPortPlk">
+		<pnlk:role name="Pool_for_Start" portType="tns:HelloPortType"/>
+	</pnlk:partnerLinkType>
+</wsdl:definitions>
\ No newline at end of file

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldExternal.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldExternal.wsdl?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldExternal.wsdl (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/HelloWorldExternal.wsdl Wed Nov 12 11:13:58 2008
@@ -0,0 +1,68 @@
+<?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.
+  -->
+
+<wsdl:definitions 
+    targetNamespace="http://ode/bpel/unit-test.wsdl"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:tns="http://ode/bpel/unit-test.wsdl"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+    
+    <wsdl:message name="HelloMessage">
+        <wsdl:part name="TestPart" type="xsd:string"/>
+    </wsdl:message>
+    
+    <wsdl:portType name="HelloPortType">
+        <wsdl:operation name="hello">
+            <wsdl:input message="tns:HelloMessage" name="TestIn"/>
+            <wsdl:output message="tns:HelloMessage" name="TestOut"/>
+        </wsdl:operation>    
+    </wsdl:portType>
+    
+     <wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType">
+        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="hello">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl"
+                    use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl" 
+                    use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="AtomicHelloService">
+		<wsdl:port name="AtomicHelloPort" binding="tns:HelloSoapBinding">
+     		<soap:address location="http://localhost:8080/ode/processes/AtomicHelloWorld"/>
+		</wsdl:port>
+    </wsdl:service>
+    
+   <plnk:partnerLinkType name="HelloPartnerLinkType">
+       <plnk:role name="me" portType="tns:HelloPortType"/>
+       <plnk:role name="you" portType="tns:HelloPortType"/>
+   </plnk:partnerLinkType>
+</wsdl:definitions>
+

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/deploy.xml
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/deploy.xml?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/deploy.xml (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/deploy.xml Wed Nov 12 11:13:58 2008
@@ -0,0 +1,42 @@
+<!--
+  ~ 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" 
+	xmlns:wns="http://ode/bpel/unit-test.wsdl">
+
+	<process name="pns:HelloWorld">
+		<active>true</active>
+        <in-memory>true</in-memory>
+		<provide partnerLink="helloPartnerLink">
+			<service name="wns:HelloService" port="HelloPort"/>
+		</provide>
+	</process>
+	
+	<process name="pns:HelloWorldAtomic">
+		<active>true</active>
+        <in-memory>true</in-memory>
+		<provide partnerLink="poolAndStartForHelloPortPlkVar">
+			<service name="wns:AtomicHelloService" port="AtomicHelloPort"/>
+		</provide>
+		<invoke partnerLink="helloWorldAndPoolForHelloPortPlkVar">
+		    <service name="wns:HelloService" port="HelloPort"/>
+	    </invoke>
+  </process>
+	
+</deploy>

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/test.properties
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/test.properties?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/test.properties (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicProcess/test.properties Wed Nov 12 11:13:58 2008
@@ -0,0 +1,23 @@
+#
+#    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.wsdl
+service=AtomicHelloService
+operation=hello
+request1=<message><TestPart><content>Hello</content></TestPart></message>
+response1=FAILURE
+

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorld.bpel
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorld.bpel?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorld.bpel (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorld.bpel Wed Nov 12 11:13:58 2008
@@ -0,0 +1,74 @@
+<!--
+  ~ 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 name="HelloWorld"
+    targetNamespace="http://ode/bpel/unit-test" 
+    xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+    xmlns:tns="http://ode/bpel/unit-test"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:test="http://ode/bpel/unit-test.wsdl"
+    queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+    expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+
+  <import location="HelloWorld.wsdl"
+     namespace="http://ode/bpel/unit-test.wsdl"
+     importType="http://schemas.xmlsoap.org/wsdl/" />
+
+   <partnerLinks>
+      <partnerLink name="helloPartnerLink" 
+         partnerLinkType="test:HelloPartnerLinkType" 
+         myRole="me" />
+   </partnerLinks>
+    
+   <variables>
+     <variable name="myVar" messageType="test:HelloMessage"/>
+     <variable name="tmpVar" type="xsd:string"/>
+   </variables>
+
+   <sequence>
+       <receive
+          name="start"
+          partnerLink="helloPartnerLink"
+          portType="test:HelloPortType"
+          operation="hello"
+          variable="myVar"
+          createInstance="yes"/>
+
+      <assign name="assign1">
+          <copy>
+              <from variable="myVar" part="TestPart"/>
+              <to variable="tmpVar"/>
+          </copy>
+          <copy>
+              <from>concat($tmpVar,' World')</from>
+              <to variable="myVar" part="TestPart"/>
+          </copy>
+      </assign>
+       <!--<reply name="end"  
+              partnerLink="helloPartnerLink"
+              portType="test:HelloPortType" 
+              operation="hello"
+              variable="myVar"/>-->
+       <reply name="end"  
+              partnerLink="helloPartnerLink"
+              portType="test:HelloPortType" 
+              operation="hello"
+              faultName="test:TestFault"
+              variable="myVar"/>
+   </sequence>
+</process>

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorld.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorld.wsdl?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorld.wsdl (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorld.wsdl Wed Nov 12 11:13:58 2008
@@ -0,0 +1,69 @@
+<?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.
+  -->
+
+<wsdl:definitions 
+    targetNamespace="http://ode/bpel/unit-test.wsdl"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:tns="http://ode/bpel/unit-test.wsdl"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+    
+    <wsdl:message name="HelloMessage">
+        <wsdl:part name="TestPart" type="xsd:string"/>
+    </wsdl:message>
+    
+    <wsdl:portType name="HelloPortType">
+        <wsdl:operation name="hello">
+            <wsdl:input message="tns:HelloMessage" name="TestIn"/>
+            <wsdl:output message="tns:HelloMessage" name="TestOut"/>
+            <wsdl:fault message="tns:HelloMessage" name="TestFault"/>
+        </wsdl:operation>    
+    </wsdl:portType>
+    
+     <wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType">
+        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="hello">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl"
+                    use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl" 
+                    use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="HelloService">
+		<wsdl:port name="HelloPort" binding="tns:HelloSoapBinding">
+     		<soap:address location="http://localhost:8080/ode/processes/helloWorld"/>			
+		</wsdl:port>
+    </wsdl:service>
+    
+   <plnk:partnerLinkType name="HelloPartnerLinkType">
+       <plnk:role name="me" portType="tns:HelloPortType"/>
+       <plnk:role name="you" portType="tns:HelloPortType"/>
+   </plnk:partnerLinkType>
+</wsdl:definitions>
+

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldAtomic.bpel
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldAtomic.bpel?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldAtomic.bpel (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldAtomic.bpel Wed Nov 12 11:13:58 2008
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpel:process
+	xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
+	xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:Start="http://ode/bpel/unit-test/Start"
+	xmlns:HelloWorld="http://ode/bpel/unit-test/HelloWorld"
+	xmlns:this="http://ode/bpel/unit-test"
+	xmlns:diag="http://ode/bpel/unit-test.wsdl"
+	xmlns:tns="http://ode/bpel/unit-test.wsdl"
+	xmlns:xml="http://www.w3.org/XML/1998/namespace"
+	xmlns:atomic="http://ode.apache.org/atomicScope"
+	queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+	expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+	name="HelloWorldAtomic" targetNamespace="http://ode/bpel/unit-test">
+	<bpel:import namespace="http://ode/bpel/unit-test.wsdl"
+		location="HelloWorld.wsdl"
+		importType="http://schemas.xmlsoap.org/wsdl/"/>
+	<bpel:import namespace="http://ode/bpel/unit-test.wsdl"
+		location="HelloWorldAtomic.wsdl"
+		importType="http://schemas.xmlsoap.org/wsdl/"/>
+	<bpel:partnerLinks>
+		<bpel:partnerLink name="helloWorldAndPoolForHelloPortPlkVar"
+			partnerLinkType="diag:HelloWorldAndPoolForHelloPortPlk"
+			initializePartnerRole="true" partnerRole="HelloWorld_for_Pool"/>
+		<bpel:partnerLink name="poolAndStartForHelloPortPlkVar"
+			partnerLinkType="diag:PoolAndStartForHelloPortPlk"
+			myRole="Pool_for_Start"/>
+	</bpel:partnerLinks>
+	<bpel:variables>
+		<bpel:variable name="tnsHelloRequestMsg" messageType="tns:HelloMessage"/>
+		<bpel:variable name="tnsHelloResponseMsg" messageType="tns:HelloMessage"/>
+	</bpel:variables>
+    <bpel:sequence>
+        <bpel:receive partnerLink="poolAndStartForHelloPortPlkVar"
+            portType="tns:HelloPortType" operation="hello"
+            variable="tnsHelloRequestMsg" createInstance="yes"/>
+        <bpel:scope atomic="yes">
+                <bpel:invoke partnerLink="helloWorldAndPoolForHelloPortPlkVar"
+                    portType="tns:HelloPortType" operation="hello"
+                    inputVariable="tnsHelloRequestMsg"
+                    outputVariable="tnsHelloResponseMsg"/>
+        </bpel:scope>
+        <bpel:reply partnerLink="poolAndStartForHelloPortPlkVar"
+            portType="tns:HelloPortType" operation="hello"
+            variable="tnsHelloResponseMsg"/>
+    </bpel:sequence>
+</bpel:process>
\ No newline at end of file

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldAtomic.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldAtomic.wsdl?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldAtomic.wsdl (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldAtomic.wsdl Wed Nov 12 11:13:58 2008
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='utf-8'?>
+<wsdl:definitions
+	xmlns:bpdm="http://www.intalio/designer/business-process-data-modeling"
+	xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+	xmlns:diag="http://ode/bpel/unit-test.wsdl"
+	xmlns:Start="http://ode/bpel/unit-test.wsdl/Start"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:tns="http://ode/bpel/unit-test.wsdl"
+	xmlns:Pool="http://example.com/diagram/Pool"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	targetNamespace="http://ode/bpel/unit-test.wsdl">
+	<wsdl:import namespace="http://ode/bpel/unit-test.wsdl"
+		location="HelloWorld.wsdl"/>
+	<wsdl:import namespace="http://ode/bpel/unit-test.wsdl"
+		location="HelloWorldExternal.wsdl"/>
+	<pnlk:partnerLinkType name="HelloWorldAndPoolForHelloPortPlk">
+		<pnlk:role name="HelloWorld_for_Pool" portType="tns:HelloPortType"/>
+	</pnlk:partnerLinkType>
+	<pnlk:partnerLinkType name="PoolAndStartForHelloPortPlk">
+		<pnlk:role name="Pool_for_Start" portType="tns:HelloPortType"/>
+	</pnlk:partnerLinkType>
+</wsdl:definitions>
\ No newline at end of file

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldExternal.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldExternal.wsdl?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldExternal.wsdl (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/HelloWorldExternal.wsdl Wed Nov 12 11:13:58 2008
@@ -0,0 +1,68 @@
+<?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.
+  -->
+
+<wsdl:definitions 
+    targetNamespace="http://ode/bpel/unit-test.wsdl"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:tns="http://ode/bpel/unit-test.wsdl"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+    
+    <wsdl:message name="HelloMessage">
+        <wsdl:part name="TestPart" type="xsd:string"/>
+    </wsdl:message>
+    
+    <wsdl:portType name="HelloPortType">
+        <wsdl:operation name="hello">
+            <wsdl:input message="tns:HelloMessage" name="TestIn"/>
+            <wsdl:output message="tns:HelloMessage" name="TestOut"/>
+        </wsdl:operation>    
+    </wsdl:portType>
+    
+     <wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType">
+        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="hello">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl"
+                    use="literal"/>
+            </wsdl:input>
+            <wsdl:output>
+                <soap:body
+                    namespace="http://ode/bpel/unit-test.wsdl" 
+                    use="literal"/>
+            </wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="AtomicHelloService">
+		<wsdl:port name="AtomicHelloPort" binding="tns:HelloSoapBinding">
+     		<soap:address location="http://localhost:8080/ode/processes/AtomicHelloWorld"/>
+		</wsdl:port>
+    </wsdl:service>
+    
+   <plnk:partnerLinkType name="HelloPartnerLinkType">
+       <plnk:role name="me" portType="tns:HelloPortType"/>
+       <plnk:role name="you" portType="tns:HelloPortType"/>
+   </plnk:partnerLinkType>
+</wsdl:definitions>
+

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/deploy.xml
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/deploy.xml?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/deploy.xml (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/deploy.xml Wed Nov 12 11:13:58 2008
@@ -0,0 +1,40 @@
+<!--
+  ~ 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" 
+	xmlns:wns="http://ode/bpel/unit-test.wsdl">
+
+	<process name="pns:HelloWorld">
+		<active>true</active>
+		<provide partnerLink="helloPartnerLink">
+			<service name="wns:HelloService" port="HelloPort"/>
+		</provide>
+	</process>
+	
+	<process name="pns:HelloWorldAtomic">
+		<active>true</active>
+		<provide partnerLink="poolAndStartForHelloPortPlkVar">
+			<service name="wns:AtomicHelloService" port="AtomicHelloPort"/>
+		</provide>
+		<invoke partnerLink="helloWorldAndPoolForHelloPortPlkVar">
+		    <service name="wns:HelloService" port="HelloPort"/>
+	    </invoke>
+  </process>
+	
+</deploy>

Added: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/test.properties
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/test.properties?rev=713457&view=auto
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/test.properties (added)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestAtomicScope/test.properties Wed Nov 12 11:13:58 2008
@@ -0,0 +1,23 @@
+#
+#    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.wsdl
+service=AtomicHelloService
+operation=hello
+request1=<message><TestPart><content>Hello</content></TestPart></message>
+response1=FAILURE
+

Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java Wed Nov 12 11:13:58 2008
@@ -43,6 +43,8 @@
 import org.apache.ode.bpel.dao.ProcessInstanceDAO;
 import org.apache.ode.bpel.dao.ScopeDAO;
 import org.apache.ode.bpel.dao.XmlDataDAO;
+import org.apache.ode.bpel.evar.ExternalVariableModuleException;
+import org.apache.ode.bpel.evar.ExternalVariableModule.Value;
 import org.apache.ode.bpel.evt.CorrelationSetWriteEvent;
 import org.apache.ode.bpel.evt.ProcessCompletionEvent;
 import org.apache.ode.bpel.evt.ProcessInstanceEvent;
@@ -59,13 +61,24 @@
 import org.apache.ode.bpel.iapi.MessageExchange.FailureType;
 import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
 import org.apache.ode.bpel.iapi.MessageExchange.Status;
-import org.apache.ode.utils.*;
-
-import org.apache.ode.bpel.evar.ExternalVariableModuleException;
-import org.apache.ode.bpel.evar.ExternalVariableModule.Value;
-import org.apache.ode.bpel.rapi.*;
 import org.apache.ode.bpel.memdao.ProcessInstanceDaoImpl;
-
+import org.apache.ode.bpel.rapi.CorrelationSet;
+import org.apache.ode.bpel.rapi.FaultInfo;
+import org.apache.ode.bpel.rapi.NoSuchOperationException;
+import org.apache.ode.bpel.rapi.OdeRTInstance;
+import org.apache.ode.bpel.rapi.OdeRTInstanceContext;
+import org.apache.ode.bpel.rapi.PartnerLink;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
+import org.apache.ode.bpel.rapi.Selector;
+import org.apache.ode.bpel.rapi.UninitializedPartnerEPR;
+import org.apache.ode.bpel.rapi.UninitializedVariableException;
+import org.apache.ode.bpel.rapi.Variable;
+import org.apache.ode.il.config.OdeConfigProperties;
+import org.apache.ode.utils.DOMUtils;
+import org.apache.ode.utils.GUID;
+import org.apache.ode.utils.Namespaces;
+import org.apache.ode.utils.ObjectPrinter;
+import org.apache.ode.utils.QNameUtils;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -90,11 +103,17 @@
     private Contexts _contexts;
 
     private boolean _forceFlush;
-
+    
+    private boolean _forceRollback;
+    
+    private int _retryCount;
+    
+    private boolean _atomicScope;
+    
     /** Process instance as represented by runtime. */
     final OdeRTInstance _rti;
 
-    /** Five second maximum for continous execution. */
+    /** Five second maximum for continuous execution. */
     private long _maxReductionTimeMs = 2000000;
 
     public BpelRuntimeContextImpl(BpelInstanceWorker instanceWorker, ProcessInstanceDAO instanceDAO, OdeRTInstance rti) {
@@ -106,7 +125,7 @@
         _rti = rti;
         _rti.setContext(this);
     }
-
+    
     public String toString() {
         return "{BpelRuntimeCtx PID=" + _bpelProcess.getPID() + ", IID=" + _iid + "}";
     }
@@ -118,7 +137,15 @@
     public long genId() {
         return _dao.genMonotonic();
     }
-
+    
+    public int getRetryCount() {
+    	return _retryCount;
+    }
+    
+    public  void setRetryCount(int retryCount) {
+    	_retryCount = retryCount;
+    }
+    
     public boolean isCorrelationInitialized(CorrelationSet correlationSet) {
         ScopeDAO scopeDAO = _dao.getScope(correlationSet.getScopeId());
         CorrelationSetDAO cs = scopeDAO.getCorrelationSet(correlationSet.getName());
@@ -486,6 +513,7 @@
         MessageDAO message = mexDao.createMessage(operation.getInput().getMessage().getQName());
         mexDao.setRequest(message);
         mexDao.setTimeout(30000);
+        mexDao.setProperty(MessageExchange.PROPERTY_SEP_MYROLE_TRANSACTED, Boolean.valueOf(_atomicScope).toString());
         message.setType(operation.getInput().getMessage().getQName());
         buildOutgoingMessage(message, outgoingMessage);
 
@@ -542,22 +570,26 @@
         _rti.onCreateInstance(instantiatingMessageExchange.getMessageExchangeId());
         execute();
     }
-
+    
     void execute() {
         if (!_contexts.isTransacted())
             throw new BpelEngineException("MUST RUN IN TRANSACTION!");
-
+        
         long maxTime = System.currentTimeMillis() + _maxReductionTimeMs;
 
         // Execute the process state reductions
         boolean canReduce = true;
-        while (ProcessState.canExecute(_dao.getState()) && System.currentTimeMillis() < maxTime && canReduce && !_forceFlush) {
+        while (ProcessState.canExecute(_dao.getState()) && System.currentTimeMillis() < maxTime && canReduce && !_forceFlush && !_forceRollback) {
             canReduce = _rti.execute();
         }
-
+        
         _dao.setLastActiveTime(new Date());
         if (!ProcessState.isFinished(_dao.getState())) {
-            saveState();
+            if (_forceRollback) {
+            	rollbackState();
+            } else {
+            	saveState();            	
+            }
 
             if (ProcessState.canExecute(_dao.getState()) && canReduce) {
                 // Max time exceeded (possibly an infinite loop).
@@ -567,6 +599,7 @@
                 try {
                     WorkEvent we = new WorkEvent();
                     we.setIID(_iid);
+                    we.setRetryCount(_retryCount);
                     we.setProcessId(_bpelProcess.getPID());
                     we.setType(WorkEvent.Type.RESUME);
                     _contexts.scheduler.schedulePersistedJob(we.getDetail(), new Date());
@@ -600,6 +633,14 @@
             __log.debug("CACHE SAVE: #" + newcount + " for instance " + _dao.getInstanceId());
         }
     }
+    
+    private void rollbackState() {
+		_contexts.setRollbackOnly();    		
+        int newcount = _dao.getExecutionStateCounter();
+        _dao.setExecutionStateCounter(newcount);
+        _instanceWorker.setCachedState(newcount, null);
+        __log.debug("CACHE SAVE: #" + newcount + " for instance " + _dao.getInstanceId());
+    }
 
     void injectMyRoleMessageExchange(final String responseChannelId, final int idx, MessageExchangeDAO mexdao) {
         // if we have a message match, this instance should be marked
@@ -903,6 +944,10 @@
         _forceFlush = true;
     }
     
+    public void forceRollback() {
+        _forceRollback = true;
+    }
+    
 	public Node readExtVar(Variable variable, Node reference) throws ExternalVariableModuleException {
 		Value val = _bpelProcess.getEVM().read(variable, reference, _iid);
 		return val.value;
@@ -921,5 +966,38 @@
 	public URI getBaseResourceURI() {
 		return _bpelProcess.getBaseResourceURI();
 	}
+	
+	protected OdeConfigProperties getProperties() {
+		return _bpelProcess.getProperties();
+	}
+	
+	public int getAtomicScopeRetryDelay() {
+		return getProperties().getAtomicScopeRetryDelay();
+	}
+	
+	public boolean isAtomicScopeFirstTry() {
+		return _retryCount == 0;
+	}
+
+	public boolean isAtomicScopeRetryable() {
+		return _retryCount < getProperties().getAtomicScopeRetryCount();
+	}
 
+	public void setAtomicScopeRetriedOnce() {
+		++_retryCount;
+	}
+
+	public void setAtomicScopeRetriesDone() {
+		_retryCount = getProperties().getAtomicScopeRetryCount();
+	}
+	
+	public void setAtomicScope(boolean atomicScope) {
+		_atomicScope = atomicScope;
+		_bpelProcess._server.setTransacted(atomicScope);
+	}
+	
+	public boolean isAtomicScope() {
+		return _atomicScope;
+	}
+	
 }

Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java Wed Nov 12 11:13:58 2008
@@ -46,17 +46,32 @@
 import org.apache.ode.bpel.dao.ProcessDAO;
 import org.apache.ode.bpel.evar.ExternalVariableModule;
 import org.apache.ode.bpel.evt.BpelEvent;
-import org.apache.ode.bpel.iapi.*;
+import org.apache.ode.bpel.extension.ExtensionBundleRuntime;
+import org.apache.ode.bpel.iapi.AtomicScopeProperties;
+import org.apache.ode.bpel.iapi.BindingContext;
+import org.apache.ode.bpel.iapi.BpelEngineException;
+import org.apache.ode.bpel.iapi.BpelEventListener;
+import org.apache.ode.bpel.iapi.BpelServer;
+import org.apache.ode.bpel.iapi.ContextException;
+import org.apache.ode.bpel.iapi.Endpoint;
+import org.apache.ode.bpel.iapi.EndpointReferenceContext;
+import org.apache.ode.bpel.iapi.InvocationStyle;
+import org.apache.ode.bpel.iapi.Message;
+import org.apache.ode.bpel.iapi.MessageExchange;
+import org.apache.ode.bpel.iapi.MessageExchangeContext;
+import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
+import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
+import org.apache.ode.bpel.iapi.ProcessConf;
+import org.apache.ode.bpel.iapi.Scheduler;
 import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
 import org.apache.ode.bpel.iapi.Scheduler.JobProcessorException;
 import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
+import org.apache.ode.bpel.rapi.ProcessModel;
+import org.apache.ode.il.config.OdeConfigProperties;
 import org.apache.ode.utils.GUID;
 import org.apache.ode.utils.msg.MessageBundle;
 import org.apache.ode.utils.stl.CollectionsX;
 import org.apache.ode.utils.stl.MemberOfFunction;
-import org.apache.ode.bpel.rapi.ProcessModel;
-import org.apache.ode.bpel.rapi.OdeRuntime;
-import org.apache.ode.bpel.extension.ExtensionBundleRuntime;
 
 /**
  * <p>
@@ -105,7 +120,7 @@
 
     private DehydrationPolicy _dehydrationPolicy;
 
-    private Properties _configProperties;
+    private OdeConfigProperties _properties;
 
     private ExecutorService _exec;
 
@@ -229,7 +244,7 @@
      * @param listener
      */
     public void registerBpelEventListener(BpelEventListener listener) {
-        listener.startup(_configProperties);
+        listener.startup(_properties.getProperties());
 
         // Do not synchronize, eventListeners is copy-on-write array.
         _contexts.eventListeners.add(listener);
@@ -534,8 +549,12 @@
         _dehydrationPolicy = dehydrationPolicy;
     }
 
-    public void setConfigProperties(Properties configProperties) {
-        _configProperties = configProperties;
+    public void setConfigProperties(OdeConfigProperties properties) {
+    	_properties = properties;
+    }
+    
+    public OdeConfigProperties getConfigProperties() {
+    	return _properties;
     }
 
     public void setMessageExchangeContext(MessageExchangeContext mexContext) throws BpelEngineException {
@@ -964,4 +983,7 @@
             _contexts.execTransaction(_work);
         }
     }
+    
+	public void setTransacted(boolean atomicScope) {
+	}
 }

Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/Contexts.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/Contexts.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/Contexts.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/Contexts.java Wed Nov 12 11:13:58 2008
@@ -104,7 +104,7 @@
         boolean success = false;
         try {
             T retval = transaction.call();
-            success = true;
+            success = (txManager.getStatus() != Status.STATUS_MARKED_ROLLBACK);
             return retval;
         } catch (Exception ex) {
             throw ex;
@@ -124,6 +124,14 @@
                 }
         }
     }
+    
+    public void setRollbackOnly() {
+    	try {
+	    	txManager.setRollbackOnly();
+    	} catch (SystemException se) {
+            __log.error("Transaction set rollback only failed.", se);
+    	}
+    }
 
     public void registerCommitSynchronizer(final Runnable runnable) {
         try {

Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java Wed Nov 12 11:13:58 2008
@@ -19,8 +19,8 @@
 package org.apache.ode.bpel.engine;
 
 import java.io.ByteArrayInputStream;
-import java.io.InputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -29,6 +29,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
@@ -49,6 +50,7 @@
 import org.apache.ode.bpel.engine.extvar.ExternalVariableConf;
 import org.apache.ode.bpel.engine.extvar.ExternalVariableManager;
 import org.apache.ode.bpel.evt.ProcessInstanceEvent;
+import org.apache.ode.bpel.iapi.AtomicScopeProperties;
 import org.apache.ode.bpel.iapi.BpelEngineException;
 import org.apache.ode.bpel.iapi.BpelEventListener;
 import org.apache.ode.bpel.iapi.Endpoint;
@@ -71,8 +73,13 @@
 import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
 import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
 import org.apache.ode.bpel.memdao.ProcessInstanceDaoImpl;
-import org.apache.ode.bpel.rapi.*;
+import org.apache.ode.bpel.rapi.FaultInfo;
+import org.apache.ode.bpel.rapi.OdeRTInstance;
+import org.apache.ode.bpel.rapi.OdeRuntime;
+import org.apache.ode.bpel.rapi.PartnerLinkModel;
+import org.apache.ode.bpel.rapi.ProcessModel;
 import org.apache.ode.bpel.rapi.Serializer;
+import org.apache.ode.il.config.OdeConfigProperties;
 import org.apache.ode.jacob.soup.ReplacementMap;
 import org.apache.ode.jacob.vpu.ExecutionQueueImpl;
 import org.apache.ode.utils.GUID;
@@ -185,7 +192,10 @@
         _evm = new ExternalVariableManager(_pid, _extVarConf, _contexts.externalVariableEngines);
     }
     
-
+    public OdeConfigProperties getProperties() {
+    	return _server.getConfigProperties();
+    }
+    
     public String toString() {
         return "ODEProcess[" + _pid + "]";
     }
@@ -297,6 +307,8 @@
                             return null;
                         }
                     });
+                } else if (istyle == InvocationStyle.P2P_TRANSACTED) /* transact p2p invoke in the same thread */ {
+                    executeContinueInstanceMyRoleRequestReceived(mexdao);
                 } else /* non-transacted style */{
                     WorkEvent we = new WorkEvent();
                     we.setType(WorkEvent.Type.MYROLE_INVOKE);
@@ -346,12 +358,13 @@
         instance.execute();
     }
 
-    void executeContinueInstanceResume(ProcessInstanceDAO instanceDao) {
+    void executeContinueInstanceResume(ProcessInstanceDAO instanceDao, int retryCount) {
         BpelInstanceWorker worker = _instanceWorkerCache.get(instanceDao.getInstanceId());
         assert worker.isWorkerThread();
 
         OdeRTInstance rti = _runtime.newInstance(getState(worker, instanceDao));
         BpelRuntimeContextImpl brc = new BpelRuntimeContextImpl(worker, instanceDao, rti);
+        brc.setRetryCount(retryCount);
         brc.execute();
 
     }
@@ -569,7 +582,7 @@
             executeContinueInstanceTimerReceived(instanceDAO, we.getChannel());
             break;
         case RESUME:
-            executeContinueInstanceResume(instanceDAO);
+            executeContinueInstanceResume(instanceDAO, we.getRetryCount());
             break;
         case PARTNER_RESPONSE:
             executeContinueInstancePartnerRoleResponseReceived(mexDao);
@@ -1307,8 +1320,12 @@
         if (ODEProcess.__log.isDebugEnabled())
             __log.debug("Invoking in a p2p interaction, partnerrole " + partnerRoleMex.getMessageExchangeId()
                     + " target=" + target);
-
-        partnerRoleMex.setInvocationStyle(InvocationStyle.P2P);
+        
+        partnerRoleMex.setInvocationStyle(
+        		Boolean.parseBoolean(
+        				partnerRoleMex.getProperty(MessageExchange.PROPERTY_SEP_MYROLE_TRANSACTED))
+        			? InvocationStyle.P2P_TRANSACTED 
+        			: InvocationStyle.P2P);
 
         // Plumbing
         MessageExchangeDAO myRoleMex = target.createMessageExchange(new GUID().toString(),

Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/PartnerLinkPartnerRoleImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/PartnerLinkPartnerRoleImpl.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/PartnerLinkPartnerRoleImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/PartnerLinkPartnerRoleImpl.java Wed Nov 12 11:13:58 2008
@@ -31,6 +31,7 @@
 import org.apache.ode.bpel.iapi.Endpoint;
 import org.apache.ode.bpel.iapi.EndpointReference;
 import org.apache.ode.bpel.iapi.InvocationStyle;
+import org.apache.ode.bpel.iapi.MessageExchange;
 import org.apache.ode.bpel.iapi.PartnerRoleChannel;
 import org.apache.ode.bpel.iapi.MessageExchange.AckType;
 import org.apache.ode.bpel.iapi.MessageExchange.FailureType;
@@ -130,7 +131,8 @@
 
     private void invokePersisted(MessageExchangeDAO mexDao, EndpointReference partnerEpr, EndpointReference myRoleEpr,
             Operation operation, Set<InvocationStyle> supportedStyles) {
-        if (supportedStyles.contains(InvocationStyle.TRANSACTED)) {
+    	boolean transactionalMex = Boolean.parseBoolean(mexDao.getProperty(MessageExchange.PROPERTY_SEP_MYROLE_TRANSACTED));
+        if (supportedStyles.contains(InvocationStyle.TRANSACTED) && transactionalMex) {
             mexDao.setInvocationStyle(InvocationStyle.TRANSACTED);
             invokeTransacted(mexDao, partnerEpr, myRoleEpr, operation);
         } else if (supportedStyles.contains(InvocationStyle.RELIABLE)) {

Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/WorkEvent.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/WorkEvent.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/WorkEvent.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/WorkEvent.java Wed Nov 12 11:13:58 2008
@@ -126,5 +126,13 @@
     public QName getProcessId() {
         return _jobDetail.get("pid") != null? QName.valueOf((String) _jobDetail.get("pid")) : null;
     }
+    
+    public void setRetryCount(int retryCount) {
+    	_jobDetail.put("retryCount", String.valueOf(retryCount));
+    }
+    
+    public int getRetryCount() {
+    	return _jobDetail.get("retryCount") != null ? Integer.parseInt((String) _jobDetail.get("retryCount")) : 0;
+    }
 }
 

Modified: ode/trunk/il-common/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java
URL: http://svn.apache.org/viewvc/ode/trunk/il-common/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/il-common/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java (original)
+++ ode/trunk/il-common/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java Wed Nov 12 11:13:58 2008
@@ -79,6 +79,10 @@
 
     public static final String PROP_PROCESS_DEHYDRATION = "process.dehydration";
 
+    public static final String PROP_ATOMIC_SCOPES_RETRY_COUNT = "scopes.atomic.retry.count";
+    
+    public static final String PROP_ATOMIC_SCOPES_RETRY_DELAY = "scopes.atomic.retry.delay";
+    
     public static final String PROP_DAOCF = "dao.factory";
     
     public static final String PROP_EXTENSION_BUNDLES_RT = "extension.bundles.runtime";
@@ -273,4 +277,11 @@
     	return getProperty(PROP_EXTENSION_BUNDLES_VAL);
     }
 
+    public int getAtomicScopeRetryCount() {
+        return Integer.valueOf(getProperty(OdeConfigProperties.PROP_ATOMIC_SCOPES_RETRY_COUNT, "3"));
+    }
+
+    public int getAtomicScopeRetryDelay() {
+        return Integer.valueOf(getProperty(OdeConfigProperties.PROP_ATOMIC_SCOPES_RETRY_DELAY, "60"));
+    }
 }

Modified: ode/trunk/jbi/src/main/java/org/apache/ode/jbi/MessageExchangeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/MessageExchangeContextImpl.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/jbi/src/main/java/org/apache/ode/jbi/MessageExchangeContextImpl.java (original)
+++ ode/trunk/jbi/src/main/java/org/apache/ode/jbi/MessageExchangeContextImpl.java Wed Nov 12 11:13:58 2008
@@ -50,6 +50,7 @@
     static {
         HashSet<InvocationStyle> supported = new HashSet<InvocationStyle>();
         supported.add(InvocationStyle.UNRELIABLE);
+        supported.add(InvocationStyle.TRANSACTED);
         __supported = Collections.unmodifiableSet(supported);
     }
 

Modified: ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java
URL: http://svn.apache.org/viewvc/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java (original)
+++ ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java Wed Nov 12 11:13:58 2008
@@ -235,7 +235,7 @@
         _ode._server.setBindingContext(new BindingContextImpl(_ode));
         _ode._server.setScheduler(_ode._scheduler);
         _ode._server.setTransactionManager(_ode.getTransactionManager());
-        _ode._server.setConfigProperties(_ode._config.getProperties());
+        _ode._server.setConfigProperties(_ode._config);
         _ode._server.registerBpelEventListener(new DebugBpelEventListener());
 
         _ode._server.init();

Modified: ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OConstants.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OConstants.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OConstants.java (original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OConstants.java Wed Nov 12 11:13:58 2008
@@ -42,6 +42,7 @@
     public QName qnForEachCounterError;
     public QName qnInvalidBranchCondition;
     public QName qnInvalidExpressionValue;
+    public QName qnScopeRollback;
 
 
     public OConstants(OProcess owner) {

Modified: ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OProcess.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OProcess.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OProcess.java (original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OProcess.java Wed Nov 12 11:13:58 2008
@@ -57,6 +57,9 @@
 
     /** ProcessImpl-level scope. */
     public OScope processScope;
+    
+    /** Process-level atomic scope flag */
+    public boolean atomicScope;
 
     /** All partner links in the process. */
     public final Set<PartnerLinkModel> allPartnerLinks = new HashSet<PartnerLinkModel>();

Modified: ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OScope.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OScope.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OScope.java (original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OScope.java Wed Nov 12 11:13:58 2008
@@ -75,6 +75,9 @@
 
     /** Is this scope <em>isolated</em> i.e. protected against concurrent access to its variables. */
     public boolean isolatedScope;
+    
+    /** Is this scope's child an inbound message activity? */
+    public boolean inboundMessageChildActivity;
 
     public OScope(OProcess owner, OActivity parent) {
         super(owner, parent);

Modified: ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OdeInternalInstance.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OdeInternalInstance.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OdeInternalInstance.java (original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/OdeInternalInstance.java Wed Nov 12 11:13:58 2008
@@ -115,6 +115,20 @@
 
     void forceFlush();
 
+    void forceRollback();
+    
     void reply(PartnerLinkInstance plink, String opName, String bpelmex, Element element, QName fault)
             throws FaultException;
+
+	int getRetryDelay();
+	
+	boolean isFirstTry();
+
+	boolean isRetryable();
+
+	void setRetriedOnce();
+
+	void setRetriesDone();
+
+	void setAtomicScope(boolean atomicScope);
 }

Modified: ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java (original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java Wed Nov 12 11:13:58 2008
@@ -88,7 +88,7 @@
     public boolean isPartnerRoleEndpointInitialized(PartnerLinkInstance pLink) {
         return _brc.isPartnerRoleEndpointInitialized(pLink);
     }
-
+    
     public void completedFault(FaultData faultData) {
         cleanupOutstandingMyRoleExchanges(faultData);
         _brc.completedFault(faultData);
@@ -458,6 +458,13 @@
     }
 
     /**
+     * Proxy to {@link ProcessControlContext#forceRollback() }.
+     */
+    public void forceRollback() {
+        _brc.forceRollback();
+    }
+    
+    /**
      * Proxy to {@link ProcessControlContext#terminate()}.
      */
     public void terminate() {
@@ -710,7 +717,7 @@
         if (bos != null) _soup.write(bos);
         return _soup;
     }
-
+    
     /* (non-Javadoc)
      * @see org.apache.ode.bpel.engine.rapi.OdeInternalInstance#createInstance(java.lang.String)
      */
@@ -728,4 +735,29 @@
     public URI getBaseResourceURI() {
         return _runtime._pconf.getBaseURI();
     }
+    
+    public int getRetryDelay() {
+    	return _brc.getAtomicScopeRetryDelay();
+    }
+
+	public boolean isFirstTry() {
+		return _brc.isAtomicScopeFirstTry();
+	}
+
+	public boolean isRetryable() {
+		return _brc.isAtomicScopeRetryable();
+	}
+
+	public void setRetriedOnce() {
+		_brc.setAtomicScopeRetriedOnce();		
+	}
+
+	public void setRetriesDone() {
+		_brc.setAtomicScopeRetriesDone();
+	}
+
+	public void setAtomicScope(boolean atomicScope) {
+		_brc.setAtomicScope(atomicScope);
+	}
+    
 }

Modified: ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPEACT.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPEACT.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPEACT.java (original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPEACT.java Wed Nov 12 11:13:58 2008
@@ -20,6 +20,7 @@
 
 import java.io.Serializable;
 import java.util.Collections;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
@@ -35,6 +36,8 @@
 import org.apache.ode.bpel.rtrep.v2.channels.ParentScopeChannel;
 import org.apache.ode.bpel.rtrep.v2.channels.ParentScopeChannelListener;
 import org.apache.ode.bpel.rtrep.v2.channels.ReadWriteLockChannel;
+import org.apache.ode.bpel.rtrep.v2.channels.TimerResponseChannel;
+import org.apache.ode.bpel.rtrep.v2.channels.TimerResponseChannelListener;
 import org.apache.ode.jacob.ChannelListener;
 import org.apache.ode.jacob.SynchChannel;
 import org.apache.ode.jacob.SynchChannelListener;
@@ -43,20 +46,19 @@
 import org.w3c.dom.Element;
 
 /**
- * A scope activity. The scope activity creates a new scope frame and proceeeds using the {@link SCOPE} template.
+ * A scope activity. The scope activity creates a new scope frame and proceeds using the {@link SCOPE} template.
  */
 public class SCOPEACT extends ACTIVITY {
     private static final Log __log = LogFactory.getLog(SCOPEACT.class);
     
     private static final long serialVersionUID = -4593029783757994939L;
-
+    
     public SCOPEACT(ActivityInfo self, ScopeFrame scopeFrame, LinkFrame linkFrame) {
         super(self, scopeFrame, linkFrame);
     }
 
     public void run() {
-
-        
+    	
         if (((OScope) _self.o).isolatedScope) {
             __log.debug("found ISOLATED scope, instance ISOLATEDGUARD");
             instance(new ISOLATEDGUARD(createLockList(), newChannel(SynchChannel.class), _scopeFrame));
@@ -67,16 +69,25 @@
 
             // Depending on whether we are ATOMIC or not, we'll need to create outgoing link status interceptors
             LinkFrame linkframe;
-            if (((OScope) _self.o).atomicScope && !_self.o.outgoingLinks.isEmpty()) {
+        	if (((OScope) _self.o).atomicScope) {
+        		getBpelRuntime().setAtomicScope(true);
+        		if (!((OScope)_self.o).inboundMessageChildActivity) {
+	        		getBpelRuntime().forceFlush();
+        		}
+        		instance(new SLEEPER());
                 ValChannel linkInterceptorControl = newChannel(ValChannel.class);
                 ParentScopeChannel psc = newChannel(ParentScopeChannel.class);
                 linkframe = createInterceptorLinkFrame();
-                instance(new LINKSTATUSINTERCEPTOR(linkInterceptorControl,linkframe));
+                if (!_self.o.outgoingLinks.isEmpty()) {
+	                instance(new LINKSTATUSINTERCEPTOR(linkInterceptorControl, linkframe));
+                }
                 instance(new UNLOCKER(psc, _self.parent, null, Collections.<IsolationLock>emptyList(), linkInterceptorControl));
                 _self.parent = psc;
-            } else
+        	} else {
+        		getBpelRuntime().setAtomicScope(false);
                 linkframe = _linkFrame;
-            
+        	}
+        	
             instance(new SCOPE(_self, newFrame, linkframe));
         }
 
@@ -312,8 +323,8 @@
 
                 public void cancelled() {
                     _parent.cancelled();
-                    unlockAll();
                     _linkStatusInterceptor.val(false);
+                    unlockAll(false);
                     // no more listening.
                 }
 
@@ -324,18 +335,31 @@
                 }
 
                 public void completed(FaultData faultData, Set<CompensationHandler> compensations) {
-                    _parent.completed(faultData, compensations);
-                    _linkStatusInterceptor.val(faultData == null);
-                    unlockAll();
-                    // no more listening
-
+                	if (faultData != null) {
+                        if (!isScopeRetryable()) {
+                        	FaultData fault = createFault(getConstants().qnScopeRollback, faultData.getFaultMessage(), null, SCOPEACT.this._self.o);
+                            _parent.completed(fault, CompensationHandler.emptySet());
+                            _linkStatusInterceptor.val(false);
+                            unlockAll(false);
+                        } else {
+                        	unlockAll(true);
+                        }
+                	} else {
+                        _parent.completed(faultData, compensations);
+                        _linkStatusInterceptor.val(faultData == null);
+                        unlockAll(false);
+                        // no more listening
+                	}
+                	getBpelRuntime().setRetriedOnce();
                 }
 
                 public void failure(String reason, Element data) {
-                    _parent.failure(reason, data);
-                    _linkStatusInterceptor.val(false);
-                    unlockAll();
-                    // no more listening
+                	unlockAll(true);
+                    if (!isScopeRetryable()) {
+                    	FaultData fault = createFault(getConstants().qnScopeRollback, data, null, SCOPEACT.this._self.o);
+                        _parent.completed(fault, CompensationHandler.emptySet());
+                        _linkStatusInterceptor.val(false);
+                    }
                 }
 
             });
@@ -345,20 +369,81 @@
          * Unlock all the acquired locks.
          * 
          */
-        private void unlockAll() {
+        private void unlockAll(boolean rollback) {
             __log.debug("UNLOCKER: unlockAll: " + _locks);
 
-            if (((OScope)SCOPEACT.this._self.o).atomicScope)
-                getBpelRuntime().forceFlush();
+            if (((OScope)SCOPEACT.this._self.o).atomicScope) {
+            	if (rollback) {
+            		getBpelRuntime().forceRollback();
+            	} else {
+                    getBpelRuntime().forceFlush();
+            	}
+            }
                 
             for (IsolationLock il : _locks)
                 il.lockChannel.unlock(_synchChannel);
             _locks.clear();
         }
+        
+        private boolean isScopeRetryable() {
+    		// in case of atomic scopes, the following retry logic applies 
+    		if (!getBpelRuntime().isFirstTry()) {
+    			// this is not the first time we're trying this scope
+    			if (getBpelRuntime().isRetryable()) {
+                    return true;
+    			} else {
+    				// we tried and tried to no avail, just give up by doing nothing!
+    				return false;
+    			}
+    		} else {  
+    			return true;
+    		}
+    			
+        }
 
     }
 
     /**
+     * Interceptor that goes to sleep for sometime before retrying the failed atomic scope
+     *
+     */
+    private class SLEEPER extends BpelJacobRunnable {
+
+        private static final long serialVersionUID = -476393080609348172L;
+
+        public SLEEPER() {
+        }
+
+        @Override
+        public void run() {
+            __log.debug("running SLEEPER");
+            
+    		// in case of atomic scopes, the following retry logic applies 
+    		if (!getBpelRuntime().isFirstTry()) {
+    			// this is not the first time we're trying this scope
+    			if (getBpelRuntime().isRetryable()) {
+    				// we need to retry after injecting a certain amount of delay
+                    Date future = new Date(new Date().getTime() + 
+                            getBpelRuntime().getRetryDelay() * 1000);
+                    final TimerResponseChannel timerChannel = newChannel(TimerResponseChannel.class);
+                    getBpelRuntime().registerTimer(timerChannel, future);
+                    object(false, new TimerResponseChannelListener(timerChannel) {
+                        private static final long serialVersionUID = -261911108068231376L;
+                            public void onTimeout() {
+                                getBpelRuntime().setRetriedOnce();
+                            }
+                            public void onCancel() {
+                                getBpelRuntime().setRetriesDone();
+                            }
+                    });
+    			} else {
+    				// we tried and tried to no avail, just give up by doing nothing!
+    			}
+    		}
+        }
+    }
+    
+    /**
      * Representation of a lock needed by an isolated scope.
      * 
      * @author Maciej Szefler <mszefler at gmail dot com>

Modified: ode/trunk/runtimes/src/test/java/org/apache/ode/bpel/rtrep/v2/CoreBpelTest.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/test/java/org/apache/ode/bpel/rtrep/v2/CoreBpelTest.java?rev=713457&r1=713456&r2=713457&view=diff
==============================================================================
--- ode/trunk/runtimes/src/test/java/org/apache/ode/bpel/rtrep/v2/CoreBpelTest.java (original)
+++ ode/trunk/runtimes/src/test/java/org/apache/ode/bpel/rtrep/v2/CoreBpelTest.java Wed Nov 12 11:13:58 2008
@@ -420,6 +420,11 @@
         
     }
 
+    public void forceRollback() {
+        // TODO Auto-generated method stub
+        
+    }
+    
 	public ExtensionOperation createExtensionActivityImplementation(QName name) {
 		// TODO Auto-generated method stub
 		return null;
@@ -456,4 +461,33 @@
 		return null;
 	}
 
+	public int getRetryDelay() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public boolean isFirstTry() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public boolean isRetryable() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public void setRetriedOnce() {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void setRetriesDone() {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void setAtomicScope(boolean atomicScope) {
+		// TODO Auto-generated method stub
+		
+	}
 }