com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_link3' is unknown.

Flexible Assigns

Auto-Complete Copy Destination (L-Value)

A lot of times, users expect the <copy> operation in a WS-BPEL assign activity to behave such that the path specified by the destination ("to-spec") is automatically created, if it doesn't already exist. By default, if the to-spec used within a <copy> operation does not select exactly one XML information item during execution, then the standard fault bpel:selectionFailure is thrown (as mandated by the spec).

To override this default behavior, we introduce a "insertMissingToData" attribute in the <copy> operation, which, if set to "yes", will instruct the runtime to complete the (XPath) L-value specified by the to-spec, if no items were selected. For the sake of simplicity, we will complete the to-spec if and only if:

  • It's a path expression whose steps are separated by "/", and
  • Its steps have an axis, which is either "child" or "attribute", and
  • Its steps have no following predicates, and
  • Its steps test the name of a node, without the use of wild cards.

Formally, the grammar of the to-spec, for which auto-complete is enabled, may be defined in terms of these productions:

 PathExpr ::= ("/" RelativePathExpr?) | RelativePathExpr
 RelativePathExpr ::= ForwardStep (("/" ) ForwardStep)*
 ForwardStep ::= (ForwardAxis QName) | AbbrevForwardStep
 AbbrevForwardStep ::= "@"? QName
 ForwardAxis ::= ("child" "::") | ("attribute" "::")

 

The example below illustrates the use of "insertMissingToData" attribute. Let's say that the variable "response" is uninitialized. In that case, the first <copy> operation will fail, whereas the second one will succeed.

Support for ignoreMissingFromData Attribute in <copy>

The attached patch adds support for the following attributes in the BPEL assign activity's copy operation:

  • If the optional @ignoreMissingFromData attribute has value "yes", and the from-spec returns zero XML information items, then no bpel:selectionFailure is thrown, and the to-spec is not evaluated.
  • If an extension @ignoreUninitializedFromVariable attribute has value "yes", and the from-spec contains an uninitialized variable, then no bpel:uninitializedVariable is thrown, and the to-spec is not evaluated.

The informal syntax of the above attributes is shown below:

<copy ignoreMissingFromData="yes|no"? ignoreUninitializedFromVariable="yes|no"?>
   from-spec to-spec
</copy>
com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_links2' is unknown.