OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsbpel message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Issue 29 - Proposal For Vote


Issue 29 - Simplification of XPath expressions

Proposal: Require that all arguments to BPEL defined XPATH functions 
must be quoted strings that are statically defined within the XPATH 
expression.

Note: This proposal won't be necessary if we decide to manifest 
properties as independent XPATH variables since this would let us get 
rid of getVariableProperty.

Rationale: 
getVariableProperty(getVariableProperty(foo,bar),getVariableProperty(ick,bick)) 
is completely legal in XPATH. This is a problem because such an 
expression makes it impossible to statically analyze the expression that 
contains the function call and determine what variable is being 
referenced. This is problematic for static analysis of the process 
because it makes it impossible to determine what variable and property 
are being accessed so there is no way to check if that variable is 
accessible from that point in the BPEL process definition or if the 
variable has the referenced property defined on it. Even worse (in my 
mind anyway) is that the previous plays havoc with optimizations for 
compensation handling. If the previous function was contained within a 
compensation handler then there would be no way to know what variable 
was being accessed and so the BPEL process would have no choice but to 
persist all variables visible from the compensation handler, major yuck!
	We have in the past altered XPATH in order to suit our needs. For 
example, in some BPEL expressions we have banned the use of the global 
context node, a node whose presence is actually mandated by the XPATH 
specification. If we are willing to change XPATH that much I see no 
reason not to change it here as well. In for a dime, in for a dollar.

Section 9.1 -

Add a new paragraph after the following paragraph "Any qualified names 
used within XPath expressions are resolved by using namespace 
declarations currently in scope in the WS-BPEL document at the location 
of the expression.":

The arguments to all XPATH functions defined in this specification MUST 
be given as quoted strings. The previous requirement MUST be statically 
enforced. It is therefore illegal to pass into a BPEL XPATH function any 
XPATH variables, the output of XPATH functions, a XPATH location path or 
any other value that is not a quoted string. This means, for example, 
that getVariableProperty("varA","propB") meets the previous requirement 
while 
getVariableProperty($varA,string(getVariableProperty("varB","propB")) 
does not. Note that the previous requirement institutes a restriction 
which does not exist in the XPATH standard.



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]