You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bu...@apache.org on 2012/12/28 14:13:48 UTC

svn commit: r844111 [2/6] - in /websites/staging/ode/trunk/content: ./ developerguide/ extensions/ userguide/

Added: websites/staging/ode/trunk/content/extensions/index.html
==============================================================================
--- websites/staging/ode/trunk/content/extensions/index.html (added)
+++ websites/staging/ode/trunk/content/extensions/index.html Fri Dec 28 13:13:46 2012
@@ -0,0 +1,183 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>BPEL Extensions</title>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" />
+
+    <link href="/css/application.min.css" rel="stylesheet" media="screen">
+    
+
+    
+    
+  </head>
+  <body>
+
+    <!-- Navbar -->
+    <div class="navbar navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="brand" href="/index.html">Apache ODE</a>
+          <div class="nav-collapse collapse">
+            <ul class="nav">
+              <li class="">
+                <a href="/getting-ode.html">Getting ODE</a>
+              </li>
+              <li class="active dropdown">
+                <a href="/user-guide.html" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/userguide/">User Guide</a></li>
+                  <li><a href="/developerguide/">Developer Guide</a></li>
+                  <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li>
+                  <li><a href="/extensions/">WS-BPEL Extensions</a></li>
+                  <li><a href="/faq.html">FAQ</a></li>
+                  <li><a href="/roadmap.html">Roadmap</a></li>
+                  <li><a href="/resource-services.html">Resources &amp; Services</a></li>
+                  <li><a href="/javadoc/">Javadoc</a></li>
+                </ul>
+              </li>
+              <li class=" dropdown">
+                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/mailing-lists.html">Mailing Lists</a></li>
+                  <li><a href="/building-ode.html">Building ODE</a></li>
+                  <li><a href="/source-code.html">Source Code</a></li>
+                  <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li>
+                  <li><a href="/contributors.html">Contributors</a></li>
+                  <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+                </ul>
+              </li>
+              <li class="dropdown">
+                <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+                  <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                  <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+                  <li><a href="http://www.apache.org/security/">Security</a></li>
+                </ul>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- Subhead -->
+    
+    <header class="jumbotron subhead" id="overview">
+      <div class="container">
+        
+        <h1>BPEL Extensions</h1>
+        
+      </div>
+    </header>
+    
+
+    <!-- Content -->
+    <div class="container">
+      
+      <div class="row">
+        <div class="span12">
+          <h1 id="overview">Overview</h1>
+<p>ODE extends the <a href="ws-bpel-20.html">WS-BPEL</a> in areas that aren't covered by the spec. This page details these extensions.</p>
+<ul>
+<li><a href="#BPELExtensions-ImplicitCorrelations">Implicit Correlations</a></li>
+<li><a href="#BPELExtensions-ActivityFailureandRecovery">Activity Failure and Recovery</a></li>
+<li><a href="#BPELExtensions-ExtensionActivities-ExtensibleAssignOperations">Extension Activities &amp; Extensible Assign Operations</a></li>
+<li><a href="#BPELExtensions-XPathExtensions">XPath Extensions</a></li>
+<li><a href="#BPELExtensions-ExternalVariables">External Variables</a></li>
+<li><a href="#BPELExtensions-HeadersHandling">Headers Handling</a></li>
+<li><a href="#BPELExtensions-RESTfulBPEL-PartI">RESTful BPEL, Part I</a></li>
+<li><a href="#BPELExtensions-RESTfulBPEL-PartII">RESTful BPEL, Part II</a></li>
+<li><a href="#BPELExtensions-IterableForEach">Iterable ForEach</a></li>
+<li><a href="#BPELExtensions-FlexibleAssigns">Flexible Assigns</a></li>
+<li><a href="#BPELExtensions-ProcessContexts">Process Contexts</a></li>
+</ul>
+<p><a name="BPELExtensions-ImplicitCorrelations"></a></p>
+<h2 id="implicit-correlations"><a href="implicit-correlations.html">Implicit Correlations</a></h2>
+<p>BPEL process instances are stateful — therefore, a client interacting with the BPEL engine must identify the particular instance with which it intends to interact in all of its communications. The BPEL specification defines a mechanism — <em>correlation</em> — which allows the process designer to specify which parts of an incoming message (i.e. a message going from a client to the BPEL server) should be used to identify the target process instance. Correlation is a powerful mechanism — however it is a bit complicated and relies on "in-band" message data to associate a messages with a process instance.</p>
+<p>To keep simple cases simple, ODE provides an alternative correlation mechanism — <em>implicit correlation</em> — that automatically handles correlation through "out-of-band" session identifiers. The mechanism is simple: a unique session identifier is associated with every every partner link instance. When a message is sent on a partner link, the session identifier is sent along with the message. The recipient is then able to use the received session identifier in subsequent communications with the process instance. Messages received by the BPEL engine that have a session identifier are routed to the correct instance (and partner link) by that session identifier.</p>
+<p><a href="implicit-correlations.html">Read more</a></p>
+<p><a name="BPELExtensions-ActivityFailureandRecovery"></a></p>
+<h2 id="activity-failure-and-recovery"><a href="activity-failure-and-recovery.html">Activity Failure and Recovery</a></h2>
+<p>There are several types of error conditions. In this document we introduce a class of error condition called <em>failures</em>, distinct from <em>faults</em>, and describe how failures are caught and handled by the process engine.</p>
+<p>For example, when the process is unable to perform DNS resolution to determine the service endpoint, it generates a failure. An administrator can fix the DNS server and tell the process engine to retry the activity. Had the DNS error been reported as a fault, the process would either terminate or require complex fault handling and recovery logic to proceed past this point of failure.</p>
+<p>In short, failures shields the process from common, non-terminal error conditions while retaining simple and straightforward process definitions that do not need to account for these error conditions.</p>
+<p><a href="activity-failure-and-recovery.html">Read more</a></p>
+<p><a name="BPELExtensions-ExtensionActivities-ExtensibleAssignOperations"></a></p>
+<h2 id="extension-activities-extensible-assign-operations"><a href="extension-activities-extensible-assign-operations.html">Extension Activities &amp; Extensible Assign Operations</a></h2>
+<p>Apache ODE provides a plug-in architecture for custom activity implementations and custom variable assignment logic. Such plug-ins can be registered to ODE and can be used according to the WS-BPEL 2.0 extensibility mechnisms (<code>&lt;extensionActivity&gt;</code> &amp; <code>&lt;extensionAssignOperation&gt;</code>).</p>
+<p><a href="extension-activities-extensible-assign-operations.html">Read more</a></p>
+<p><a name="BPELExtensions-XPathExtensions"></a></p>
+<h2 id="xpath-extensions"><a href="xpath-extensions.html">XPath Extensions</a></h2>
+<p>Apache ODE extends the default XPath coverage provided by the WS-BPEL specification mostly by adding support for <a href="http://www.w3.org/TR/xpath20/">XPath 2.0</a> and by offering a few utility extension functions to make some assignments easier.</p>
+<p><a href="xpath-extensions.html">Read more</a></p>
+<p><a name="BPELExtensions-ExternalVariables"></a></p>
+<h2 id="external-variables"><a href="external-variables.html">External Variables</a></h2>
+<p>External variables are an easy way to share data between the process and external systems, by treating those independent entities as BPEL variables that can be used in expressions and assignments.  External variables may be records stored in the database, REST resources, etc.</p>
+<p><a href="external-variables.html">Read more</a></p>
+<p><a name="BPELExtensions-HeadersHandling"></a></p>
+<h2 id="headers-handling"><a href="headers-handling.html">Headers Handling</a></h2>
+<p>There are several situations where one would want to access headers form the wire format in their BPEL process. It could be to assign them to another message and pass them around or to execute some business logic that's header-dependent (often a bad idea but sometimes there's no choice). ODE supports the manipulation of wire format headers in two different ways.</p>
+<p><a href="headers-handling.html">Read more</a></p>
+<p><a name="BPELExtensions-RESTfulBPEL-PartI"></a></p>
+<h2 id="restful-bpel-part-i"><a href="restful-bpel-part-i.html">RESTful BPEL, Part I</a></h2>
+<p>Extends the invoke activity to handle RESTful Web services.  This extension uses BPEL variables of type xsd:uri and xsd:string instead of partner links, and does away with the WSDL indirection, making it straightforward to develop processes that use RESTful Web services. </p>
+<p><a href="restful-bpel-part-i.html">Read more</a></p>
+<p><a name="BPELExtensions-RESTfulBPEL-PartII"></a></p>
+<h2 id="restful-bpel-part-ii"><a href="restful-bpel-part-ii.html">RESTful BPEL, Part II</a></h2>
+<p>Extends receive and onEvent to expose RESTful resources that.  This extension adds the ability to declare and instantiate resources, and specific handling for the HTTP methods GET, POST, PUT and DELETE.</p>
+<p><a href="restful-bpel-part-ii.html">Read more</a></p>
+<p><a name="BPELExtensions[IterableForEach"></a></p>
+<h2 id="iterable-foreach"><a href="iterable-foreach.html">Iterable ForEach</a></h2>
+<p>Extends the <forEach> activity so that the counter variable iterates over the items contained in a given sequence.  This extension provides an alternative and more dynamic way of generating M branches, where M is the size of the binding sequence. The semantics of the <completionCondition> stays the same, in that the loop is deemed to be complete if B out of the M branches complete (successfully), where B is its actual value.</p>
+<p><a href="iterable-foreach.html">Read more</a></p>
+<p><a name="BPELExtensions-FlexibleAssigns"></a></p>
+<h2 id="flexible-assigns"><a href="flexible-assigns.html">Flexible Assigns</a></h2>
+<p>Extends the <assign> activity so that it can be made to either ignore or insert data that is missing in the to-spec of a copy operation. This shortcut allows users to handle what would normally be fault scenarios, in a more graceful and intuitive way.</p>
+<p><a href="flexible-assigns.html">Read more</a></p>
+<p><a name="BPELExtensions-ProcessContexts"></a></p>
+<h2 id="process-contexts"><a href="process-contexts.html">Process Contexts</a></h2>
+<p>Extends BPEL and ODE to allow the circulation of transport metadata (like security tokens, correlation keys, or tracing informations) from messages to processes and then from processes to messages.</p>
+<p><a href="process-contexts.html">Read more</a></p>
+        </div>
+      </div>
+      
+
+      <!-- Footer -->
+      <footer class="footer">
+        <div class='row'>
+          <div class='span3'>
+            <img src="/img/asf.png" alt="Apache Software Foundation"/>
+          </div>
+          <div class='span9'>
+            <p><strong>Apache ODE</strong><sup>&trade;</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>&trade;</sup></a>,
+            having graduated from the ASF Incubator in July 2007. Through a collaborative and meritocratic development process, Apache
+            projects deliver enterprise-grade, freely available software products that
+            attract large communities of users.</p>
+            <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
+          </div>
+        </div>
+      </footer>
+    </div> <!-- /container -->
+    <script src="http://code.jquery.com/jquery-latest.js"></script>
+    <script src="/js/bootstrap.min.js"></script>
+    <script type="text/javascript">
+    var _gaq = _gaq || [];
+    _gaq.push(['_setAccount', 'UA-36293077-1']);
+    _gaq.push(['_trackPageview']);
+
+    (function() {
+      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+    })();
+
+  </script>
+  </body>
+</html>
\ No newline at end of file

