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

svn commit: r1426477 - /ode/site/trunk/content/

Author: vanto
Date: Fri Dec 28 12:30:54 2012
New Revision: 1426477

URL: http://svn.apache.org/viewvc?rev=1426477&view=rev
Log:
clean up

Removed:
    ode/site/trunk/content/ant-tasks.mdtext
    ode/site/trunk/content/bpelc-task.mdtext
    ode/site/trunk/content/commandline-tools.mdtext
    ode/site/trunk/content/ddvalidate-command.mdtext
    ode/site/trunk/content/port.mdtext
    ode/site/trunk/content/pxe-activate-command.mdtext
    ode/site/trunk/content/pxe-deactivate-command.mdtext
    ode/site/trunk/content/pxe-deploy-command.mdtext
    ode/site/trunk/content/pxe-sar-task.mdtext
    ode/site/trunk/content/pxe-status-command.mdtext
    ode/site/trunk/content/pxe-undeploy-command.mdtext
    ode/site/trunk/content/rradd-command.mdtext
    ode/site/trunk/content/rralias-command.mdtext
    ode/site/trunk/content/rrdrop-command.mdtext
    ode/site/trunk/content/rrget-command.mdtext
    ode/site/trunk/content/rrls-command.mdtext
    ode/site/trunk/content/sarcreate-command.mdtext
    ode/site/trunk/content/sarls-command.mdtext
    ode/site/trunk/content/urlalias-command.mdtext
    ode/site/trunk/content/version-command.mdtext
Modified:
    ode/site/trunk/content/faq.mdtext
    ode/site/trunk/content/restful-bpel-part-i.mdtext
    ode/site/trunk/content/wsdl-11-extensions-for-rest.mdtext

Modified: ode/site/trunk/content/faq.mdtext
URL: http://svn.apache.org/viewvc/ode/site/trunk/content/faq.mdtext?rev=1426477&r1=1426476&r2=1426477&view=diff
==============================================================================
--- ode/site/trunk/content/faq.mdtext (original)
+++ ode/site/trunk/content/faq.mdtext Fri Dec 28 12:30:54 2012
@@ -10,7 +10,7 @@ __Q.__ _What is ODE?_
 __A.__ ODE is a system for executing reliable long-running process described using the WS-BPEL 2.0 standard and the BPEL4WS 1.1 vendor specification.
 
 __Q.__ _What is the architecture of ODE?_
-__A.__ The architecture of ODE is described in the ODE [Architectural Overview]
+__A.__ The architecture of ODE is described in the ODE [Architectural Overview](architectural-overview.html)
 
 
 __Q.__ _In what language is ODE written?_
