Title: WS-BPEL 2.0 Specification Compliance This page provides information on ODE's compliance to the final [WS-BPEL 2.0](ws-bpel-20.html) specification released by OASIS. ODE also implements [a few extensions](/extensions/) we deemed necessary. ## Static Analysis In this section the divergenced from the specification relating to static analysis requirements are described. ## Variables ### Initialization The inline `from-spec` used for variable initialization (BPEL 2.0 Section 8.1) is not supported, however a patch is available (see ODE-236). ### External Variables In addition to regular variables that are managed by the engine according to the BPEL specification, ODE adds support for variables whose content is stored externally yet transparently accessible from the engine. See [External Variables](/extensions/external-variables.html) for more information. ## Activities In this section the divergences from the specification for each standard BPEL activity are described. ### <[receive](receive.html)> There are several major issues with support for the `` activity. ODE does not yet support the `` syntax. Therefore, the `variable` attribute must be used. Furthermore, only message variables can be referenced with the `variable` attribute, whereas the [specification](ws-bpel-20.html) permits referencing of an element-typed variable if the WSDL for the request message contains a single element-typed part. Multiple start activities as described in section 10.4, and 15.4 of the [specification](ws-bpel-20.html)) are not officially supported. This precludes the use of `initiate="join"`. ODE does not provide the ordering guarantees described in section 10.4 of the [specification](ws-bpel-20.html). Also, it does not enforce the ordering requirements described in the same section. Hence, the BPEL code is illegal according to the BPEL specification, but allowed by ODE. The specification defines two standard faults --- `bpel:[conflictingRequest](conflictingrequest.html)` and `bpel:[conflictingReceive](conflictingreceive.html)` --- to deal with two similar error conditions relating to multiple outstanding requests on a single partner-link/operation/messageExchange tuple. ODE does not distinguish between these two conditions and `conflictingReceive` is thrown whenever either of the conditions occurs. That is to say, in certain cases a `conflictingReceive` indicates a `conflictingRequest`, and `conflictingRequest` is never thrown. Finally, the `validate` attribute --- if present --- is ignored: ODE currently provides no variable validation. ### The conformance issues with the `` activity mirror those of the `` activity as described above: the `` syntax is not supported, and `variable` attributes must reference message-typed variables. ### <[invoke](invoke.html)> Again, as in the `>` and `` activities, the `>` and `>` syntax are not supported. Similarly, the `inputVariable` and `outputVariable` attributes must reference message-typed variables. Here too, the `validate` attribute is ignored. ### <[assign](assign.html)> The WS-BPEL 2.0 specification requires the <[assign](assign.html)> activity to be atomic. Currently in ODE, each `` is atomic. The specification also provides for validating variables at the end of an assignment using the `validate` attribute. ODE does not support this. This means that the `bpel:[invalidVariables](invalidvariables.html)` fault is never thrown by an <[assign](assign.html)> activity. Inline assignment as part of the variable declaration isn't currently supported. ODE currently uses the `expressionLanguage` attribute to determine the language used in assignments instead of using the `queryLanguage` attribute. There are no other known divergences from the specification relating to the `` activity that would prevent the execution of valid BPEL assignments. ODE provides certain (non-standard) extensions to the `` activity that do not conform to the specification's requirements for assignment extensions. Consult the [reference page](assign.html) for the `` activity for further details regarding non-standard extensions. ### The `` activity is fully compliant with the specification. ### The `` activity is fully compliant with the specification. ### The `` activity is fully compliant with the specification. ### The `` activity is fully compliant with the specification. ### The `` activity is fully compliant with the specification. ### The `` activity is fully compliant with the specification. ### The `` activity is fully compliant with the specification. ### The `` activity is fully compliant with the specification. ### The `` activity is fully compliant with the specification. ODE supports both sequential and parallel for-each semantics. ### <[pick](pick.html)> The <[pick](pick.html)> activity has the same issues as the <[receive](receive.html)> activity. ### The `` activity is fully compliant with the specification. ### Isolated scopes are implemented in ODE's experimental branch (as of September 2007) and will be released in ODE 2.x. ODE v1.0/1.1 do not support isolated scopes nor do they support "exit on standard fault" semantics. Hence, a BPEL 2.0 process will be interpreted as if any `isolated` and `exitOnStandardFault` attributes on `` elements did not exist. ### <[compensate](compensate.html)> The `` activity is not compliant with the specification. In ODE, this activity has the same effect and syntax as ``. In addition, the `scope` attribute may be used in place of the `target` attribute with the same effect; and ODE expects one of these attributes must be specified. ### The `` activity is fully compliant with the specification. ### The `` activity is fully compliant with the specification. ### <[validate](validate.html)> The `` activity is _not_ implemented by ODE. Processescontaining such activities will cause a compilation failure. ### Activity extension is not supported in ODE. There is an implementation in the ODE experimental branch.