Added: websites/staging/ode/trunk/content/extensions/iterable-foreach.html
==============================================================================
--- websites/staging/ode/trunk/content/extensions/iterable-foreach.html (added)
+++ websites/staging/ode/trunk/content/extensions/iterable-foreach.html Fri Dec 28 13:13:46 2012
@@ -0,0 +1,163 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Iterable ForEach</title>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" />
+
+    <link href="/css/application.min.css" rel="stylesheet" media="screen">
+    
+
+    
+    
+  </head>
+  <body>
+
+    <!-- Navbar -->
+    <div class="navbar navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="brand" href="/index.html">Apache ODE</a>
+          <div class="nav-collapse collapse">
+            <ul class="nav">
+              <li class="">
+                <a href="/getting-ode.html">Getting ODE</a>
+              </li>
+              <li class=" dropdown">
+                <a href="/user-guide.html" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/userguide/">User Guide</a></li>
+                  <li><a href="/developerguide/">Developer Guide</a></li>
+                  <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li>
+                  <li><a href="/extensions/">WS-BPEL Extensions</a></li>
+                  <li><a href="/faq.html">FAQ</a></li>
+                  <li><a href="/roadmap.html">Roadmap</a></li>
+                  <li><a href="/resource-services.html">Resources &amp; Services</a></li>
+                  <li><a href="/javadoc/">Javadoc</a></li>
+                </ul>
+              </li>
+              <li class=" dropdown">
+                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/mailing-lists.html">Mailing Lists</a></li>
+                  <li><a href="/building-ode.html">Building ODE</a></li>
+                  <li><a href="/source-code.html">Source Code</a></li>
+                  <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li>
+                  <li><a href="/contributors.html">Contributors</a></li>
+                  <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+                </ul>
+              </li>
+              <li class="dropdown">
+                <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+                  <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                  <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+                  <li><a href="http://www.apache.org/security/">Security</a></li>
+                </ul>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- Subhead -->
+    
+    <header class="jumbotron subhead" id="overview">
+      <div class="container">
+        
+        <h1>Iterable ForEach</h1>
+        
+      </div>
+    </header>
+    
+
+    <!-- Content -->
+    <div class="container">
+      
+      <div class="row">
+        <div class="span12">
+          <p>This extension simplifies a common usage pattern in which forEach is used to iterate over a selected sequence of nodes.</p>
+<p>The common use case involves selecting a sequence of nodes, storing it in a scope variable, and using forEach to iterate over that sequence, using the current counter value to extract and operate on the indexed value from the sequence.  This extension captures the pattern in a form that's easier to author and debug, by replacing counter with iterator and eliminating the use of temporary variables.</p>
+<p><a name="IterableForEach-ProcessingMultipleBranches-ForEach"></a></p>
+<h2 id="processing-multiple-branches-foreach">Processing Multiple Branches - ForEach</h2>
+<p>The <forEach> activity will execute its contained <scope> activity exactly M times where M is the number of items in the <sequenceValue>.</p>
+<div class="codehilite"><pre><span class="nt">&lt;forEach</span> <span class="na">rangeName=</span><span class="s">&quot;BPELVariableName&quot;</span> <span class="na">parallel=</span><span class="s">&quot;yes|no&quot;</span>
+   <span class="err">standard-attributes</span><span class="nt">&gt;</span>
+   standard-elements
+   <span class="nt">&lt;sequenceValue</span> <span class="na">expressionLanguage=</span><span class="s">&quot;anyURI&quot;</span><span class="err">?</span> <span class="na">instanceOf=</span><span class="s">&quot;sequenceType&quot;</span><span class="nt">&gt;</span>
+      unsigned-integer-expression
+   <span class="nt">&lt;/sequenceValue&gt;</span>
+   <span class="nt">&lt;completionCondition&gt;</span>?
+      <span class="nt">&lt;branches</span> <span class="na">expressionLanguage=</span><span class="s">&quot;anyURI&quot;</span><span class="err">?</span>
+         <span class="na">successfulBranchesOnly=</span><span class="s">&quot;yes|no&quot;</span><span class="err">?</span><span class="nt">&gt;</span>?
+         unsigned-integer-expression
+      <span class="nt">&lt;/branches&gt;</span>
+   <span class="nt">&lt;/completionCondition&gt;</span>
+   <span class="nt">&lt;scope</span> <span class="err">...</span><span class="nt">&gt;</span>...<span class="nt">&lt;/scope&gt;</span>
+<span class="nt">&lt;/forEach&gt;</span>
+</pre></div>
+
+
+<p>When the <forEach> activity is started, the expression in <sequenceValue> is evaluated. Once that value is returned it remains constant for the lifespan of the activity. <a href="sa00074.html">SA00074</a> That expressions MUST return a sequence of items (meaning it comprises nodes, texts or atomic values), where ach item can be validated to be the type specified by the instanceOf attribute. If that expression does not return a valid sequence value, a bpel:invalidExpressionValue fault will be thrown (see section 8.3. Expressions). If the <sequenceValue> is empty, then the child <scope> activity MUST NOT be performed and the <forEach> activity is complete.</p>
+<p>The child activity of a <forEach> MUST be a <scope> activity. The <forEach> construct introduces an implicit range variable, and also introduces dynamic parallelism (i.e. having parallel branches of which number is not known ahead of time). The <scope> activity provides a well-defined scope snapshot semantic and a way to name the dynamic parallel work for compensation purposes (see scope snapshot description in section 12.4.2. Process State Usage in Compensation Handlers).</p>
+<p>If the value of the parallel attribute is no then the activity is a serial <forEach>. The enclosed <scope> activity MUST be executed M times, each instance starting only after the previous repetition is complete. If premature termination occurs such as due to a fault, or the completion condition evaluates to true, then this M requirement does not apply. During each repetition, a variable of type specified by the instanceOf attribute is implicitly declared in the <forEach> activity's child <scope>. This implicit variable has the name specified in the rangeVariableName attribute. The first iteration of the scope will see the range variable initialized to the first item in <sequenceValue>. The next iteration will cause the range variable to be initialized to the second item in <sequenceValue>. Each subsequent iteration will move the range variable to the next item in the sequence until the final iteration where the range will be set to the last item in <sequenceValue>. The r
 ange variable is local to the enclosed <scope> and although its value can be changed during an iteration, that value will be lost at the end of each iteration. Therefore, the range variable value will not affect the value of the next iteration's range.</p>
