Auto Complete Copy Destination (L-Value)
----------------------------------------
Key: ODE-371
URL: https://issues.apache.org/jira/browse/ODE-371
Project: ODE
Issue Type: New Feature
Affects Versions: 1.2
Environment: platform-independent
Reporter: Karthick Sankarachary
Fix For: 1.3
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 it is 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:
a) It's a path expression whose steps are separated by "/", and
b) Its steps have an axis, which is either "child" or "attribute", and
c) Its steps have no following predicates, and
d) Its steps test the name of a node, without the use of wildcards.
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 the 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.
<copy>
<from>$request.requestMessageData/typeIndicators/types:indicatorTwo</from>
<to>$response/typeIndicators/types:indicatorTwo</to>
</copy>
<copy insertMissingToData="yes">
<from>$request.requestMessageData/typeIndicators/types:indicatorTwo</from>
<to>$response/typeIndicators/child::types:indicatorTwo</to>
</copy>
Best Regards,
Karthick Sankarachary
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.