@@ -30,7 +30,7 @@ __Q.__ _Is the entire_ _[WS-BPEL 2.0](ws
 __A.__ Most WS-BPEL 2.0 language features (and all important features) are supported. For specifics see the [WS-BPEL 2.0 Specification Compliance](ws-bpel-20-specification-compliance.html) page.
 
 __Q.__ _Does ODE use native Java language constructs to execute BPEL, e.g., multiple threads for a_ _```<bpel:flow>```_ _or a_ ```while (...) {...}``` _for a_ ```<bpel:while>```?
-__A.__ No. ODE's BPEL implementation does not map the BPEL process into Java. Instead, it relies on a transactional concurrency framework [JaCOb](/developerguide/jacob.html) similar to the theoretical concurrency model known as ACTORS [Agha86].
+__A.__ No. ODE's BPEL implementation does not map the BPEL process into Java. Instead, it relies on a transactional concurrency framework [JaCOb](/developerguide/jacob.html) similar to the theoretical concurrency model known as ACTORS [Agha86](agha86.html).
 
 __Q.__ _Does ODE support BPEL processes developed in third-party tools?_
 __A.__ Yes. Well-formed BPEL from any source should work.
@@ -82,7 +82,7 @@ __Q.__ _Does ODE require a database? Whi
 __A.__ ODE does not depend directly on any specific database or persistence mechanism. Instead, ODE relies on a set of data access object ("DAO") interfaces that encapsulate the behaviors of a persistence layer. The ODE distribution includes a DAO implementation for JDBC databases built using [OpenJPA](http://openjpa.apache.org). This DAO implementation can support most common relational databases. Schemas suitable for [MySQL](http://www.mysql.com) and [Derby](http://db.apache.org/derby/) are provided. Relational databases lacking transaction or binary large object ("BLOB") capabilities are not supported. The DAO interfaces can readily be implemented to support alternative persistence mechanisms (e.g. JDO), XML datastores, or direct filesystem-based persistence.
 
 __Q.__ _Does ODE require a J2EE application server?_
-__A.__ The core ODE components do not require a J2EE application server. ODE relies on a [Integration API](http://svn.apache.org/repos/asf/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/) that allows ODE to be embedded in most any environment that can supply the required facilities. An [AXIS2 Integration] is provided that permits ODE to be installed on a J2EE application server, or in a "dumb" Servlet container via a WAR file. A [JBI Integration] integration is also provided that permits ODE to be installed in a JBI container.
+__A.__ The core ODE components do not require a J2EE application server. ODE relies on a [Integration API](http://svn.apache.org/repos/asf/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/) that allows ODE to be embedded in most any environment that can supply the required facilities. An [AXIS2 Integration](architectural-overview.html#ODEIntegrationLayers) is provided that permits ODE to be installed on a J2EE application server, or in a "dumb" Servlet container via a WAR file. A [JBI Integration](architectural-overview.html#ODEIntegrationLayers) integration is also provided that permits ODE to be installed in a JBI container.
 
 __Q.__ _Is there a stand-alone ODE integration?_
 __A.__ No, the standard ODE distributions require either an application server, Servlet container, or JBI container.
@@ -104,20 +104,20 @@ __A.__ We try to use sensible sizes for 
 This section covers frequently asked questions related to integrating ODE into third-party products or integrating third-party products into ODE.
 
 __Q.__ _Can ODE interact directly (i.e., not over the network) with native Java services?_
-__A.__ This is currently supported in the [JBI Integration] via standard JBI mechanisms. It is currently not supported in the [AXIS2 Integration] but will be in the future.
+__A.__ This is currently supported in the [JBI Integration](architectural-overview.html#ODEIntegrationLayers) via standard JBI mechanisms. It is currently not supported in the [AXIS2 Integration](architectural-overview.html#ODEIntegrationLayers) but will be in the future.
 
 __Q.__ _Can ODE integrate with Middleware X? Can ODE integrate with Legacy system Y? Can ODE integrate with Enterprise Application Z? How is this accomplished?_
 __A.__ The generic answer is "Yes," although it requires some work on the part of the integrator. The primary extension point for integrating with external systems is the [Integration API](http://ode.apache.org/javadoc/org/apache/ode/bpel/pmapi/ProcessManagement.html), which can be used to embed ODE in most any environment.
 
 __Q.__ _Does ODE rely on any third-party or open source libraries?_
-__A.__ ODE uses a number of liberally-licensed (i.e., non-GPL) open source libraries, some integral and some not. These are enumerated in the [reference|Required Third-Party Libraries].
+__A.__ ODE uses a number of liberally-licensed (i.e., non-GPL) open source libraries, some integral and some not. These are enumerated in the [reference](required-third-party-libraries.html).
 
 ## ODE and Web Services
 
 This section covers frequently asked questions about how ODE related to various web services specifications and initiatives.
 
 __Q.__ _Does ODE supply a SOAP stack?_
-__A.__ Not directly. ODE relies on the [Integration Layer|Architectural Overview#ODEIntegrationLayers] to supply the "physical" communication mechanisms. The [AXIS2 Integration Layer|Architectural Overview#ODEIntegrationLayers] that is part of the ODE distribution uses the AXIS2 SOAP stack. The [JBI Integration Layer|Architectural Overview#ODEIntegrationLayers] relies on external HTTP/SOAP components (e.g. ServiceMix's `servicemix-http` component).
+__A.__ Not directly. ODE relies on the [Integration Layer](architectural-overview.html#ODEIntegrationLayers) to supply the "physical" communication mechanisms. The [AXIS2 Integration Layer](architectural-overview.html#ODEIntegrationLayers) that is part of the ODE distribution uses the AXIS2 SOAP stack. The [JBI Integration Layer](architectural-overview.html#ODEIntegrationLayers) relies on external HTTP/SOAP components (e.g. ServiceMix's `servicemix-http` component).
 
 __Q.__ _Can ODE be integrated with third-party web services products such as Apache AXIS, Systinet WASP, or JAXRPC?_
 __A.__ Yes, ODE can be integrated into most any stack via the [Integration API](http://incubator.apache.org/ode/javadoc/bpel-api/index.html)
@@ -128,7 +128,7 @@ __Q.__ _Does ODE support web services tr
 __A.__ No, not at present.
 
 __Q.__ _Does ODE support WS-Addressing?_
-__A.__ ODE does not directly support WS-Addressing. However, the BPEL implementation and the core ODE infrastructure provides support for opaque end-point references. This allows ODE to be integrated with arbitrary addressing standards. The [AXIS2 Integration Layer] for ODE employs this mechanism to support WS-Addressing.
+__A.__ ODE does not directly support WS-Addressing. However, the BPEL implementation and the core ODE infrastructure provides support for opaque end-point references. This allows ODE to be integrated with arbitrary addressing standards. The [AXIS2 Integration Layer](architectural-overview.html#ODEIntegrationLayers) for ODE employs this mechanism to support WS-Addressing.
 
 ## Reliability
 

Modified: ode/site/trunk/content/restful-bpel-part-i.mdtext
URL: http://svn.apache.org/viewvc/ode/site/trunk/content/restful-bpel-part-i.mdtext?rev=1426477&r1=1426476&r2=1426477&view=diff
==============================================================================
--- ode/site/trunk/content/restful-bpel-part-i.mdtext (original)
+++ ode/site/trunk/content/restful-bpel-part-i.mdtext Fri Dec 28 12:30:54 2012
@@ -32,4 +32,4 @@ And to update the post:
 <a name="RESTfulBPEL,PartI-XPathfunctions"></a>
 ### XPath functions
 
-The use or URLs requires the ability to combine URLs with two new XPath functions: combine-url(base, relative) and compose-url(template, \[name, value\](name,-value\.html)*) / compose-url(template, pairs). See [xpath extensions|xpath extensions#combineurl(base,relative)] for details.
+The use or URLs requires the ability to combine URLs with two new XPath functions: combine-url(base, relative) and compose-url(template, \[name, value\](name,-value\.html)*) / compose-url(template, pairs). See [xpath extensions](xpath extensions#combineurl(base,relative)) for details.

Modified: ode/site/trunk/content/wsdl-11-extensions-for-rest.mdtext
URL: http://svn.apache.org/viewvc/ode/site/trunk/content/wsdl-11-extensions-for-rest.mdtext?rev=1426477&r1=1426476&r2=1426477&view=diff
==============================================================================
--- ode/site/trunk/content/wsdl-11-extensions-for-rest.mdtext (original)
+++ ode/site/trunk/content/wsdl-11-extensions-for-rest.mdtext Fri Dec 28 12:30:54 2012
@@ -1,11 +1,14 @@
 Title: WSDL 1.1 Extensions for REST
+
 The [Resource-Oriented Architecture](http://en.wikipedia.org/wiki/Representational_State_Transfer) defines four concepts:
+
 1. Resources
 1. Their names (URIs)
 1. Their representations
 1. The link bet ween them
 
 and four properties:
+
 1. Addressability
 1. Statelesness
 1. Connectedness
@@ -14,6 +17,7 @@ and four properties:
 HTTP binding as defined in WSDL 1.1 is not well suitable to describe services implementing these concepts and properties, mainly because a port type may access 4 different locations/resources but with only one HTTP method.
 
 To better describe RESTful services, and turn a port type into a "resource type", ODE brings a set of 4 extensions:
+
 1. one HTTP method per operation (instead of one per binding)
 1. a unique URI Template for all operations
 1. access to HTTP headers
@@ -21,24 +25,27 @@ To better describe RESTful services, and
 
 Further details below.
 
-In this page, we use an imaginary blog service as a use case to illustrate and make things more palpable. We will focus on the resources defined by the following URI template: {noformat}http://blog.org/post/{id}{noformat} 
+In this page, we use an imaginary blog service as a use case to illustrate and make things more palpable. We will focus on the resources defined by the following URI template: `http://blog.org/post/{id}` 
+
 Let's assume that such a resource accept four operations:
+
 * GET to retrieve a post
 * DELETE to delete it
 * PUT to update the post
 * POST to add a comment to a post
 
-<div class="alert alert-info"><h4 class="alert-heading">Check out unit tests!</h4>
-    
-    h3. One verb per operation
-    
-    According to the WSDL 1.1 specification, the verb describing the HTTP method has to be at [the binding level](http://www.w3.org/TR/wsdl#A4.3). Which implies that the same HTTP method is used by all operations of a given port type. But RESTful web services leverage HTTP methods as a uniform interface to describe operation on resources. So for instance, if you want to use the following HTTP operations -- GET, POST, PUT, DELETE -- for a given resource, four different bindings would be required. And consequently four port types and four ports. Quite verbose and unusable, isn't it?
-    
-    So, this extension is to push down the HTTP verb at the operation level. And if an operation does not have its own verb, then the verb defined at the binding level will be used. 
-    This extension is declared in the namespace: `http://www.apache.org/ode/type/extension/http`
-    
-    Please note that ODE supports GET, POST, PUT, DELETE only.
-    {code:xml}
+<div class="alert alert-info"><h4 class="alert-heading">Check out unit tests!</h4></div>
+
+### One verb per operation
+
+According to the WSDL 1.1 specification, the verb describing the HTTP method has to be at [the binding level](http://www.w3.org/TR/wsdl#A4.3). Which implies that the same HTTP method is used by all operations of a given port type. But RESTful web services leverage HTTP methods as a uniform interface to describe operation on resources. So for instance, if you want to use the following HTTP operations -- GET, POST, PUT, DELETE -- for a given resource, four different bindings would be required. And consequently four port types and four ports. Quite verbose and unusable, isn't it?
+
+So, this extension is to push down the HTTP verb at the operation level. And if an operation does not have its own verb, then the verb defined at the binding level will be used. 
+This extension is declared in the namespace: `http://www.apache.org/ode/type/extension/http`
+
+Please note that ODE supports GET, POST, PUT, DELETE only.
+
+    :::xml
     <definitions ...
                       xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
     
@@ -53,20 +60,17 @@ Let's assume that such a resource accept
             </operation>
         </binding>
     </definitions>
-    {code}
-    
-    
-    
-    h3. URI Template
-    
-    A RESTful service exposed a set of resources, each of them being accessible through a uniform interface: HTTP methods for a web service. So we need a way to define four operations (at most) for a single resource. 
-    
-    Moreover it's very likely that the resource URI actually describes a set of resources. For instance, the set of posts contained in our imaginary blog: `http://blog.org/post/\{post_id\`}.
-    
-    HTTP binding offers the [http:operation | http://www.w3.org/TR/wsdl#_http:operation] element to set the path of an operation. While the service address is set in the [http:address](http://www.w3.org/TR/wsdl#_http:address) of the [wsdl:port](http://www.w3.org/TR/wsdl#_ports) element.
-    So one could imagine splitting the URL this way: 
-    
-    {code:xml}
+
+### URI Template
+
+A RESTful service exposed a set of resources, each of them being accessible through a uniform interface: HTTP methods for a web service. So we need a way to define four operations (at most) for a single resource. 
+
+Moreover it's very likely that the resource URI actually describes a set of resources. For instance, the set of posts contained in our imaginary blog: `http://blog.org/post/{post_id}`.
+
+HTTP binding offers the [http:operation ](http://www.w3.org/TR/wsdl#_http:operation) element to set the path of an operation. While the service address is set in the [http:address](http://www.w3.org/TR/wsdl#_http:address) of the [wsdl:port](http://www.w3.org/TR/wsdl#_ports) element.
+So one could imagine splitting the URL this way: 
+
+    :::xml
     <definitions ...
                       xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
     
@@ -87,22 +91,23 @@ Let's assume that such a resource accept
             </operation>
         </binding>
     </definitions>
-    {code}
-    
-    However, here 3 issues show up:
-    # the location is not accessible from the End Point Reference. _=> ODE cannot process it before invoking the external service._
-    # [http:urlReplacement](http://www.w3.org/TR/wsdl#_http:urlReplacement) is only accepted for GET _=> what about the uniform interface?!_
-    # http:urlReplacement requires all parts of the operation input message to be mentioned in the operation location. Meaning that:
-    #* => the resource id (in the present example) must be a part of the message.
-    #* => no parts may be stored in the HTTP body. this conflicts with a PUT operation for instance. With a PUT you would like to set the id in the url and the resource data in the HTTP request body.
-    
-    To solve this, ODE allows [http:operation | http://www.w3.org/TR/wsdl#_http:operation] elements to be omitted or empty, and the full resource URI to be set in a single place, the http:address element. 
-    
-    {note:Curly Brackets}Please note that curly brackets '\{\}' are the preferred argument delimiters in URI templates. So that URLs can be dynamically composed using [compose-url, combine-url and expand-template XPath Functions|RESTful BPEL, Part I#XPath functions].{note}
-    
-    In addition, the http:urlReplacement is relaxed: all parts are *not* required in the URI template anymore. One part could go in the URI, another in the request body.
-    
-    {code:xml}
+
+
+However, here 3 issues show up:
+
+* the location is not accessible from the End Point Reference. _=> ODE cannot process it before invoking the external service._
+* [http:urlReplacement](http://www.w3.org/TR/wsdl#_http:urlReplacement) is only accepted for GET _=> what about the uniform interface?!_
+* http:urlReplacement requires all parts of the operation input message to be mentioned in the operation location. Meaning that:
+  * => the resource id (in the present example) must be a part of the message.
+  * => no parts may be stored in the HTTP body. this conflicts with a PUT operation for instance. With a PUT you would like to set the id in the url and the resource data in the HTTP request body.
+
+To solve this, ODE allows [http:operation](http://www.w3.org/TR/wsdl#_http:operation) elements to be omitted or empty, and the full resource URI to be set in a single place, the http:address element. 
+
+<div class="alert alert-info">Please note that curly brackets '{}' are the preferred argument delimiters in URI templates. So that URLs can be dynamically composed using <a href="restful-bpel-part-i.html#XPath functions">compose-url, combine-url and expand-template XPath Functions</a>.</div>
+
+In addition, the http:urlReplacement is relaxed: all parts are *not* required in the URI template anymore. One part could go in the URI, another in the request body.
+
+    :::xml
     <definitions ...
                       xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
     
@@ -127,14 +132,12 @@ Let's assume that such a resource accept
             </operation>
         </binding>
     </definitions>
-    {code}
-    
-    
-    h3. HTTP Headers manipulation
-    
-    HHTP protocal convey a lot of information in Request/Response Headers. Caching information, Content description for instance. All this data is completely left out by WSDL 1.1 HTTP Binding. To fix this, ODE provides a header element. This element can be used to insert a part or a static value into a given HTTP request header (standard or custom). And the way around, a HTTP request header into a part. Also note that all HTTP response headers are inserted into the message headers, and thus are available from the BPEL process.
-    
-    {code:xml}
+
+### HTTP Headers manipulation
+
+HTTP protocal convey a lot of information in Request/Response Headers. Caching information, Content description for instance. All this data is completely left out by WSDL 1.1 HTTP Binding. To fix this, ODE provides a header element. This element can be used to insert a part or a static value into a given HTTP request header (standard or custom). And the way around, a HTTP request header into a part. Also note that all HTTP response headers are inserted into the message headers, and thus are available from the BPEL process.
+
+    :::xml
     <definitions ...
                       xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
     
@@ -158,10 +161,10 @@ Let's assume that such a resource accept
             </operation>
         </binding>
     </definitions>
-    {code}
-    
-    For every HTTP response, in addition to HTTP response headers, the [Status-Line](http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1) is passed as a message header. To save some painful XPath string manipulations, the Status-line is already parsed into the following structure:
-    {code:xml}
+
+For every HTTP response, in addition to HTTP response headers, the [Status-Line](http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1) is passed as a message header. To save some painful XPath string manipulations, the Status-line is already parsed into the following structure:
+
+    :::xml
     <Status-Line>
        <HTTP-Version>HTTP/1.1</HTTP-Version>
        <Status-Code>200</Status-Code>
@@ -169,65 +172,65 @@ Let's assume that such a resource accept
        <!-- the original unaltered Status-Line -->
        <original>HTTP/1.1 200 OK</original>
     </Status-Line>
-    {code}
-    
-    So that you can write the following BPEL lines:
-    {code:xml}
-            <assign>
-                <copy>
-                    <from variable="postMsg" header="Status-Line"/>
-                    <to>$statusLine</to>
-                </copy>
-            </assign>
-            <if>
-                <condition>number($statusLine/Status-Code) > 200 and number($statusLine/Status-Code) < 300</condition>
-                <assign>
-                     <copy>
-                         <from>'Request successful!!!'</from>
-                         <to>$outputVar.TestPart</to>
-                     </copy>
-                 </assign>
-            </if>
-    {code}
-    
-    h3. Fault Support
-    
-    Another domain completely neglected by WSDL 1.1 HTTP Binding is Fault management. The word is not even mentioned in the [HTTP Binding section](http://www.w3.org/TR/wsdl#_http).
-    ODE allows you to bind a fault with HTTP Binding. If a [4xx or a 5xx](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4) is returned, the following logic is applied:
-    
-    A failure is thrown if the code is one of these:
-    || Status-Codes triggering a Failure ||
-    | 3xx Redirections |
-    |401_UNAUTHORIZED|
-    |408_REQUEST_TIMEOUT|
-    |503_SERVICE_UNAVAILABLE|
-    |504_GATEWAY_TIMEOUT|
-    
-    {info:title=Useful Information}Note that 3xx errors should be pretty rare since by default the first hundred redirections are followed. You can tweak this value by setting the property `http.protocol.max-redirects` in the [enpoint-configuration.properties|Endpoint Configuration] of your process.{info}
-    
-    Here what ODE does, if the status code is one of those listed in the next table (500, 501, etc):
-    # check that the operation has at least one fault in its abstract part, and one fault binding
-    # check that the Content-type header describes an xml document ('application/xml', 'application/atom+xml' etc)
-    # check that the body is not empty
-    
-    If so far everything is fine, the HTTP response body is parsed into an xml document. Then the fault to be thrown is inferred from the qname of the response root element, i.e the fault having a message part matching the root element. This matching process is exactly the same as for a SOAP service. 
-    If one of these steps fails, a failure is thrown.
-    
-    || Status-Codes that may trigger a Fault ||if the body element matches a fault declaration||
-    |500_INTERNAL_SERVER_ERROR               | 407_PROXY_AUTHENTICATION_REQUIRED       |
-    |501_NOT_IMPLEMENTED                     | 409_CONFLICT                            |
-    |502_BAD_GATEWAY                         | 410_GONE                                |
-    |505_HTTP_VERSION_NOT_SUPPORTED          | 412_PRECONDITION_FAILED                 |
-    |400_BAD_REQUEST                         | 413_REQUEST_TOO_LONG                    |
-    |402_PAYMENT_REQUIRED                    | 414_REQUEST_URI_TOO_LONG                |
-    |403_FORBIDDEN                           | 415_UNSUPPORTED_MEDIA_TYPE              |
-    |404_NOT_FOUND                           | 411_LENGTH_REQUIRED                     |
-    |405_METHOD_NOT_ALLOWED                  | 416_REQUESTED_RANGE_NOT_SATISFIABLE     |
-    |406_NOT_ACCEPTABLE                      | 417_EXPECTATION_FAILED                  |
-    
-    Note that you can't bind a given fault to a specific status code.
-    
-    {code:xml}
+
+So that you can write the following BPEL lines:
+
+    :::xml
+    <assign>
+        <copy>
+            <from variable="postMsg" header="Status-Line"/>
+            <to>$statusLine</to>
+        </copy>
+    </assign>
+    <if>
+        <condition>number($statusLine/Status-Code) > 200 and number($statusLine/Status-Code) < 300</condition>
+        <assign>
+             <copy>
+                 <from>'Request successful!!!'</from>
+                 <to>$outputVar.TestPart</to>
+             </copy>
+         </assign>
+    </if>
+
+### Fault Support
+
+Another domain completely neglected by WSDL 1.1 HTTP Binding is Fault management. The word is not even mentioned in the [HTTP Binding section](http://www.w3.org/TR/wsdl#_http).
+ODE allows you to bind a fault with HTTP Binding. If a [4xx or a 5xx](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4) is returned, the following logic is applied:
+
+A failure is thrown if the code is one of these:
+|| Status-Codes triggering a Failure ||
+| 3xx Redirections |
+|401_UNAUTHORIZED|
+|408_REQUEST_TIMEOUT|
+|503_SERVICE_UNAVAILABLE|
+|504_GATEWAY_TIMEOUT|
+
+<div class="alert alert-info">Note that 3xx errors should be pretty rare since by default the first hundred redirections are followed. You can tweak this value by setting the property <code>http.protocol.max-redirects</code> in the <a href="endpoint-configuration.html">enpoint-configuration.properties</a> of your process.</div>
+
+Here what ODE does, if the status code is one of those listed in the next table (500, 501, etc):
+
+* check that the operation has at least one fault in its abstract part, and one fault binding
+* check that the Content-type header describes an xml document ('application/xml', 'application/atom+xml' etc)
+* check that the body is not empty
+
+If so far everything is fine, the HTTP response body is parsed into an xml document. Then the fault to be thrown is inferred from the qname of the response root element, i.e the fault having a message part matching the root element. This matching process is exactly the same as for a SOAP service. 
+If one of these steps fails, a failure is thrown.
+
+|| Status-Codes that may trigger a Fault ||if the body element matches a fault declaration||
+|500_INTERNAL_SERVER_ERROR               | 407_PROXY_AUTHENTICATION_REQUIRED       |
+|501_NOT_IMPLEMENTED                     | 409_CONFLICT                            |
+|502_BAD_GATEWAY                         | 410_GONE                                |
+|505_HTTP_VERSION_NOT_SUPPORTED          | 412_PRECONDITION_FAILED                 |
+|400_BAD_REQUEST                         | 413_REQUEST_TOO_LONG                    |
+|402_PAYMENT_REQUIRED                    | 414_REQUEST_URI_TOO_LONG                |
+|403_FORBIDDEN                           | 415_UNSUPPORTED_MEDIA_TYPE              |
+|404_NOT_FOUND                           | 411_LENGTH_REQUIRED                     |
+|405_METHOD_NOT_ALLOWED                  | 416_REQUESTED_RANGE_NOT_SATISFIABLE     |
+|406_NOT_ACCEPTABLE                      | 417_EXPECTATION_FAILED                  |
+
+Note that you can't bind a given fault to a specific status code.
+
+    :::xml
     <definitions ...
                       xmlns:odex="http://www.apache.org/ode/type/extension/http"/>
     
@@ -254,4 +257,3 @@ Let's assume that such a resource accept
             </operation>
         </binding>
     </definitions>
-    {code}