+<p>If the value of the parallel attribute is yes then the activity is a parallel <forEach>. The enclosed <scope> activity MUST be concurrently executed M times. In essence an implicit <flow> is dynamically created with M copies of the <forEach>'s enclosed <scope> activity as children. Each copy of the <scope> activity will have the same range variable declared in the same manner as specified for serial <forEach>. Each instance's range variable MUST be uniquely initialized in parallel  to one of the teim values starting with first and up to and including the last item in <sequenceValue>, as a part of <scope> instantiation.</p>
+<p><a href="sa00076.html">SA00076</a> If a variable of the same name as the value of the rangeName attribute is declared explicitly in the enclosed scope, it would be considered a case of duplicate variable declaration and MUST be reported as an error during static analysis.</p>
+<p>The <forEach> activity without a <completionCondition> completes when all of its child <scope>'s have completed. The <completionCondition> element is optionally specified to prevent some of the children from executing (in the serial case), or to force early termination of some of the children (in the parallel case).</p>
+<p>The <branches> element represents an unsigned-integer expression (see section 8.3.4. Unsigned Integer Expressions) used to define a completion condition of the "at least N out of M" form. The actual value B of the expression is calculated once, at the beginning of the <forEach> activity. It will not change as the result of the <forEach> activity's execution. At the end of execution of each directly enclosed <scope> activity, the number of completed children is compared to B, the value of the <branches> expression. If at least B children have completed, the <completionCondition> is triggered: No further children will be started, and currently running children will be terminated (see section 12.6 Termination Handlers). Note that enforcing the semantic of "exactly N out of M" in parallel <forEach> would involve a race condition, and is therefore not specified.</p>
+<p>When the completion condition B is calculated, if its value is larger than the number of directly enclosed activities M, then the standard bpel:invalidBranchCondition fault MUST be thrown. <a href="sa00075.html">SA00075</a> Both B and M may be constant expressions, and in such cases, static analysis SHOULD reject processes where it can be detected that B is greater than M.</p>
+<p>The <branches> element has an optional successfulBranchesOnly attribute with the default value of no. If the value of successfulBranchesOnly is no, all <scope>'s which have completed (successfully or unsuccessfully) MUST be counted. If successfulBranchesOnly is yes, only <scope>'s which have completed successfully MUST be counted.</p>
+<p>The <completionCondition> is evaluated each time a directly enclosed <scope> activity completes. If the <completionCondition> evaluates to true, the <forEach> activity completes:</p>
+<ul>
+<li>
+<p>When the <completionCondition> is fulfilled for a parallel <forEach> activity, all still running directly enclosed <scope> activities MUST be terminated (see section 12.6 Termination Handlers).</p>
+</li>
+<li>
+<p>When the <completionCondition> is fulfilled for a serial <forEach> activity, further child <scope>'s MUST NOT be instantiated, and the <forEach> activity completes.</p>
+</li>
+</ul>
+<p>If upon completion of a directly enclosed <scope> activity, it can be determined that the <completionCondition> can never be true, the standard bpel:completionConditionFailure fault MUST be thrown. </p>
+<p>When a <completionCondition> does not have any sub-elements or attributes understood by the WS-BPEL processor, it MUST be treated as if the <completionCondition> does not exist.</p>
+        </div>
+      </div>
+      
+
+      <!-- Footer -->
+      <footer class="footer">
+        <div class='row'>
+          <div class='span3'>
+            <img src="/img/asf.png" alt="Apache Software Foundation"/>
+          </div>
+          <div class='span9'>
+            <p><strong>Apache ODE</strong><sup>&trade;</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>&trade;</sup></a>,
+            having graduated from the ASF Incubator in July 2007. Through a collaborative and meritocratic development process, Apache
+            projects deliver enterprise-grade, freely available software products that
+            attract large communities of users.</p>
+            <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
+          </div>
+        </div>
+      </footer>
+    </div> <!-- /container -->
+    <script src="http://code.jquery.com/jquery-latest.js"></script>
+    <script src="/js/bootstrap.min.js"></script>
+    <script type="text/javascript">
+    var _gaq = _gaq || [];
+    _gaq.push(['_setAccount', 'UA-36293077-1']);
+    _gaq.push(['_trackPageview']);
+
+    (function() {
+      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+    })();
+
+  </script>
+  </body>
+</html>
\ No newline at end of file

