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/31 11:53:52 UTC

svn commit: r844386 - in /websites/staging/ode/trunk/content: ./ extensions/process-contexts.html

Author: buildbot
Date: Mon Dec 31 10:53:51 2012
New Revision: 844386

Log:
Staging update by buildbot for ode

Modified:
    websites/staging/ode/trunk/content/   (props changed)
    websites/staging/ode/trunk/content/extensions/process-contexts.html

Propchange: websites/staging/ode/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Dec 31 10:53:51 2012
@@ -1 +1 @@
-1427075
+1427078

Modified: websites/staging/ode/trunk/content/extensions/process-contexts.html
==============================================================================
--- websites/staging/ode/trunk/content/extensions/process-contexts.html (original)
+++ websites/staging/ode/trunk/content/extensions/process-contexts.html Mon Dec 31 10:53:51 2012
@@ -28,7 +28,7 @@
               <li class="">
                 <a href="/getting-ode.html">Getting ODE</a>
               </li>
-              <li class=" dropdown">
+              <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>
@@ -109,65 +109,69 @@ Contexts can be used to classify or tag 
 <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>
+<div class="caption">"Example: Context data in its XML representation"</div>
+
+<div class="codehilite"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
+<span class="nt">&lt;ctx:contexts</span> <span class="na">xmlns:ctx=</span><span class="s">&quot;http://www.apache.org/ode/schemas/context/2009&quot;</span> <span class="na">xmlns:xsi=</span><span class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span> <span class="na">xsi:schemaLocation=</span><span class="s">&quot;http://www.apache.org/ode/schemas/context/2009 contexts.xsd &quot;</span><span class="nt">&gt;</span>
+  <span class="nt">&lt;ctx:context</span> <span class="na">name=</span><span class="s">&quot;foo&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;ctx:value</span> <span class="na">key=</span><span class="s">&quot;bar&quot;</span><span class="nt">&gt;</span>baz<span class="nt">&lt;/ctx:value&gt;</span>
+  <span class="nt">&lt;/ctx:context&gt;</span>
+  <span class="nt">&lt;ctx:context</span> <span class="na">name=</span><span class="s">&quot;tracing&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;ctx:value</span> <span class="na">key=</span><span class="s">&quot;id&quot;</span><span class="nt">&gt;</span>0815<span class="nt">&lt;/ctx:value&gt;</span>
+  <span class="nt">&lt;/ctx:context&gt;</span>
+<span class="nt">&lt;/ctx:contexts&gt;</span>
+</pre></div>
+
+
 <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>
+<div class="codehilite"><pre><span class="cm">/**</span>
+<span class="cm"> * Context Interceptors can map message headers (or even payload) to</span>
+<span class="cm"> * context information that is attached to process models.</span>
+<span class="cm"> */</span>
+<span class="kd">public</span> <span class="kd">interface</span> <span class="nc">ContextInterceptor</span> <span class="o">{</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * Configures the interceptor. This method will be called immediatedly after</span>
+<span class="cm">     * instantiation of the implementing class. The passed element will contain the</span>
+<span class="cm">     * configuration elements given in the deploy.xml. In case of a declaration in</span>
+<span class="cm">     * ode-xxx.properties, the method won&#39;t be called.</span>
+<span class="cm">     *</span>
+<span class="cm">     * @param configuration</span>
+<span class="cm">     */</span>
+    <span class="kt">void</span> <span class="nf">configure</span><span class="o">(</span><span class="n">Element</span> <span class="n">configuration</span><span class="o">);</span>
+
+    <span class="cm">/**</span>
+<span class="cm">     * Translates the data stored within the context object into SOAP headers or</span>
+<span class="cm">     * vice versa.</span>
+<span class="cm">     *</span>
+<span class="cm">     * If direction is OUTBOUND, context data must be converted into message headers</span>
+<span class="cm">     * if direction is INBOUND, context data must be extracted from the message.</span>
+<span class="cm">     */</span>
+    <span class="kt">void</span> <span class="nf">process</span><span class="o">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="o">,</span> <span class="n">MessageExchangeDAO</span> <span class="n">mexdao</span><span class="o">,</span> <span class="n">IOContext</span><span class="o">.</span><span class="na">Direction</span> <span class="n">dir</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">ContextException</span><span class="o">;</span>
+<span class="o">}</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>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">abstract</span> <span class="kd">class</span> <span class="nc">AbstractContextInterceptor</span> <span class="kd">implements</span> <span class="n">ContextInterceptor</span> <span class="o">{</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="kd">public</span> <span class="kd">abstract</span> <span class="kt">void</span> <span class="nf">configure</span><span class="o">(</span><span class="n">Element</span> <span class="n">configuration</span><span class="o">);</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="cm">/**</span>
+<span class="cm">     * @see org.apache.ode.bpel.context.ContextInterceptor#process(org.apache.ode.bpel.rapi.ContextData, org.apache.ode.bpel.dao.MessageExchangeDAO, org.apache.ode.bpel.rapi.IOContext.Direction)</span>
+<span class="cm">     */</span>
+    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">process</span><span class="o">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="o">,</span> <span class="n">MessageExchangeDAO</span> <span class="n">mexdao</span><span class="o">,</span> <span class="n">IOContext</span><span class="o">.</span><span class="na">Direction</span> <span class="n">dir</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">ContextException</span> <span class="o">{</span>
+        <span class="c1">// dispatch</span>
+    <span class="o">}</span>
+
+    <span class="kd">abstract</span> <span class="kt">void</span> <span class="nf">onPartnerInvoke</span><span class="o">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="o">,</span> <span class="n">Message</span> <span class="n">msg</span><span class="o">);</span>
+    <span class="kd">abstract</span> <span class="kt">void</span> <span class="nf">onPartnerReply</span><span class="o">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="o">,</span> <span class="n">Message</span> <span class="n">msg</span><span class="o">);</span>
+    <span class="kd">abstract</span> <span class="kt">void</span> <span class="nf">onProcessInvoke</span><span class="o">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="o">,</span> <span class="n">Message</span> <span class="n">msg</span><span class="o">);</span>
+    <span class="kd">abstract</span> <span class="kt">void</span> <span class="nf">onProcessReply</span><span class="o">(</span><span class="n">ContextData</span> <span class="n">ctx</span><span class="o">,</span> <span class="n">Message</span> <span class="n">msg</span><span class="o">);</span>
 
