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] Assigning the Value of the Service-Ref Element

Hi, Andrew,

I saw two emails asking about how to make use of service-ref element in BPEL.
Particularly how to compile-time checking. Hopefully, this email will be able to answer the questions in your two emails.

Let's spilt the situation in multiple parts:
  • Deployment time: In a deployment descriptor (outside of the scope of this TC), a partnerLink will be bound to a static message endpoint. The content of endpoint can be verified at deployment time.
  • Assign:
    • from one partnerLink to another partnerLink: the content endpoint is already verified (at least in terms from service-ref element viewpoint.)
    • from one XML element variable to a parterLink:
      • If the schema of the XML element variable references to bpws:service-ref directly, then it seems to me that we can do runtime checking. Compile-time checking is not that feasible in that case.
      • If the schema of XML element references to an element of a restricted type derived from "bpws:ServiceRefType", then we can extend the scope of checking of the endpoint reference content much boarder. The checking can happen during compile-time or whenever data is validated against the schema. I believe the direct assignment from a restricted type to a parent type is legal. (That will be clarified in Issue 157.) (I also attache a sample XSD for this restricted type).
      • If the schema of the XML element references to a particular addressing schema without referencing through bpws:service-ref or its derived type, the assignment of the variable to the partnerLink is still feasible. The assignment can be done by either two copy operations within one assign (one copy to create an empty service-ref with an empty target address element, the second one copy the address data from the variable) or using a from-spec that support a language similar to XQuery: e.g.:


I hope I have answered your questions. :-)  (And, not confusing u ...)

Alex Yiu

andrew.francis@mail.mcgill.ca wrote:

I would like to soon implement section Nine (variables,
expressions, and assignment) of the BPEL4WS specification.
I am trying to figure out how to implement partnerLinks,
keeping issue 34 and 152 in mind.

I am trying to figure out the machinery for service-ref.
I have a question: how are the values for the service-ref
element and more specifically, the reference-schema
acquired? Since service-element is partner specific
and one binds this partner specific information essentially
at runtime (you pick an actual port/end-point), it seems
to me that service-ref is difficult to use for compile
time checking. For example, how to I figure out if a
variable or variable property's type agree with a
partnerlink's EPR, if I can only really only know this
at runtime? At best I can only do a runtime  type checking
for what the specification calls "undefined behaviour."
It also seems to me that this information is difficult
to acquire a priori. Is my compiler/BPEL tool looking at
a WSDL or a UDDI tModel?

Do I really need all this machinery to invoke say
Amazon's, Google's, or most currently existing web

I am interested to hear how others are approaching this


To unsubscribe from this mailing list (and be removed from the roster of the OASIS TC), go to http://www.oasis-open.org/apps/org/workgroup/wsbpel/members/leave_workgroup.php.


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://foo.com"; 
	<xs:import namespace="http://schemas.xmlsoap.org/ws/2004/03/business-process/"; 
	<xs:complexType name="BarServiceRefType">
			<xs:restriction base="bpws:ServiceRefType">
					<xs:element ref="foo:barAddr"/>
	<xs:element name="barWrapper" type="foo:BarServiceRefType"/>
	<xs:element name="barAddr" type="xs:string" />

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