Added: websites/staging/ode/trunk/content/extensions/process-contexts.html
==============================================================================
--- websites/staging/ode/trunk/content/extensions/process-contexts.html (added)
+++ websites/staging/ode/trunk/content/extensions/process-contexts.html Fri Dec 28 13:13:46 2012
@@ -0,0 +1,330 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Process Contexts</title>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" />
+
+    <link href="/css/application.min.css" rel="stylesheet" media="screen">
+    
+
+    
+    
+  </head>
+  <body>
+
+    <!-- Navbar -->
+    <div class="navbar navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="brand" href="/index.html">Apache ODE</a>
+          <div class="nav-collapse collapse">
+            <ul class="nav">
+              <li class="">
+                <a href="/getting-ode.html">Getting ODE</a>
+              </li>
+              <li class=" dropdown">
+                <a href="/user-guide.html" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/userguide/">User Guide</a></li>
+                  <li><a href="/developerguide/">Developer Guide</a></li>
+                  <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li>
+                  <li><a href="/extensions/">WS-BPEL Extensions</a></li>
+                  <li><a href="/faq.html">FAQ</a></li>
+                  <li><a href="/roadmap.html">Roadmap</a></li>
+                  <li><a href="/resource-services.html">Resources &amp; Services</a></li>
+                  <li><a href="/javadoc/">Javadoc</a></li>
+                </ul>
+              </li>
+              <li class=" dropdown">
+                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/mailing-lists.html">Mailing Lists</a></li>
+                  <li><a href="/building-ode.html">Building ODE</a></li>
+                  <li><a href="/source-code.html">Source Code</a></li>
+                  <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li>
+                  <li><a href="/contributors.html">Contributors</a></li>
+                  <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+                </ul>
+              </li>
+              <li class="dropdown">
+                <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+                  <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                  <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+                  <li><a href="http://www.apache.org/security/">Security</a></li>
+                </ul>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- Subhead -->
+    
+    <header class="jumbotron subhead" id="overview">
+      <div class="container">
+        
+        <h1>Process Contexts</h1>
+        
+      </div>
+    </header>
+    
+
+    <!-- Content -->
+    <div class="container">
+      
+      <div class="row">
+        <div class="span12">
+          <p><a name="ProcessContexts-ProcessContexts"></a></p>
+<h2 id="process-contexts">Process Contexts</h2>
+<div class="alert alert-warning">
+    This feature is implemented in Apache ODE 2.0 only.
+</div>
+
+<p><a name="ProcessContexts-Abstract"></a></p>
+<h3 id="abstract">Abstract</h3>
+<p>To allow the circulation of transport metadata from messages to processes and then from processes to messages, we want to add support for different levels of contextual data to our process engine. The main use cases are:</p>
+<ul>
+<li>Conversation ids, such as those of the Stateful Exchange Protocol and WS-Context</li>
+<li>Tracing ids, mostly with ServiceMix.</li>
+<li>Credentials (such as tokens) for authentication and authorization</li>
+<li>Eventually some WS-RM related context.</li>
+</ul>
+<p><a name="ProcessContexts-Architecture"></a></p>
+<h3 id="architecture">Architecture</h3>
+<p>The aim of this proposal is to make transport metadata accessible within BPEL processes and allow modelers and deployers to define which metadata should be propagated between process and partners. Therefore, we model such metadata in terms of contexts. <em>Contexts</em> are modeled as a bag of metadata information represented as key-value pairs and are attached to partner links. A partner link may maintain multiple contexts; each of them is identifiable by a name attribute to distinguish context used for different purposes (e.g. security context vs. tracing context).
+Whenever a message arrives through ODE's integration layer, the message is passed through a defined set of <em>context interceptors</em>. These interceptors are in charge to extract relevant transport metadata from messages, prepare the data and store it in terms of key-value pairs into a named context associated to the partner link from which the message came from. The context data is persistently stored in the runtime database.
+For outgoing messages, <invoke> activities can be configured to take context data from a (different) partner link, pass it again through a <em>context interceptor</em> which translates the data back to transport-specific metadata. Such propagation configuration can be defined per invoke activity in the process model or on a global level in the deployment descriptor.
+Context data can be assigned to variables. Therefore, the context data is translated into XML data, following a predefined schema. It is possible to define which contexts of a partner link are copied to a variable. Similarly, context data can be copied from a variable back into the context of a certain partner link.
+Contexts can be used to classify or tag process instances and it is useful to make this information accessible for process management tools. Hence, this specification extends the process management API to make context data queryable and accessible.</p>
+<p><a name="ProcessContexts-{anchor:contexts}Contexts"></a></p>
+<h3 id="anchorcontextscontexts">{anchor:contexts}Contexts</h3>
+<p>Contexts are modeled as a bag of metadata information represented as key-value pairs <code>(string, string)</code> and are attached to partner links. Contexts have a name attribute. Contexts are persisted in ODE's runtime database. Long values are stored as a CLOB whereas shorter values (&lt; 250 characters) are automatically stored in an indexed VARCHAR field.</p>
+<p>Since contexts should also be accessible in BPEL, there is also an XML-based representation. It is defined as follows, the according XMLSchema can be found <a href="http://svn.apache.org/viewvc/ode/trunk/bpel-schemas/src/main/xsd/contexts.xsd?view=markup">here</a></p>
+<p><DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>"Example: Context data in its XML representation"</B></DIV><DIV class="codeContent panelContent">
+    &lt;?xml version="1.0" encoding="UTF-8"?&gt;
+    <ctx:contexts xmlns:ctx="http://www.apache.org/ode/schemas/context/2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.apache.org/ode/schemas/context/2009 contexts.xsd ">
+      <ctx:context name="foo">
+        <ctx:value key="bar">baz</ctx:value>
+      </ctx:context>
+      <ctx:context name="tracing">
+        <ctx:value key="id">0815</ctx:value>
+      </ctx:context>
+    </ctx:contexts></p>
+<p><a name="ProcessContexts-ContextInterceptors"></a></p>
+<h3 id="context-interceptors">Context Interceptors</h3>
+<p>At the transport level, message headers can be translated to context data and contexts can be translated to message headers. Context interceptors define how the headers are set to/from contexts and which contexts are affected. Interceptors are Java classes that implement the following interface. They can be registered either globally in ode's property configuration file or per process in the <code>deploy.xml</code>.</p>
+<div class="codehilite"><pre><span class="o">/**</span>
+ <span class="o">*</span> <span class="n">Context</span> <span class="n">Interceptors</span> <span class="n">can</span> <span class="nb">map</span> <span class="n">message</span> <span class="n">headers</span> <span class="p">(</span><span class="ow">or</span> <span class="n">even</span> <span class="n">payload</span><span class="p">)</span> <span class="n">to</span>
+ <span class="o">*</span> <span class="n">context</span> <span class="n">information</span> <span class="n">that</span> <span class="n">is</span> <span class="n">attached</span> <span class="n">to</span> <span class="n">process</span> <span class="n">models</span><span class="o">.</span>
+ <span class="o">*/</span>
+<span class="n">public</span> <span class="n">interface</span> <span class="n">ContextInterceptor</span> <span class="p">{</span>
+
+    <span class="o">/**</span>
+     <span class="o">*</span> <span class="n">Configures</span> <span class="n">the</span> <span class="n">interceptor</span><span class="o">.</span> <span class="n">This</span> <span class="n">method</span> <span class="n">will</span> <span class="n">be</span> <span class="n">called</span> <span class="n">immediatedly</span> <span class="n">after</span>
+     <span class="o">*</span> <span class="n">instantiation</span> <span class="n">of</span> <span class="n">the</span> <span class="n">implementing</span> <span class="n">class</span><span class="o">.</span> <span class="n">The</span> <span class="n">passed</span> <span class="n">element</span> <span class="n">will</span> <span class="n">contain</span> <span class="n">the</span>
+     <span class="o">*</span> <span class="n">configuration</span> <span class="n">elements</span> <span class="n">given</span> <span class="n">in</span> <span class="n">the</span> <span class="n">deploy</span><span class="o">.</span><span class="n">xml</span><span class="o">.</span> <span class="n">In</span> <span class="k">case</span> <span class="n">of</span> <span class="n">a</span> <span class="n">declaration</span> <span class="n">in</span>
+     <span class="o">*</span> <span class="n">ode</span><span class="o">-</span><span class="n">xxx</span><span class="o">.</span><span class="n">properties</span><span class="p">,</span> <span class="n">the</span> <span class="n">method</span> <span class="n">won</span><span class="err">&#39;</span><span class="n">t</span> <span class="n">be</span> <span class="n">called</span><span class="o">.</span>
+     <span class="o">*</span>
+     <span class="o">*</span> <span class="nv">@param</span> <span class="n">configuration</span>
+     <span class="o">*/</span>
+    <span class="n">void</span> <span class="n">configure</span><span class="p">(</span><span class="n">Element</span> <span class="n">configuration</span><span class="p">);</span>
+
+    <span class="o">/**</span>
+     <span class="o">*</span> <span class="n">Translates</span> <span class="n">the</span> <span class="n">data</span> <span class="n">stored</span> <span class="n">within</span> <span class="n">the</span> <span class="n">context</span> <span class="n">object</span> <span class="n">into</span> <span class="n">SOAP</span> <span class="n">headers</span> <span class="ow">or</span>
+     <span class="o">*</span> <span class="n">vice</span> <span class="n">versa</span><span class="o">.</span>
+     <span class="o">*</span>
+     <span class="o">*</span> <span class="n">If</span> <span class="n">direction</span> <span class="n">is</span> <span class="n">OUTBOUND</span><span class="p">,</span> <span class="n">context</span> <span class="n">data</span> <span class="n">must</span> <span class="n">be</span> <span class="n">converted</span> <span class="n">into</span> <span class="n">message</span> <span class="n">headers</span>
+     <span class="o">*</span> <span class="k">if</span> <span class="n">direction</span> <span class="n">is</span> <span class="n">INBOUND</span><span class="p">,</span> <span class="n">context</span> <span class="n">data</span> <span class="n">must</span> <span class="n">be</span> <span class="n">extracted</span> <span class="n">from</span> <span class="n">the</span> <span class="n">message</span><span class="o">.</span>
+     <span class="o">*/</span>
+    <span class="n">void</span> <span class="n">process</span><span class="p">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">MessageExchangeDAO</span> <span class="n">mexdao</span><span class="p">,</span> <span class="n">IOContext</span><span class="o">.</span><span class="n">Direction</span> <span class="n">dir</span><span class="p">)</span> <span class="n">throws</span> <span class="n">ContextException</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>There is also a more high-level interface defined in terms of an abstract class:</p>
+<div class="codehilite"><pre><span class="n">public</span> <span class="n">abstract</span> <span class="n">class</span> <span class="n">AbstractContextInterceptor</span> <span class="n">implements</span> <span class="n">ContextInterceptor</span> <span class="p">{</span>
+
+    <span class="n">public</span> <span class="n">abstract</span> <span class="n">void</span> <span class="n">configure</span><span class="p">(</span><span class="n">Element</span> <span class="n">configuration</span><span class="p">);</span>
+
+    <span class="o">/**</span>
+     <span class="o">*</span> <span class="nv">@see</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">ode</span><span class="o">.</span><span class="n">bpel</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">ContextInterceptor</span><span class="c1">#process(org.apache.ode.bpel.rapi.ContextData, org.apache.ode.bpel.dao.MessageExchangeDAO, org.apache.ode.bpel.rapi.IOContext.Direction)</span>
+     <span class="o">*/</span>
+    <span class="n">public</span> <span class="n">void</span> <span class="n">process</span><span class="p">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">MessageExchangeDAO</span> <span class="n">mexdao</span><span class="p">,</span> <span class="n">IOContext</span><span class="o">.</span><span class="n">Direction</span> <span class="n">dir</span><span class="p">)</span> <span class="n">throws</span> <span class="n">ContextException</span> <span class="p">{</span>
+        <span class="sr">//</span> <span class="n">dispatch</span>
+    <span class="p">}</span>
+
+    <span class="n">abstract</span> <span class="n">void</span> <span class="n">onPartnerInvoke</span><span class="p">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">Message</span> <span class="n">msg</span><span class="p">);</span>
+    <span class="n">abstract</span> <span class="n">void</span> <span class="n">onPartnerReply</span><span class="p">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">Message</span> <span class="n">msg</span><span class="p">);</span>
+    <span class="n">abstract</span> <span class="n">void</span> <span class="n">onProcessInvoke</span><span class="p">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">Message</span> <span class="n">msg</span><span class="p">);</span>
+    <span class="n">abstract</span> <span class="n">void</span> <span class="n">onProcessReply</span><span class="p">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">Message</span> <span class="n">msg</span><span class="p">);</span>
+
+<span class="p">}</span>
+</pre></div>
+
+
+<p><a name="ProcessContexts-WorkingwithContextsinBPEL"></a></p>
+<h3 id="working-with-contexts-in-bpel">Working with Contexts in BPEL</h3>
+<p><a name="ProcessContexts-DeclaringContextInterceptors"></a></p>
+<h4 id="declaring-context-interceptors">Declaring Context Interceptors</h4>
+<p>In order to use context interceptors, their implementation must be registered with ODE. There are two options to do this:
+<em> Engine-wide registration - the context interceptor will be available for all processes that are deployed to this ODE instance.
+</em> Per-process registration - the context interceptor will only be available for a particular process model.</p>
+<p>Engine-wide context interceptors are registered in ODE's properties file (either <code>ode-axis2.properties</code> or <code>ode-jbi.properties</code>) using the properties key <code>context.interceptors</code>.</p>
+<p><DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>ode-axis2.properties</B></DIV><DIV class="codeContent panelContent">
+    ...
+    ode-axis2.context.interceptors = my.full.qualified.context.interceptor.class.name
+    ...</p>
+<p><DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>ode-jbi.properties</B></DIV><DIV class="codeContent panelContent">
+    ...
+    ode-jbi.context.interceptors = my.full.qualified.context.interceptor.class.name
+    ...</p>
+<p>Per-process context interceptors are declared in ODE's deployment descriptor deploy.xml:</p>
+<p><DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>deploy.xml</B></DIV><DIV class="codeContent panelContent">
+    <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"></p>
+<div class="codehilite"><pre>    <span class="nt">&lt;process</span> <span class="na">name=</span><span class="s">&quot;pns:HelloWorld2&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;active&gt;</span>true<span class="nt">&lt;/active&gt;</span>
+        <span class="nt">&lt;provide</span> <span class="na">partnerLink=</span><span class="s">&quot;helloPartnerLink&quot;</span><span class="nt">&gt;</span>
+            <span class="nt">&lt;service</span> <span class="na">name=</span><span class="s">&quot;wns:HelloService&quot;</span> <span class="na">port=</span><span class="s">&quot;HelloPort&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;/provide&gt;</span>
+        <span class="nt">&lt;context&gt;</span>
+            <span class="nt">&lt;propagate</span> <span class="na">from=</span><span class="s">&quot;helloPartnerLink&quot;</span> <span class="na">to=</span><span class="s">&quot;helloPartnerLink2&quot;</span> <span class="na">context=</span><span class="s">&quot;*&quot;</span><span class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor&gt;</span>
+                <span class="nt">&lt;class-name&gt;</span>org.apache.ode.bpel.context.TestInterceptor<span class="nt">&lt;/class-name&gt;</span>
+                <span class="nt">&lt;config&gt;</span>
+                    <span class="nt">&lt;myparam1&gt;</span>x<span class="nt">&lt;/myparam1&gt;</span>
+                    <span class="nt">&lt;myparam2&gt;</span>y<span class="nt">&lt;/myparam2&gt;</span>
+                <span class="nt">&lt;/config&gt;</span>
+            <span class="nt">&lt;/interceptor&gt;</span>
+        <span class="nt">&lt;/context&gt;</span>
+    <span class="nt">&lt;/process&gt;</span>
+<span class="nt">&lt;/deploy&gt;</span>
+</pre></div>
+
+
+<p>The context-specific configuration takes place in the <code>&lt;context&gt;</code> element.  The <code>&lt;interceptor&gt;</code> element is used to declare and register context interceptor implementations. The <code>&lt;class-name&gt;</code> element takes the full qualified class name of the context interceptor implementation (which must implement the <code>ContextInterceptor</code> interface). The content of the <code>&lt;config&gt;</code> element will be passed to configure method of the interceptor, immediately after instantiation.</p>
+<p>Static propagation rules can be configured directly in the <code>deploy.xml</code>. Using the <code>&lt;propagate&gt;</code> element, ODE can be configured to propagate all contexts named in the <code>context</code> attribute (space-separated list) from a certain partner link to another partner link. To propagate all contexts the <code>context</code> attribute should be set to <code>\*</code>. These rules are automatically evaluated when an invoke activity is being executed. Before a BPEL process instance invokes an operation of a certain partner link, the propagation logic performs a look-up for propagation rules that have that partner link referenced by their <code>to</code> attribute. Subsequently the specified contexts are retrieved from the partner link specified by the <code>from</code> attribute of the rule, passed to the context interceptor that translates the context data into transport meta data, which is then added to the outgoing message.</p>
+<p><a name="ProcessContexts-CustomizeContextPropagationintheProcessModel"></a></p>
+<h4 id="customize-context-propagation-in-the-process-model">Customize Context Propagation in the Process Model</h4>
+<p>In addition to static propagation rules, context propagation can be explicitly configured for outbound interaction activities (i.e. <code>&lt;invoke&gt;</code> and <code>&lt;reply&gt;</code>. Therefore, we introduce a new BPEL extension element <code>&lt;ctx:propagate&gt;</code> in the <code>[http://ode.apache.org/contextPropagation](http://ode.apache.org/contextPropagation)</code> namespace (to which the <code>ctx</code>-prefix is bound to), following the syntax as described below:</p>
+<div class="codehilite"><pre><span class="nt">&lt;bpel:invoke</span> <span class="err">...</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;ctx:propagate</span> <span class="na">ctx:fromPartnerLink=</span><span class="s">&quot;testPartnerLink&quot;</span> <span class="na">ctx:context=</span><span class="s">&quot;*&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/bpel:invoke&gt;</span>
+
+<span class="nt">&lt;bpel:reply</span> <span class="err">...</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;ctx:propagate</span> <span class="na">ctx:fromPartnerLink=</span><span class="s">&quot;testPartnerLink&quot;</span> <span class="na">ctx:context=</span><span class="s">&quot;*&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/bpel:reply&gt;</span>
+</pre></div>
+
+
+<ul>
+<li><code>ctx:fromPartnerLink</code> identifies the partner link the context data should be retrieved from.</li>
+<li><code>ctx:context</code> identifies which contexts should be propagates. This is a space-separated list of context names. <code>\*</code> serves as a wild card to copy all contexts.</li>
+</ul>
+<p>The context data identified by this propagation rule will be passed to all registered context interceptors which enhance the outgoing message accordingly.</p>
+<div class="alert alert-info">
+    All partner link references are resolved by the interaction activity, i.e. only partner links can be referenced that are visible to the respective activity.
+</div>
+
+<p><a name="ProcessContexts-AccessingandAssigningContextData"></a></p>
+<h4 id="accessing-and-assigning-context-data">Accessing and Assigning Context Data</h4>
+<p>Context data should be accessible within BPEL processes and from the outside, e.g. for management purposes. For the former, the <code>&lt;assign&gt;</code> activity has been extended to support copying data from and to contexts of a partner link. The according <code>from</code>/<code>to</code> specs are defined as follows:</p>
+<p><DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>"from/to specs for the work with context data"</B></DIV><DIV class="codeContent panelContent">
+    <assign>
+        <!-- copy 'tracing' and 'security' contexts to a variable. -->
+        <copy>
+            <from partnerLink="pl1" context="tracing security"/>
+            <to>$var</to>
+        </copy></p>
+<div class="codehilite"><pre>    <span class="c">&lt;!-- copy context data from </span><span class="p">$</span><span class="nv">var</span><span class="c"> to pl1. Only &#39;tracing&#39; and &#39;security&#39; contexts will be written, other contexts remain unchanged. --&gt;</span>
+    <span class="nt">&lt;copy&gt;</span>
+        <span class="nt">&lt;from&gt;</span><span class="p">$</span><span class="nv">var</span><span class="nt">&lt;/from&gt;</span>
+        <span class="nt">&lt;to</span> <span class="na">partnerLink=</span><span class="s">&quot;pl1&quot;</span> <span class="na">context=</span><span class="s">&quot;tracing security&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;/copy&gt;</span>
+
+    <span class="c">&lt;!-- copy &#39;tracing&#39; and &#39;security&#39; contexts from pl1 to pl2. Pre-existing contexts in pl2 will be purged (*). --&gt;</span>
+    <span class="nt">&lt;copy&gt;</span>
+        <span class="nt">&lt;from</span> <span class="na">partnerLink=</span><span class="s">&quot;pl1&quot;</span> <span class="na">context=</span><span class="s">&quot;tracing security&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;to</span> <span class="na">partnerLink=</span><span class="s">&quot;pl2&quot;</span> <span class="na">context=</span><span class="s">&quot;*&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;/copy&gt;</span>
+
+    <span class="c">&lt;!-- copy &#39;tracing&#39; and &#39;security&#39; contexts from pl1 to pl2. Pre-existing contexts in pl2 will be merged (+). --&gt;</span>
+    <span class="nt">&lt;copy&gt;</span>
+        <span class="nt">&lt;from</span> <span class="na">partnerLink=</span><span class="s">&quot;pl1&quot;</span> <span class="na">context=</span><span class="s">&quot;tracing security&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;to</span> <span class="na">partnerLink=</span><span class="s">&quot;pl2&quot;</span> <span class="na">context=</span><span class="s">&quot;+&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;/copy&gt;</span>
+
+    <span class="c">&lt;!-- copy all contexts from pl1 to pl2. Pre-existing contexts in pl2 will be merged (+). --&gt;</span>
+    <span class="nt">&lt;copy&gt;</span>
+        <span class="nt">&lt;from</span> <span class="na">partnerLink=</span><span class="s">&quot;pl1&quot;</span> <span class="na">context=</span><span class="s">&quot;*&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;to</span> <span class="na">partnerLink=</span><span class="s">&quot;pl2&quot;</span> <span class="na">context=</span><span class="s">&quot;+&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;/copy&gt;</span>
+
+<span class="nt">&lt;/assign&gt;</span>
+</pre></div>
+
+
+<div class="alert alert-info">
+    - `context="*"` in `from`\-specs selects all contexts.
+    - `context="*"` in `to`\-specs replaces existing contexts with context data selected by the `from`\-spec.
+    - `context="+"` in `to`\-specs merges existing contexts with context data selected by the `from`\-spec.
+</div>
+
+<p>When assigning context data to variables, the variable should be declared to be an instance of the context XSD (see <a href="#contexts.html">Contexts section</a>). It is also possible to copy only fragments of a context data set by applying an XPath query to the <code>from</code>-spec:</p>
+<p><DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>"Applying XPath-query to context data"</B></DIV><DIV class="codeContent panelContent">
+    <assign>
+        <!-- copy tracing id to a string variable. -->
+        <copy>
+            <from partnerLink="pl1" context="*">
+                <query>/ctx:contexts/ctx:context[@name='tracing']/ctx:value[@key='id']</query>
+            </from>
+            <to>$tracingId</to>
+        </copy>
+    </assign></p>
+<p>In order to make context data accessible for external management tools, the ProcessManagement-API has been extended. TODO: to be completed.</p>
+        </div>
+      </div>
+      
+
+      <!-- Footer -->
+      <footer class="footer">
+        <div class='row'>
+          <div class='span3'>
+            <img src="/img/asf.png" alt="Apache Software Foundation"/>
+          </div>
+          <div class='span9'>
+            <p><strong>Apache ODE</strong><sup>&trade;</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>&trade;</sup></a>,
+            having graduated from the ASF Incubator in July 2007. Through a collaborative and meritocratic development process, Apache
+            projects deliver enterprise-grade, freely available software products that
+            attract large communities of users.</p>
+            <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
+          </div>
+        </div>
+      </footer>
+    </div> <!-- /container -->
+    <script src="http://code.jquery.com/jquery-latest.js"></script>
+    <script src="/js/bootstrap.min.js"></script>
+    <script type="text/javascript">
+    var _gaq = _gaq || [];
+    _gaq.push(['_setAccount', 'UA-36293077-1']);
+    _gaq.push(['_trackPageview']);
+
+    (function() {
+      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+    })();
+
+  </script>
+  </body>
+</html>
\ No newline at end of file

Added: websites/staging/ode/trunk/content/extensions/restful-bpel-part-i.html
==============================================================================
--- websites/staging/ode/trunk/content/extensions/restful-bpel-part-i.html (added)
+++ websites/staging/ode/trunk/content/extensions/restful-bpel-part-i.html Fri Dec 28 13:13:46 2012
@@ -0,0 +1,151 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>RESTful BPEL, Part I</title>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" />
+
+    <link href="/css/application.min.css" rel="stylesheet" media="screen">
+    
+
+    
+    
+  </head>
+  <body>
+
+    <!-- Navbar -->
+    <div class="navbar navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="brand" href="/index.html">Apache ODE</a>
+          <div class="nav-collapse collapse">
+            <ul class="nav">
+              <li class="">
+                <a href="/getting-ode.html">Getting ODE</a>
+              </li>
+              <li class=" dropdown">
+                <a href="/user-guide.html" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/userguide/">User Guide</a></li>
+                  <li><a href="/developerguide/">Developer Guide</a></li>
+                  <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li>
+                  <li><a href="/extensions/">WS-BPEL Extensions</a></li>
+                  <li><a href="/faq.html">FAQ</a></li>
+                  <li><a href="/roadmap.html">Roadmap</a></li>
+                  <li><a href="/resource-services.html">Resources &amp; Services</a></li>
+                  <li><a href="/javadoc/">Javadoc</a></li>
+                </ul>
+              </li>
+              <li class=" dropdown">
+                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/mailing-lists.html">Mailing Lists</a></li>
+                  <li><a href="/building-ode.html">Building ODE</a></li>
+                  <li><a href="/source-code.html">Source Code</a></li>
+                  <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li>
+                  <li><a href="/contributors.html">Contributors</a></li>
+                  <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+                </ul>
+              </li>
+              <li class="dropdown">
+                <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+                  <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                  <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+                  <li><a href="http://www.apache.org/security/">Security</a></li>
+                </ul>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- Subhead -->
+    
+    <header class="jumbotron subhead" id="overview">
+      <div class="container">
+        
+        <h1>RESTful BPEL, Part I</h1>
+        
+      </div>
+    </header>
+    
+
+    <!-- Content -->
+    <div class="container">
+      
+      <div class="row">
+        <div class="span12">
+          <div class="alert alert-warning">
+    This feature is not yet implemented in ODE.  This is a proposal and is subject to change based on feedback, implementation experience, etc.
+</div>
+
+<p><a name="RESTfulBPEL,PartI-Invoke"></a></p>
+<h3 id="invoke">Invoke</h3>
+<p>The RESTfulvariant of the invoke activity replaces the attributes partnerLink/operation with resource and method. The method attribute identifies the HTTP method. All HTTP methods are supported, although this spec is only concerned with GET, POST, PUT and DELETE. The resource attribute identifies a BPELvariable of a simple type (xsd:uri, xsd:string, etc) used as the URL of the actual resource. The resource element can be used instead of the resource attribute to calculate the URL using an expression.</p>
+<p>In addition to the above, the invoke activity adds a way to map values to/from HTTP headers, using a syntax similar to that for mapping message parts, but specifying the corresponding HTTP header instead. Headers mapped by the process override default values, and some headers have special handling.</p>
+<p>The implementation shields the invoke activity from some of the details of the HTTP protocol, specifically:
+<em> Requests automatically follow redirects.
+</em> The Location and Content-Location headers are expanded to absolute URLs and will only use HTTP/HTTPS URLs.
+<em> Content negotiation and compression are handled automatically.
+</em> Proxies are handled automatically.
+<em> GET, PUT and DELETE requests retried automatically for certain error conditions.
+</em> GET requests may be cached by the engine, private caching is never shared across process instances.</p>
+<p>This example uses the myPost variable to create a new blog post, store the response in the newPost variable, and the location of the new post in the variable newPostUrl:</p>
+<div class="codehilite"><pre><span class="n">invoke</span> <span class="n">resource</span><span class="o">=</span><span class="n">createPostsUrl</span> <span class="n">method</span><span class="o">=</span><span class="n">post</span>
+  <span class="n">input</span><span class="o">=</span><span class="n">myPost</span> <span class="n">output</span><span class="o">=</span><span class="n">newPost</span>
+  <span class="n">from</span> <span class="n">header</span><span class="o">=</span><span class="n">location</span> <span class="n">to</span><span class="o">=</span><span class="n">newPostUrl</span>
+</pre></div>
+
+
+<p>And to update the post:</p>
+<div class="codehilite"><pre><span class="n">invoke</span> <span class="n">resource</span><span class="o">=</span><span class="n">newPostUrl</span> <span class="n">method</span><span class="o">=</span><span class="n">put</span> <span class="n">input</span><span class="o">=</span><span class="n">updatedPost</span>
+</pre></div>
+
+
+<p><a name="RESTfulBPEL,PartI-XPathfunctions"></a></p>
+<h3 id="xpath-functions">XPath functions</h3>
+<p>The use or URLs requires the ability to combine URLs with two new XPath functions: <code>combine-url(base, relative)</code> and <code>compose-url(template, [name, value]*)</code> / <code>compose-url(template, pairs)</code>. See <a href="xpath-extensions.html#combineurl(base,relative)">xpath extensions</a> for details.</p>
+        </div>
+      </div>
+      
+
+      <!-- Footer -->
+      <footer class="footer">
+        <div class='row'>
+          <div class='span3'>
+            <img src="/img/asf.png" alt="Apache Software Foundation"/>
+          </div>
+          <div class='span9'>
+            <p><strong>Apache ODE</strong><sup>&trade;</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>&trade;</sup></a>,
+            having graduated from the ASF Incubator in July 2007. Through a collaborative and meritocratic development process, Apache
+            projects deliver enterprise-grade, freely available software products that
+            attract large communities of users.</p>
+            <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
+          </div>
+        </div>
+      </footer>
+    </div> <!-- /container -->
+    <script src="http://code.jquery.com/jquery-latest.js"></script>
+    <script src="/js/bootstrap.min.js"></script>
+    <script type="text/javascript">
+    var _gaq = _gaq || [];
+    _gaq.push(['_setAccount', 'UA-36293077-1']);
+    _gaq.push(['_trackPageview']);
+
+    (function() {
+      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+    })();
+
+  </script>
+  </body>
+</html>
\ No newline at end of file

Added: websites/staging/ode/trunk/content/extensions/restful-bpel-part-ii.html
==============================================================================
--- websites/staging/ode/trunk/content/extensions/restful-bpel-part-ii.html (added)
+++ websites/staging/ode/trunk/content/extensions/restful-bpel-part-ii.html Fri Dec 28 13:13:46 2012
@@ -0,0 +1,181 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>RESTful BPEL, Part II</title>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <meta property="og:image" content="http://ode.apache.org/img/ode-logo.png" />
+
+    <link href="/css/application.min.css" rel="stylesheet" media="screen">
+    
+
+    
+    
+  </head>
+  <body>
+
+    <!-- Navbar -->
+    <div class="navbar navbar-fixed-top">
+      <div class="navbar-inner">
+        <div class="container">
+          <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="brand" href="/index.html">Apache ODE</a>
+          <div class="nav-collapse collapse">
+            <ul class="nav">
+              <li class="">
+                <a href="/getting-ode.html">Getting ODE</a>
+              </li>
+              <li class=" dropdown">
+                <a href="/user-guide.html" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Documentation<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/userguide/">User Guide</a></li>
+                  <li><a href="/developerguide/">Developer Guide</a></li>
+                  <li><a href="/ws-bpel-20-specification-compliance.html">WS-BPEL Compliance</a></li>
+                  <li><a href="/extensions/">WS-BPEL Extensions</a></li>
+                  <li><a href="/faq.html">FAQ</a></li>
+                  <li><a href="/roadmap.html">Roadmap</a></li>
+                  <li><a href="/resource-services.html">Resources &amp; Services</a></li>
+                  <li><a href="/javadoc/">Javadoc</a></li>
+                </ul>
+              </li>
+              <li class=" dropdown">
+                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Contributing<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="/mailing-lists.html">Mailing Lists</a></li>
+                  <li><a href="/building-ode.html">Building ODE</a></li>
+                  <li><a href="/source-code.html">Source Code</a></li>
+                  <li><a href="http://issues.apache.org/jira/browse/ODE">Bug Tracking</a></li>
+                  <li><a href="/contributors.html">Contributors</a></li>
+                  <li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+                </ul>
+              </li>
+              <li class="dropdown">
+                <a href="http://www.apache.org" class="dropdown-toggle" data-toggle="dropdown" data-target="#">The ASF<b class="caret"></b></a>
+                <ul class="dropdown-menu">
+                  <li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+                  <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                  <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+                  <li><a href="http://www.apache.org/security/">Security</a></li>
+                </ul>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <!-- Subhead -->
+    
+    <header class="jumbotron subhead" id="overview">
+      <div class="container">
+        
+        <h1>RESTful BPEL, Part II</h1>
+        
+      </div>
+    </header>
+    
+
+    <!-- Content -->
+    <div class="container">
+      
+      <div class="row">
+        <div class="span12">
+          <div class="alert alert-warning">
+    This feature is not yet implemented in ODE.  This is a proposal subject to feedback, implementation experience, etc.
+</div>
+
+<p><a name="RESTfulBPEL,PartII-UseCases"></a></p>
+<h3 id="use-cases">Use Cases</h3>
+<p><em>Use case 1</em>: A client needs to process <em>foo</em>, which it does by creating a new resource which it can operate on. The client starts by making a POST request to /foos. This results in a new resource, a response with status code 201 (Created), relevant document and the Location header pointing to the URL of the new resource (/foos/123). The client can then operate on the new resource, e.g. reading its state at various points in time (GET), changing its state (PUT), or even discarding it (DELETE).</p>
+<p><em>Use case 2</em>: Continuing with use case 1, the client may need to process <em>bar</em> or <em>baz</em>, as part of the larger processing of <em>foo</em>. The client will attempt to create a new resource under /foos/123/bar or /foos/123/baz, but to do so the client must first determine the URL for either resource. This is done in a separate step, maybe in the response to the request that created /foos/123 or a subsequent operation against that resource (or in fact some other resource).</p>
+<p><em>Use case 3</em>: Continuing with use case 1, the client is able to operate on a collection of items that are part of the larger processing of <em>foo</em>. Those are exposed behind a URL like /foos/123/items/456, where 456 is the item number. The exact number of resources available depend on the number of items in that collection.</p>
+<p>To achive these use cases we need the following features:</p>
+<ol>
+<li>Ability to instantiate (create) resources that are unique to the processing unit (process, scope).</li>
+<li>Ability to map resources (URL) into the content of a variable or message.</li>
+<li>Ability to operate on nested resources, i.e. a resource defined relative to another resource.</li>
+<li>Ability to recieve messages on a resource signifying a collection and map part of the request URL into member identification.</li>
+</ol>
+<p>The above deal specifically with resources, but in addition we will also need a way to handle HTTP variables and query string parameters.  We also expect the process engine to take care of common protocol details, such as status codes, redirection, cache control, content negotiation and encoding, HEAD and OPTIONs requests, etc.</p>
+<p><a name="RESTfulBPEL,PartII-Resources"></a></p>
+<h3 id="resources">Resources</h3>
+<p>Resources are declared in a scope, and a scope may declare any number of resources. A resource declaration consists of two properties, the resource <em>name</em>, which we use to reference the resource, and a relative <em>path</em> that denotes the relationship between this resource and other resources. Once instantiated, the value of the resource is an absolute URL.</p>
+<p>The process can use resources in two ways. It can reference a resource for the purpose of receiving requests on that resource or a member of the collection denoted by the resource. It can also access the value of the resource (URL), for example, to send it as part of a message.</p>
+<p>To access the value of the resource, we treat the resource as a read-only variable with the type xsd:uri. Expressions can access the resource as they would any other variable available in the scope, but cannot modify (assign to) its value. For that reason, all resources declared in a scope must have unique name and in addition no variable and resource declared in the same scope may have the same name.</p>
+<p>A resource that specifies no path (or the empty path) will be instantiated using a URL unique to that process instance. A resource that specifies a static path will be instantiated by appending that path to the instance URL. A resource that specifies a path relative to another resource will be instantiated by appending that path to the URL of the other resource. We use the $ notation to reference another resource, so the path $foo/bar will append /bar to the URL denoted by the resource $foo.</p>
+<p><a name="RESTfulBPEL,PartII-Recievingrequests"></a></p>
+<h3 id="recieving-requests">Recieving requests</h3>
+<p>To expose themselves as resources, the receive activity and event handler introduce four new properties. The <em>method</em> property specifies the HTTP method to accept, and the semantics of each HTTP method are described below. The <em>resource</em> property references a resource declaration available in the scope.</p>
+<p>The <em>instantiateResource</em> property is true if the resource is instantiated by the receive activity or event handler, and false if the resource must be instantiated before the activity executes. This property can only be set to true when using the POST method, and is always true for the instantiating activity of the process.</p>
+<p>When instantiateResource is false, the resource is instantiated first and the activity receives requests on that URL. When instantiateResource is true, the resource value is calculated and the activity receives requests on that URL. Once received, the resource is instantiated by appending a unique identifier to that URL. For example, the receive activity listens on the URL /foos, and upon receipt instantiates the resource to the URL /foos/123. In addition, the corresponding reply activity will set the status code to 201 (Created) and set the Location header to the resource URL.</p>
+<p>The <em>resourceIdentity</em> activity names a variable that will be set to the member identity when receiving requests on behalf of a collection resource. When used in event handlers, the variable is implicitly defined in the implicit scope of the event handler and has the type xsd:string.</p>
+<p>For example, if the resource is /foos/123/bars and the resourceIdentity is set to bar, then the activity will receive requests on the URL /foos/123/bars/{bar}, and the last part of the request URL path (the member identity {bar}) is assigned to the value of the variable bar.</p>
+<p><a name="RESTfulBPEL,PartII-POST"></a></p>
+<h4 id="post">POST</h4>
+<p>The POST method has two uses, one involving the creation of a new resource, and the other involving processing of requests that do not map to any other HTTP method. The receive activity is coupled to a reply activity, and no other receive or wait is allowed to occur between the two.</p>
+<p>When using the POST method to create a new resource, including in the instantiating activity of the process, the instantiateResource property is set to true, and the resource is instantiated by the activity. The reply activity uses the status code 201 (Created).</p>
+<p>When using the POST method to process requests, the instantiate property is set to false. The reply activity sets the status code to 200 (OK), or if there is no document entity, to 204 (No Content).</p>
+<p><a name="RESTfulBPEL,PartII-GET/HEAD"></a></p>
+<h4 id="gethead">GET/HEAD</h4>
+<p>The GET method has on side effects. To preserve this constraint only event handlers are allowed to use the GET method, and the event handler may only contain the reply activity. In addition, the event handler can only assign to variables declared in the implicit scope of the event handler, and faults occurring in the event handler are not propagated to the enclosing scope.</p>
+<p>The process engine uses cache control to optimize the GET method by handling conditional GETs and setting the Last-Modified/ETag headers. These are set to detect any change in the state of the process instance (which excludes responding to a GET request).</p>
+<p>The HEAD method is handled using receives for the GET method, without constructing a document entity in the response.</p>
+<p><a name="RESTfulBPEL,PartII-PUT"></a></p>
+<h4 id="put">PUT</h4>
+<p>The PUT method is used to modify state. To be used successfully in combination with GET, the process engine supports conditional PUTs and returns 412 (Precondition Failed) if it detects a change in the process state since the corresponding GET.</p>
+<p>The receive activity is coupled to a reply activity, and no other receive or wait is allowed to occur between the two. The reply activity sets the status code to 200 (OK), or if there is no document entity, to 204 (No Content).</p>
+<p><a name="RESTfulBPEL,PartII-DELETE*"></a></p>
+<h4 id="delete">DELETE*</h4>
+<p>The DELETE method does not have a corresponding reply activity and returns the status code 200 (OK).</p>
+<p><a name="RESTfulBPEL,PartII-OPTIONS"></a></p>
+<h4 id="options">OPTIONS</h4>
+<p>The OPTIONS method is handled by the process engine.</p>
+<p><a name="RESTfulBPEL,PartII-Additional"></a></p>
+<h3 id="additional">Additional</h3>
+<p>Since all incoming requests must disambiguate a receive activity, no two receive activities can be outstanding on the same URL using the same method. This behavior is defined in term of URLs not resources, since it is possible for two resources to denote the same URL. It is also possible for the same resource to be used, once with the resourceIdentity property and once without, since those map two distinct URLs (/foos/something vs /foos).</p>
+<p>The reply activity is matched to the corresponding receive activity based on the resource name.</p>
+<p>Both receive and reply activities have access to an implicit message part called bodythat contains the internal representation of the document entity. Receive activities have access to an implicit message part called params, instantiated from the query string parameters. The XML representation of this part consists of the element Parameters, which maps query string parameters as follows:</p>
+<ul>
+<li>foo -- Maps to the element foo.</li>
+<li>foo[bar](bar.html) -- Maps to the element bar contained in the parent element foo.</li>
+<li>foo[](.html) -- Each value is mapped to an element called foo in the parent element foos.</li>
+</ul>
+        </div>
+      </div>
+      
+
+      <!-- Footer -->
+      <footer class="footer">
+        <div class='row'>
+          <div class='span3'>
+            <img src="/img/asf.png" alt="Apache Software Foundation"/>
+          </div>
+          <div class='span9'>
+            <p><strong>Apache ODE</strong><sup>&trade;</sup> is a top-level project at the <a href="http://www.apache.org">Apache Software Foundation<sup>&trade;</sup></a>,
+            having graduated from the ASF Incubator in July 2007. Through a collaborative and meritocratic development process, Apache
+            projects deliver enterprise-grade, freely available software products that
+            attract large communities of users.</p>
+            <p>Apache ODE, ODE, Apache, the Apache feather logo, and the Apache ODE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
+          </div>
+        </div>
+      </footer>
+    </div> <!-- /container -->
+    <script src="http://code.jquery.com/jquery-latest.js"></script>
+    <script src="/js/bootstrap.min.js"></script>
+    <script type="text/javascript">
+    var _gaq = _gaq || [];
+    _gaq.push(['_setAccount', 'UA-36293077-1']);
+    _gaq.push(['_trackPageview']);
+
+    (function() {
+      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+    })();
+
+  </script>
+  </body>
+</html>
\ No newline at end of file