-<span class="p">}</span>
+<span class="o">}</span>
 </pre></div>
 
 
@@ -179,20 +183,30 @@ Contexts can be used to classify or tag 
 <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>
+<div class="caption">ode-axis2.properties</div>
+
+<div class="codehilite"><pre>...
+ode-axis2.context.interceptors = my.full.qualified.context.interceptor.class.name
+...
+</pre></div>
+
+
+<div class="caption">ode-jbi.properties</div>
+
+<div class="codehilite"><pre>...
+ode-jbi.context.interceptors = my.full.qualified.context.interceptor.class.name
+...
+</pre></div>
+
+
 <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>
+<div class="caption">deploy.xml</div>
+
+<div class="codehilite"><pre><span class="nt">&lt;deploy</span> <span class="na">xmlns=</span><span class="s">&quot;http://www.apache.org/ode/schemas/dd/2007/03&quot;</span>
+    <span class="na">xmlns:pns=</span><span class="s">&quot;http://ode/bpel/unit-test&quot;</span>
+    <span class="na">xmlns:wns=</span><span class="s">&quot;http://ode/bpel/unit-test.wsdl&quot;</span><span class="nt">&gt;</span>
+
+    <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>
@@ -221,6 +235,7 @@ Contexts can be used to classify or tag 
     <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>
 
+:::xml
 <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>
@@ -239,16 +254,18 @@ Contexts can be used to classify or tag 
 <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>
+<div class="caption">"from/to specs for the work with context data"</div>
+
+<div class="codehilite"><pre><span class="nt">&lt;assign&gt;</span>
+    <span class="c">&lt;!-- copy &#39;tracing&#39; and &#39;security&#39; contexts to a variable. --&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;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&gt;</span>$var<span class="nt">&lt;/to&gt;</span>
+    <span class="nt">&lt;/copy&gt;</span>
+
+    <span class="c">&lt;!-- copy context data from $var 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>$var<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>
 
@@ -275,22 +292,28 @@ Contexts can be used to classify or tag 
 
 
 <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.
+    <ul>
+        <li><code>context="*"</code> in <code>from</code>-specs selects all contexts.</li>
+        <li><code>context="*"</code> in <code>to</code>-specs replaces existing contexts with context data selected by the <code>from</code>-spec.</li>
+        <li><code>context="+"</code> in <code>to</code>-specs merges existing contexts with context data selected by the <code>from</code>-spec.</li>
+    <ul>
 </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>
+<div class="caption">"Applying XPath-query to context data"</div>
+
+<div class="codehilite"><pre><span class="nt">&lt;assign&gt;</span>
+    <span class="c">&lt;!-- copy tracing id to a string variable. --&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;query&gt;</span>/ctx:contexts/ctx:context[@name=&#39;tracing&#39;]/ctx:value[@key=&#39;id&#39;]<span class="nt">&lt;/query&gt;</span>
+        <span class="nt">&lt;/from&gt;</span>
+        <span class="nt">&lt;to&gt;</span><span class="p">$</span><span class="nv">tracingId</span><span class="nt">&lt;/to&gt;</span>
+    <span class="nt">&lt;/copy&gt;</span>
+<span class="nt">&lt;/assign&gt;</span>
+</pre></div>
+
+
 <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>