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: Re: [wsbpel] Issue 157 - proposal


Attached are my comments on the proposal.
	Thanks,
		Yaron

Charlton Barreto wrote:
> 
> Attached are two documents which represent Alex's proposal on Issue 157, 
> reflecting the work the small group has performed over the last few 
> weeks to converge on it.
> 
>     *
>       The WS-BPEL_Issue_157_Proposal.doc represents the "Formatted
>       Proposal", which is how we intend to implement the changes to the
>       specification.
>     *
>       The WS-BPEL_Issue_157_Proposal_with_changelog.doc represents the
>       change-logged proposal, which includes all the latest concurred
>       input (including that from Monica, Ron, Yaron and myself) to
>       Alex's Proposal Draft from 2005-July-29, this doc being in sync
>       with the "Formatted Proposal". 
> 
> The difference between the two is that the "Formatted Proposal" 
> reorganises the relevant sections so as to follow the layout of the 
> spec, while the change-logged proposal represents all the changes with 
> editorial notes to indicate the organisation and ordering. At present I 
> have the pen on these, so p lease don't hestitate to contact Alex or 
> myself if you have any questions.
>  
> Cheers,
>  
> -Charlton.
>  
> Adobe Systems, Inc.
> mailto:cbarreto@adobe.com
> +1.408.536.4496p
>  
> 
> *From:* Alex Yiu [mailto:alex.yiu@oracle.com]
> *Sent:* Tuesday, August 02, 2005 3:07 PM
> *To:* ygoland@bea.com
> *Cc:* wsbpel@lists.oasis-open.org; Charlton Barreto; Alex Yiu
> *Subject:* Re: [wsbpel] Issue 157 - proposal draft
> 
> 
> Hi Yaron,
> 
> Thanks for your detailed feedback!
> 
> [ Note: Charlton and I are consolidating feedbacks from people 
> (including Monica and Ron) as of this moment, we would send out a 
> updated proposal soon. ]
> 
> See comments inline ...
> 
> Yaron Y. Goland wrote:
> 
>> The requirement that two WSDL message types be the same seems too 
>> restrictive given our removal of automatic schema validation. If I 
>> have two WSDL message types which are identical in all but name then I 
>> should be able to copy between them. I suspect we should remove all 
>> restrictions regarding WSDL message type requirements and instead 
>> allow people to use validation to detect if incompatible types have 
>> been copied.
>>
> *[A]*
> The first two bullets are clarified to just talk about 
> message-variable-to-message-variable copy. A message part to message 
> part is now clearly excluded.
> E.g.:
> Copying a message var of  "foo:msgType1" which has an element message 
> part called "payload" to a message var of "bar:msgTypeX" which has  RPC 
> parts "arg1" and "arg2" is not allowed  by this spec text. Do you really 
> mean to allow it happen?
> 
> On the other hand, copy from the "payload" part of msg var of 
> "foo:msgType1" to "arg2" part of msg var of "foo:msgTypeX" is clearly 
> allowed here.
> 
> 
>> "In all other cases, if the selection results of  from-spec (i.e. 
>> source) and to-spec (i.e. destination) are XML Infoset Items or data 
>> items in an XML data model, and the XML Schema types of those 
>> selections are known, then the source value MUST possess the type 
>> associated with the destination."
>>
>> The MUST in the previous sentence should be a SHOULD since even if the 
>> schema type is known it isn't always clear if it's possible to do 
>> static validation. Also note that the language leaves a huge back door 
>> since, for example, XQUERY doesn't use XML Schema and so none of the 
>> language in the paragraph would apply.
>>
> 
> *[B]*
> The "MUST" is already under the condition is already under the condition 
> of " if ... XML Schema types of those selections are known ". Is that 
> good enough?
> 
> What do you mean by XQuery does not make use of XML Schema?
> http://www.w3.org/TR/xpath-datamodel/
> http://www.w3.org/TR/xpath-datamodel/type-hierarchy.png
> 
> After XML validation and before any modification, the types of an XML 
> data can be known in XQuery data model.
> 
>> "However, since XPath 1.0 data model is not schema aware, no XML 
>> Schema type checking is performed at <copy> operation during runtime, 
>> when the default XPath 1.0 expression/query language binding is used."
>>
>> I think this sentence should be followed by a very clear statement 
>> just pointing out, once again, that schema validation is not 
>> guaranteed and give some examples (like mixed languages, e.g. a 
>> different language for source and destination only one of which is 
>> schema aware) of where schema validation might not be available.
>>
> 
> *[C]*
> Your input is very welcome here. Can you draft a paragraph for us to put 
> it into the proposal?
> 
>> "Text Information Item (TII) is a sequence of zero or more CII 
>> according to the document order. When it is mapped to XPath 1.0 model, 
>> it is a generalization of String-Value (which has zero or more 
>> characters) and Text Node (which has one or more characters). RValue 
>> of a TII can be mapped to a String-Value or a Text Node in XPath 1.0, 
>> while LValue of a TII can be only mapped to a Text node. "
>>
>> This definition is incomplete since the infoset doesn't contain a way 
>> to point at something that isn't there. So how exactly do you define a 
>> character that isn't there? One way around this problem would be to 
>> actually define the TII as a full fledged infoset item whose attribute 
>> points at a series of CharIIs. Then specify that it is legal to have a 
>> TII which points to no CharIIs and that is therefore an 'empty' TII. 
>> But this only makes sense for the RValue.
>>
> *[D]*
> Actually, I think we are just using different words to say the same 
> thing. The current proposal says: TII is "a sequence of zero or more 
> CII". You said TII has an "attribute points at a series of CharIIs". If 
> you think adding the word attribute here are better. I have no problem 
> to add that. How about?
> 
> "Text Information Item (TII) is an Information Item of which an 
> attribute points to a sequence of zero or more Character Information Item."
> 
>> Where I get confused is in the case of an LValue. I suspect we would 
>> be wise to just ban empty TIIs as LValues. Otherwise we end up with 
>> some mind bending problems that even XPATH can't handle. For example, 
>> <foo><bar/></foo>. Imagine I want to point to the 'empty' space before 
>> <bar/> and copy something there. XPATH can return an empty string but 
>> that empty string doesn't point to anything so there is no way to 
>> resolve the LValue.
>>
>> I think it's cleaner to just say that we don't support that kind of 
>> fine grained copy.
>>
> 
> *[E]*
> We do have have a clear distinction between R-Value and L-Value here.
> Quoted from the updated version of the proposal:
> -------------------------------
> An RValue of a TII MAY be mapped to a Text node, a String/Boolean/Number 
> object, or [normalized value] property of an AII in XPath 1.0, while an 
> LValue of a TII MUST be mapped to a Text node or [normalized value] 
> property of an AII.
> -------------------------------
> 
> That means, the LValue cannot be empty (excluding attribute value case), 
> since Text node cannot be empty.
> 
> Given the above example and current proposal text,
> 
> We do ban the following 2 <copy> operations already:
> ---------------------------
> <assign>
>     <copy>
>           <from> '123' </from>
>           <to>$fooVar/bar/text()</to>
>     </copy>
> </assign>
> ---------------------------
> ---------------------------
> <assign>
>     <copy>
>           <from> '123' </from>
>           <to>$fooVar/text()</to>
>     </copy>
> </assign>
> ---------------------------
> As the above to-spec returns zero nodes (also a text node cannot be 
> empty), a selectionFailure would be thrown.
> 
> We do allow the following copy operation:
> ---------------------------
> <assign>
>     <copy>
>           <from> '123' </from>
>           <to>$fooVar/bar</to>
>     </copy>
> </assign>
> ---------------------------
> The to-spec returns an Element node and the RC logic kicks in.
> 
> If the data-before-copy becomes: <foo><bar attr1="" /></foo>
> We do allow the following copy operation:
> ---------------------------
> <assign>
>     <copy>
>           <from> '123' </from>
>           <to>$fooVar/bar/@attr1</to>
>     </copy>
> </assign>
> ---------------------------
> The to-spec returns an Attribute node and the RC logic kicks in.
> 
>> "All existing message parts in the destination WSDL message variable 
>> (referred by the to-spec) will be removed and all existing message 
>> parts in the source WSDL message variable (referred by the from-spec) 
>> will be copied and added to destination WSDL message variable."
>>
>> This language worries me because it makes implicit promises about 
>> preserving any data that may be associated with the WSDL 'wrapper' 
>> (whatever that is). I suspect it might be cleaner to specify that the 
>> source WSDL message variable will be copied and that copy will become 
>> the value for the destination. This implies that everything at the 
>> destination is wiped out. Of course six of one, 1/2 dozen of another.
>>
> 
> *[F]*
> Forgive my ignorance. What is a "WSDL wrapper"? I guess that is another 
> "elephant" thingy. ;-) ... We are just talking message parts here in the 
> paragraph of the proposal. Any implication to "extra data assocated with 
> 'WSDL wrapper" is purely reader's extrapolation (or even imagination), 
> which is outside the scope of the spec.
> 
> If you think you are just trying to suggest an alternative paragraph but 
> to define the same semantics (as you put it, "six of one, 1/2 dozen of 
> another"), please feel free to suggest a variant version. 
> 
>> "(That is, "selectionFailure" checking from BPEL 1.1 is retained.)"
>>
>> I'd remove the 1.1 reference as it is likely to cause confusion rather 
>> than clarity. After all, exactly how did 1.1 define selectionFailure 
>> semantics? It's a question we are better off not trying to answer.
>>
> 
> *[G]*
> I totally agree with you here. :-) That is an overlook. I forgot to 
> remove that sentence in the formal proposal.
> 
>> "After the node is yielded from the source, the "string()" function 
>> will be applied to the node to obtain its string-value as the source 
>> content, if the default XPath 1.0 binding is used in the from-spec. If 
>> the other expression language is used, a function other than 
>> "string()" may be applied to the node to obtain the source content"
>>
>> I think this should be defined in terms of Infoset by specifying a 
>> string of CharIIs in doc order. We can then put in a note saying that 
>> in the case of XPATH 1.0 this maps to the string() function. Although 
>> I'm sure there will exist some subtle difference that will make our 
>> lives hell but such is life.
>>
> 
> *[H]*
> I tend to agree with you here. The doc order part is a part of TII 
> definition, I will just reuse that defintion here. How about the 
> following new text?
> ---------------------------------------------
> After the Information Item is yielded from the source, a TII will be 
> computed based on the source Information Item as the source content.   
> The "string()" function MUST be applied to the source Information Item 
> to obtain its string-value as the source content, if the default XPath 
> 1.0 binding is used in the from-spec. If  another expression language is 
> used, a function other than XPath "string()" MAY be applied to the node 
> to obtain the source content
> ---------------------------------------------
> 
> 
>> "Handling Non-Infoset Data Item in <copy>"
>>
>> The whole slant of this section is a bit disturbing to me. These are 
>> not non-infoset items, they are just TIIs. I don't see why it's 
>> necessary to refer to them as non-infoset items? There is nothing an 
>> infoset which requires that infoset items necessarily be in a tree, 
>> fragments are fine.
>>
> *[I]*
> The purpose of that paragraph is to tell people those data objects (e.g. 
> number) are treated like TII during <copy> (similar to what you said). 
> But, they are not exactly TII in other contexts. E.g.:
> 
> ---------------------
> <assign>
>    <copy>
>          <from><literal>1.2300</literal><from>
>          <to variable="myFloatVar1" />
>   </copy>
>    <copy>
>          <from><literal>1.23</literal><from>
>          <to variable="myFloatVar2" />
>   </copy>
> </assign>
> ---------------------
> 
> ---------------------
> $myFloatVar1 = $myFloatVar2
> ---------------------
> should be true, as they are number objects.
> If they are 100% identical to TII, then the above evaluation will become 
> false.
> 
> 
>> "XML Namespace Preservation"
>>
>> A warning needs to go at the end of this section to explicitly state 
>> that if non-XML Schema aware languages (e.g. XPATH 1.0) are used then 
>> it is possible for QNAME values to become invalid due to prefix 
>> conflicts. This really needs to be pointed out with an example. It 
>> isn't obvious and it is important.
>>
> *[J]*
> Personally, I am open to that addition of this kind of warning 
> paragraph. Again, could you draft that  paragraph?
> 
> 
> Thanks!
> 
> 
> Regards,
> Alex Yiu
> 
> 
> 
> 
>>
>>     Yaron
>>
>>
>>
>>
>>
>>
>>
>>
>> Alex Yiu wrote:
>>
>>>
>>>
>>> Hi all,
>>>
>>> This is the proposal draft for Issue 157.
>>> I will try to move it to a formal proposal within a couple of 
>>> business days.
>>>
>>> Thanks!
>>>
>>> Regards,
>>> Alex Yiu
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>>     Issue 157 -  Proposal Draft
>>>
>>>
>>> Last modified: July 29, 2005 - 1 pm PDT
>>>  
>>>
>>>
>>>       (A) Clean up section "Type Compatibility in Assignment" (formally
>>>       numbered as 9.3.1)
>>>
>>> Note:
>>>
>>>     * This cleanup will resolve Issue 51 as well.
>>>       (
>>>       
>>> http://www.choreology.com/external/WS_BPEL_issues_list.html#Issue51 )
>>>     * Yaron suggested that we may want to find a standardized way to
>>>       turn off schema-type static anslysis. That will be a part of Issue
>>>       9 discussion.
>>>       ( 
>>> http://www.choreology.com/external/WS_BPEL_issues_list.html#Issue9 )
>>>
>>>  
>>> Details of Changes:
>>> Under section "Type Compatibility in Assignment" (formally numbered 
>>> as 9.3.1):
>>>
>>> Change the section title from:  "Type Compatibility in Assignment"  
>>> to "Type Compatibility in Copy Operations"
>>>
>>> Refine the first paragraph and first two bullets as follows (the 
>>> inserted texts are highlighted by underlines)
>>> --------------------------
>>> For a copy operation to be valid, the data referred to by the from 
>>> and to specifications MUST be of compatible types. The following 
>>> points make this precise:
>>>
>>>     * The selection result of from-spec is a variable of a WSDL message
>>>       type and the selection  result of to-spec is a variable of a WSDL
>>>       message type. In this case both variables MUST be of the same
>>>       message type, where two message types are said to be equal if
>>>       their qualified names are the same.
>>>     * The selection result of from-spec is a variable of a WSDL message
>>>       type and the selection result of to-spec is not, or vice versa.
>>>       This is not legal because parts of variables, selections of
>>>       variable parts, or endpoint references cannot be assigned to/from
>>>       variables of WSDL message types directly.
>>>
>>> --------------------------
>>>
>>>
>>> Change the third bullet and last paragraph FROM:
>>> ----------------------------------
>>>
>>>     * In all other cases, the types of the source and destination are
>>>       XML Schema types or elements, and the constraint is that the
>>>       source value MUST possess the element or type associated with the
>>>       destination. Note that this does not require the types associated
>>>       with the source and destination to be the same. In particular, the
>>>       source type MAY be a subtype of the destination type. In the case
>>>       of variables defined by reference to an element, moreover, both
>>>       the source and the target MUST be the same element.
>>>
>>>
>>> The semantics of a process in which any of the matching constraints 
>>> above is violated is undefined.
>>> ----------------------------------
>>> TO:
>>> ----------------------------------
>>>
>>>     * In all other cases, if the selection results of  from-spec (i.e.
>>>       source) and to-spec (i.e. destination) are XML Infoset Items or
>>>       data items in an XML data model, and the XML Schema types of those
>>>       selections are known, then the source value MUST possess the type
>>>       associated with the destination. Note that this does not require
>>>       the types associated with the source and destination to be the
>>>       same. In particular, the source type MAY be a subtype of the
>>>       destination type. This kind of XML Schema type checking can be
>>>       done during static analysis time or runtime or both. A BPEL
>>>       processor MAY perform static analysis of expression/query language
>>>       to check whether this compatible type rule is observed and reject
>>>       a process definition if the rule is violated. When a BPEL
>>>       processor adopts an XML data model which is XML Schema type aware,
>>>       a BPEL processor MAY perform the same check during runtime. If a
>>>       BPEL processor detects the violation at runtime,
>>>       bpws:mismatchedAssignmentFailure fault MUST be thrown. However,
>>>       since XPath 1.0 data model is not schema aware, no XML Schema type
>>>       checking is performed at <copy> operation during runtime, when the
>>>       default XPath 1.0 expression/query language binding is used.
>>>
>>> ----------------------------------
>>>
>>>
>>>       (B) Insert a new section on "Selection Result of Copy Operations"
>>>
>>> Insert a new section on "Selection Result of Copy Operations" before 
>>> the section of "Type Compatibility ..." to state the replacement and 
>>> XML information item nature of <copy>. Here is the details of that 
>>> section:
>>>
>>> ----------------------------------
>>> Selection Result of Copy Operations
>>>
>>> There are 11 different types of information items in the XML Infoset 
>>> model. Most of them are not relevant in the context of XML data 
>>> manipulation as performed by <copy> operation. For example, Process 
>>> Instruction Information Item, Comment Infirmation Item and Document 
>>> Type Declaration Information Item.
>>>
>>> The selection result of the from-spec and to-spec used within <copy> 
>>> operation MUST be one of the following three information items: 
>>> Element Information Item (EII), Attribute Information Item (AII) or 
>>> Text Information Item (TII). Note: EII and AII are defined in 
>>> [Infoset], while TII is defined to bridge the gap between Inforset 
>>> Model and other common XML data model, such as, XPath 1.0 data model. 
>>> Please see detailed definition of TII below.
>>>
>>> If the selection result of a from-spec or a to-spec belongs to other 
>>> kinds of data items, a bpws:selectionFailure fault MUST be thrown. 
>>> Note that if any of the unsupported Information Items are contained 
>>> in the selection result they will be preserved, the restriction is 
>>> only that they cannot be selected directly as the top level item by 
>>> the from-spec or to-spec.
>>>
>>> *Definition of Text Information Item (TII): *
>>> Text Information Item (TII) is a sequence of zero or more CII 
>>> according to the document order. When it is mapped to XPath 1.0 
>>> model, it is a generalization of String-Value (which has zero or more 
>>> characters) and Text Node (which has one or more characters). RValue 
>>> of a TII can be mapped to a String-Value or a Text Node in XPath 1.0, 
>>> while LValue of a TII can be only mapped to a Text node.
>>>
>>> In WS-BPEL, <copy> operation is essentially a one-to-one replacment 
>>> operation. That implies the from-spec and to-spec MUST select exactly 
>>> one information item, which include the case of one TII. Also note 
>>> that this restriction means that literal values can only contain 
>>> either a TII or a single EII as its top level value..
>>> ----------------------------------
>>>
>>> Adjust a bullet in section "Assignment" to fit the clarification of 
>>> TII definition
>>> FROM:
>>> ------------------------
>>> a sequence of one or more character information items: this is mapped 
>>> to a Text Node in the data model of XPath 1.0
>>> ------------------------
>>> TO:
>>> ------------------------
>>> a sequence of zero or more character information items: this is 
>>> mapped to a Text Node or a String in the data model of XPath 1.0
>>> ------------------------
>>>
>>>
>>>       (C) Insert a new section on "Replacement Logic of Copy Operations"
>>>
>>> ----------------------------------
>>> Replacement Logic of Copy Operations
>>>
>>> Replacement Logic for WSDL Message Variables
>>>
>>> When the from-spec and to-spec of  a <copy> operation select WSDL 
>>> message variables, the  following replacement logic will be executed:
>>> All existing message parts in the destination WSDL message variable 
>>> (referred by the to-spec) will be removed and all existing message 
>>> parts in the source WSDL message variable (referred by the from-spec) 
>>> will be copied and added to destination WSDL message variable.
>>>
>>>
>>> Replacement Table for XML Data Item:
>>>
>>> When the from-spec and to-spec select one of three information items, 
>>> the following replacement table defines the behavior of <copy> 
>>> operation:
>>>
>>> Src\Target
>>>     EII
>>>     AII
>>>     TII
>>> EII
>>>     RE
>>>     RC
>>>     RC
>>> AII
>>>     RC
>>>     RC
>>>     RC
>>> TII
>>>     RC
>>>     RC
>>>     RC
>>>
>>>
>>>
>>> Definition
>>>
>>>     * RE (Replace-Element-properties): Remove all [children] and
>>>       [attributes] properties of the destination EII. Then, copy and add
>>>       all [children] and [attributes] properties of the source EII to
>>>       the desitnation EII. An optional replaceElementName is provided to
>>>       further refine the behavior of <copy> operation:
>>>           o If replaceElementName attribute at <copy> is set to "yes",
>>>             an extra replacement step will be performed to replace the
>>>             target element-name with the source element-name. (i.e.
>>>             [namespace name] and [local name] properties).           
>>> o When  replacementElementName is set to "yes", the selection
>>>             result of from-spec and to-spec MUST be elements. A BPEL
>>>             processor MAY enforce this checking during static analysis
>>>             of expression/query language. If violation is detected
>>>             during runtime, a bpws:selectionFailure fault MUST be 
>>> thrown.
>>>           o The default of this replaceElementName is "no" - not
>>>             replacing target element name.
>>>           o This attribute is added to support subsitutionGroup pattern
>>>             in XML Schema.
>>>
>>>     * RC (Replace-Content):
>>>           o How to obtain the source content
>>>                 + The source (from-spec) MUST yield one and only one
>>>                   node. Otherwise, selectionFailure fault MUST be
>>>                   thrown. (That is, "selectionFailure" checking from
>>>                   BPEL 1.1 is retained.)
>>>                 + After the node is yielded from the source, the
>>>                   "string()" function will be applied to the node to
>>>                   obtain its string-value as the source content, if the
>>>                   default XPath 1.0 binding is used in the from-spec. If
>>>                   the other expression language is used, a function
>>>                   other than "string()" may be applied to the node to
>>>                   obtain the source content
>>>           o How to replace:
>>>                 + If the source is an EII with an xsi:nil="true",
>>>                   selectionFailure fault MUST be thrown. (That checks
>>>                   are preformed during EII-to-AII or EII-to-TII copy).
>>>                 + If the destination is an EII, remove all [children]
>>>                   properties (if any) and add the source content TII  as
>>>                   the child of the EII.
>>>                 + If the destination is an AII, replace the value of AII
>>>                   with the TII from the source.
>>>                 + If the destination is a TII, replace the TII in the
>>>                   destination with the TII from the source.
>>>
>>> Note: Information items referenced by the to-spec MUST be a Lvalue. 
>>> In XPath 1.0 data model, only Text Node can constitute a LValue of TII.
>>>
>>>
>>> Using <copy> to initialize variables
>>> When the destination selected by to-spec in <copy> is uninitialized, 
>>> the destination variable or message part will be initialized first 
>>> before executing the above replacement logic. Details of 
>>> initialization are:
>>>
>>>     * For complex type and simple type variables, a skeleton structure,
>>>       composed of a DII and an anonymous EII (Document Element), will be
>>>       created as an integral part of the initialization <assign>/<copy>
>>>       operation. After the skeleton structure, the above "replacement"
>>>       logic can be reused.
>>>     * For element based variables, a skeleton structure, composed of a
>>>       DII and an EII (Document Element) with the name matching the
>>>       element name used in variable declaration, will be created as an
>>>       integral part of the initialization <assign>/<copy> operation.
>>>       After the skeleton structure, the above "replacement" logic can be
>>>       reused.     * For message part, the above two pieces of logic 
>>> is reused, since a
>>>       message part is either of a simple type, a complex type, an 
>>> element.
>>>
>>>
>>> Handling Non-Infoset Data Item in <copy>
>>>
>>> Simple type variables and values are allowed to manifested as 
>>> non-Infoset data objects, such as, boolean, string, float defined in 
>>> XPath 1.0. Also, some expressions can yield such a non-Infoset data 
>>> object. For example:
>>>         <from> number($order/amt) * 0.8 </from>
>>>
>>> To consistently apply the replacement logic defined above, these 
>>> non-Infoset data is handled as if they are Text Infoset Item (TII). 
>>> The handled-as-TII logic is achieved through "to-string" data 
>>> conversion, as TII resembles a string object.
>>>
>>> To be more specific, when XPath 1.0 data model is used in WS-BPEL, 
>>> the "string (object)" will be used to convert boolean or number 
>>> object to String / TII. ( 
>>> http://www.w3.org/TR/1999/REC-xpath-19991116#function-string )
>>>
>>> Please note: the conversion is used to describe the expected result 
>>> of <copy>. A WS-BPEL processor MAY skip the actual conversion for 
>>> optimization if the result of <copy> remains the same and the 
>>> conversion is redundant.
>>>
>>> XML Namespace Preservation
>>> During <copy> operation, the [in-scope namespaces] properties 
>>> (similar to other XML Infoset Item properties) from the source MUST 
>>> be preserved in the result at the destination. When variables are 
>>> serialized into the XML-based text form, a WS-BPEL processor will 
>>> make use of a namespace-aware XML infrastructure will add xmlns 
>>> related attributes in XML-based text.
>>>
>>> Given the replacement logic definition above, there are no true 
>>> conflicts of XML namespace declaration between the source (i.e. 
>>> selection result of from-spec) and destination (i.e. self-or-parent 
>>> of the selection result of to-spec) in most of cases. XML namespace 
>>> mechanism is flexible enough to handle those cases. For example:
>>>
>>> <foo:bar xmlns:foo="http://foo.com"; <http://foo.com>>     <!-- this 
>>> "foo:bar" element is pointed
>>>         by to-spec as the destination of copy -->
>>>    <foo:abc xmlns:foo="http://foo2.com"; <http://foo2.com> />
>>>    <!-- this "foo:bar" element is pointed
>>>         by to-spec as the destination of copy -->
>>> </foo:bar>
>>>
>>> However, there are some cases where a non-trivial conflict rises. For 
>>> example:
>>> v1:
>>> <foo:bar xmlns:foo="http://foo.com"; <http://foo.com> 
>>> foo:attr="valueA" />
>>> v2: (before copy)
>>> <p:parent xmlns:p="http://foo.com"; <http://foo.com> 
>>> xmlns:foo="http://foo.some.com"; <http://foo.some.com>>
>>>     <p:bar foo:attrX="valueY" />
>>> </p:parent>
>>>
>>> With the following copy operation, there would be conflict of prefix 
>>> usage of "foo" used in foo:attr and foo:attrX, which are associated 
>>> with "http://foo.com"; <http://foo.com> and "http://foo.some.com"; 
>>> <http://foo.some.com>:
>>>
>>> <assign>
>>>     <copy>
>>>        <from>$v1</from>
>>>        <to xmlns:p="http://foo.com"; <http://foo.com>>$v2/p:bar</to>
>>>     <copy>
>>> </assign>
>>>
>>> To resolve conflict, the underlying namespace aware infrastructure is 
>>> allowed to rename prefixes to non-conflicting ones if necessary. For 
>>> example, after the copy operation is done, V2 may look like the 
>>> following:
>>>
>>> v2: (after copy)
>>> <p:parent xmlns:p="http://foo.com"; <http://foo.com> 
>>> xmlns:foo="http://foo.some.com"; <http://foo.some.com>>
>>>     <p:bar xmlns:foo2="http://foo.com"; <http://foo.com> 
>>> foo2:attr="valueA" />
>>> </p:parent>
>>>
>>> or
>>>
>>> <p:parent xmlns:p="http://foo.com"; <http://foo.com> 
>>> xmlns:foo="http://foo.some.com"; <http://foo.some.com>>
>>>     <p:bar p:attr="valueA" />
>>> </p:parent>
>>>
>>> Details of renaming prefixes are dependent on the underlying 
>>> namespace aware infrastructure and they are outside of the scope of 
>>> this specification. As the above example illustrates, there are 
>>> usually more than one way to rename prefixes to handle this conflict 
>>> to produce XML namespace consistent data.
>>>
>>> When a schema-aware data model is used at runtime in WS-BPEL, similar 
>>> prefix renaming mechanism may be used to handle namespace declaration 
>>> conflicts in usage situation of QName values of attribute or text forms.
>>>
>>> ----------------------------------
>>>
>>>
>>> In section "Assignment", change the <copy> syntax
>>> FROM:
>>> --------------------------
>>>         <copy>
>>>           from-spec
>>>           to-spec
>>>         </copy>
>>> --------------------------
>>> TO:
>>> --------------------------
>>>         <copy replaceElementName="yes|no"?>
>>>           from-spec
>>>           to-spec
>>>         </copy>
>>> --------------------------
>>>
>>> Insert a paragraph before the paragraph starting with "An optional 
>>> validate attribute can be used with the assign activity" as follows:
>>> --------------------------
>>> An optional replaceElementName attribute at the <copy> construct can 
>>> be used to specify whether the element name of the destination 
>>> (selected by to-spec) will be replaced by the element name of the 
>>> soruce (selected by from-spec) during the copy operation. For 
>>> details, please see section "Replacement Logic of Copy Operations".
>>> --------------------------
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>       END
>>>
>>>
>>>
>>
> 

WS-BPEL_Issue_157_Proposal.doc



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