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


Help: OASIS Mailing Lists Help | MarkMail Help

wsbpel-spec-edit message

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

Subject: Proposed changes to section 8.1

Section 8.1 as it currently exists is so abstract that even though it is 
titled 'motivation' for the Message Properties section it never actually 
uses the word property. I would therefore like to replace it with text 
that is concrete and focuses exclusively on the motivation for 
properties and their design. To that end I propose we replace the 
current section 8.1 text with:

It is common for different messages to carry the same data. For example, 
both a request and a response message may carry the same purchase order 
number, a fact that the receiver may very well use for correlation 
purposes. In theory a business process author should simply be ‘aware’ 
of where the purchase order is recorded in a message and, for example, 
be able to specify a query that points to the location where the 
purchase order data is to be set inside of the request message and be 
able to specify a different query to retrieve the purchase order 
information from the response. But requiring authors to not only know 
the two different locations in the two different message types but to 
also hard code those locations in their business process specifications 
tends to cause problems, especially if one of the messages is redefined. 
This is what led to the introduction of BPEL properties. A property is a 
way to separate out the value of a piece of common data from its 
location in any particular message type.

To fully enable the separation of the data’s value from its location 
properties are defined in two parts. The first part defines a property 
name and an associated type. The declaration of a property can be read 
as “If a property with this name is available on a message variable then 
the data associated with this property is both available and guaranteed 
to be of the specified type.”

To make a particular property available on a specific message type it is 
necessary to identify where the value associated with the property can 
be found in messages of that message type. The property alias is a 
mechanism to associated a query on a part of a message type definition 
with a particular property. The output of the query is required to be of 
the same type as the type specified in the property’s definition.
So, for example, in the previously described scenario a property called 
purchaseOrder may be declared. There would then be two property aliases 
defined, one for the request message and one for the response message. 
Each of the property aliases would reference the name of the 
purchaseOrder property and then provide a query unique to their message 
type identifying where in the message the desired value can be found.

Properties are not variables in the sense that they do not have an 
independent existence. They only exist as ‘projections’ of information 
from an underlying message variable. Whenever a property is accessed on 
a message the returned property value will equal the output of applying 
the query specified in the property alias for that message type against 
the current value of the message. Similarly when copying to a property 
on a message variable what actually occurs is that the value being 
copied is placed in the underlying message at the location identified by 
the query in the associated property alias definition.

Query languages such as XPATH 1.0 make it possible to specify queries 
whose output are not an individual attribute or element value. For 
example, a query could pull a value out of the message and then add 1 to 
it. In those cases there is no unambiguous way to handle assignment. So 
while it is legal to define property aliases of this type and to read 
the values any attempt to assign to a property on a message type where 
the property aliases query doesn’t resolve to an individual attribute or 
element value must fail.

Properties and property aliases are both defined inside of WSDL files 
because properties are so closely associated with message types which 
are themselves defined in WSDLs files. In addition properties are 
considered to be an integral part of the messageType definition and so 
likely to be used by any BPEL process that uses that messageType. 
Placing the property and property alias definitions in the WSDL file 
with the messageType encourages re-use.

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