INFOSYS290 Section3 Lecture12

Uploaded from authorPOINTLite
Views:
 
Category: Entertainment
     
 

Presentation Description

No description available.

Comments

Presentation Transcript

Web Services-Oriented Business Processes: WS-BPEL and WS-BusinessActivity: 

Web Services-Oriented Business Processes: WS-BPEL and WS-BusinessActivity INFOSYS 290, Section 3 Web Services: Concepts, Design and Implementation Adam Blum ablum@good.com November 18, 2004

Agenda: 

Agenda BPEL Motivation and Specification BPEL Products Oracle WS-Coordination and WS-BusinessActivity

BPEL Precursors: 

BPEL Precursors ebXML BPSS WSCI BPML XLang

Problems in Describing Business Processes: 

Problems in Describing Business Processes Business protocols include data dependent behavior They should describe exceptional behavior Include how to recover from such problems Long running processes have multiple units of work It should be possible to describe how to coordinate the success or failure of those units

Characteristics of BPEL’s Solution: 

Characteristics of BPEL’s Solution Message properties identify “public” aspects of business process BPEL can define a business protocol role using notion of abstract process Private aspects of behavior are hidden Can also use BPEL to describe executable process Provides ease of app building for web services and XML oriented applications The two models (abstract and executable) make it possible to export public aspects of business protocols (process or role templates) between the two types of processes There is a common core shared to both usage patterns BPEL separates common core from extension required for each usage pattern Interactions occur through Web Services

Example: 

Example

Process Definition: 

Process Definition <partnerLinks> defines different parties which interact with business process <variables> - allows maintaining state and history <faultHandlers> define activities that must be performed in response to errors Activity description

Process Example: 

Process Example <process name="purchaseOrderProcess" targetNamespace="http://acme.com/ws-bp/purchase" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:lns="http://manufacturing.org/wsdl/purchase"> <partnerLinks> <partnerLink name="purchasing“ partnerLinkType="lns:purchasingLT“ myRole="purchaseService"/> <partnerLink name="invoicing" partnerLinkType="lns:invoicingLT" myRole="invoiceRequester" partnerRole="invoiceService"/> <partnerLink name="shipping" partnerLinkType="lns:shippingLT“ myRole="shippingRequester" partnerRole="shippingService"/> <partnerLink name="scheduling" partnerLinkType="lns:schedulingLT" partnerRole="schedulingService"/> </partnerLinks>

Top Level Sequence: 

Top Level Sequence <sequence> <receive partnerLink="purchasing" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="PO"> </receive> <flow> <links> <link name="ship-to-invoice"/> <link name="ship-to-scheduling"/> </links> <sequence>..</sequence> <sequence>..</sequence> <sequence>..</sequence> </flow> <reply partnerLink=“purchasing” portType=“lns:purchaseOrderPT” operation=“sendPurchaseOrder” variable=“Invoice”> </sequence> </process> .

Next Level Sequence: 

Next Level Sequence <sequence> <assign> <copy> <from variable="PO" part="customerInfo"/> <to variable="shippingRequest" part="customerInfo"/> </copy> </assign> <invoke partnerLink="shipping" portType="lns:shippingPT" operation="requestShipping" inputVariable="shippingRequest" outputVariable="shippingInfo"> <source linkName="ship-to-invoice"/> </invoke> <receive partnerLink="shipping" portType="lns:shippingCallbackPT" operation="sendSchedule" variable="shippingSchedule"> <source linkName="ship-to-scheduling"/> </receive> </sequence>

Example Described: 

Example Described <sequence> Activities are performed in order Request is received, processed (inside <flow> with concurrent activities), reply is sent back to customer with approval status <flow> element consists of three concurrence <sequence>s Synchronization dependencies between activities expressed as <link>s Information passed between activities through globally visible data variables

BPEL Grammar: Process: 

BPEL Grammar: Process process name="ncname" targetNamespace="uri“ queryLanguage="anyURI"? - defaults to XPath expressionLanguage="anyURI"? – defaults to XPath suppressJoinFailure="yes|no"? – defaults to no enableInstanceCompensation="yes|no"? – no abstractProcess="yes|no"? – defaults to no

BPEL Grammar: Partners: 

BPEL Grammar: Partners <partnerLinks>? <!-- Note: At least one role must be specified. --> <partnerLink name="ncname" partnerLinkType="qname" myRole="ncname"? partnerRole="ncname"?>+ </partnerLink> </partnerLinks> <partners>? <partner name="ncname">+ <partnerLink name="ncname"/>+ </partner> </partners>

BPEL Grammar: Variables and Handlers: 

BPEL Grammar: Variables and Handlers <variables> <variable name=“ncname” messageType=“qname”? type=“qname”? Element=“qname”?/>+ <variables> <faultHandlers>? <catch faultName=“qname”? faultVariable=“ncname”?>* Activity </catch> <catchAll>? activity <catchAll>? Activity </catchAll> </faultHandlers> <compensationHandler>? Activity </compensationHandler> <eventHandlers>? <onMessage partnerLink=“name” portType=“qname” operation=“ncname” variable=“ncname”?> <correlations>? <correlation set=“ncname” intitiate=“yes|mo”?>+ </correlations> Activity <onAlarm for=“duration-expr”? Until=“deadline-=exrp”?>* </onAlarm> </eventHandlers>

Activity: 

Activity <receive> - allows business process to do blocking wait for matching message <reply> - Allows business process to send a message in reply to message received through <receive> <invoke> -Invokes a business process one-way or request response <assign> - Updates values with new data <throw> -Generates a fault for fault handler to catch <terminate> - terminates process <wait> - duration or until absolute time <empty> - nullop, useful for synchronization of concurrent acitvities

Activity Control Flow: 

Activity Control Flow <sequence> - perform activities in order <switch> - choose one branch <while> - continuously execute activity until criteria is met <pick> - wait for given message to arrive or timeout alarm to go off <flow> - execute activities in parallel (possibly modified by links) <scope> - nested activity with own variables, fault handlers, compensation handlers <compensate> - invokes compensation activity on inner scope that has completed normally (e.g. if other scopes have failed).

Business Process Lifecycles: 

Business Process Lifecycles WSDL - Stateless model of client server actions with request-reply or uncorrelated asynchronous one-way messages BPEL – represents long running interactions Beginning, defined behavior during lifetime, and end Example Seller receives Purchase Order Seller acknowledges Purchase Order if it can be fulfilled Seller sends Advanced Ship Notification Seller sends Invoice Seller business process remembers state of each interaction separately BPEL definition = template for such business process instances

BPEL Process Instantiation and Termination: 

BPEL Process Instantiation and Termination Instantiation always implicit versus explicit process instance creation Activities which receive messages (receive, pick) set createInstance attribute to “yes” Termination occurs When activities complete (normal) When fault reaches the process scope (abnormal) When <terminate> is used for explicit termination (abnormal) If compensation handler is available, process can be compensated for after normal completion

Partner Link Types: 

Partner Link Types WSDL describes a single partner interface Partner Links describe peer-to-peer conversational partner relationships Define messages and port types used in both directions Defines “roles” played by each of the services One role for each portType Defined in the WSDL itself using WSDL 1.1 extensibility Example. <partnerLinkType name="BuyerSellerLink" xmlns="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"> <role name="Buyer"> <portType name="buy:BuyerPortType"/> </role> <role name="Seller"> <portType name="sell:SellerPortType"/> </role> </partnerLinkType>

PartnerLinkType Grammar: 

PartnerLinkType Grammar <partnerLinkType name="BuyerSellerLink" xmlns="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"> <role name="Buyer"> <portType name="buy:BuyerPortType"/> </role> <role name="Seller"> <portType name="sell:SellerPortType"/> </role> </partnerLinkType>

Partner: 

Partner Partner definition (optional) covers subset of partner links in the process Partner definitions MUST NOT overlap, that is, a partner link MUST NOT appear in more than one partner definition. Example <partner name="SellerShipper" xmlns="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"> <partnerLink name="Seller"/> <partnerLink name="Shipper"/> </partner>

Message Flow: 

Message Flow Three methods Receive Reply Invoke Questions Why is PartnerLink (or Partner) required What no timeout on Invoke?

Data Handling: Variables: 

Data Handling: Variables Business processes define stateful interactions of messages between partners State: messages exchanged+intermediate data Variables: store this state Grammar <variables> <variable name="ncname" messageType="qname"? type="qname"? element="qname"?/>+ </variables> One of messageType (WSDL message type), type (XML Schema simple type), or element (XML Schema element) is used Example <variable xmlns:ORD="http://example.com/orders" name="orderDetails" messageType="ORD:orderDetails"/>

Assign: 

Assign Grammar <assign standard-attributes> standard-elements <copy>+ from-spec to-spec </copy> </assign> Example <variable name="c1" messageType="x:person"/> <variable name="c2" messageType="x:person"/> <variable name="c3" element="x:address"/> <assign> <copy> <from variable="c1"/> <to variable="c2"/> </copy> <copy> <from variable="c1" part = "address"/> <to variable="c3"/> </copy> </assign>

Message Properties: 

Message Properties naming distinguished data elements within a message Example usage naming a token for correlation of service instance with message social security number might be used to identify an individual taxpayer in a long-running multiparty business process regarding a tax matter

Correlation Property Example: 

Correlation Property Example <definitions name="properties“ …> <bpws:property name="customerID" type="xsd:string"/> <bpws:property name="orderNumber" type="xsd:int"/> <bpws:property name="vendorID" type="xsd:string"/> <bpws:property name="invoiceNumber" type="xsd:int"/> …. </definitions>

Correlation Property Aliases..: 

Correlation Property Aliases.. <definitions name="correlatedMessages" <types> <xsd:schema> <xsd:complexType name="PurchaseOrder"> <xsd:element name="CID" type="xsd:string"/> <xsd:element name="order" type="xsd:int"/> ... </xsd:complexType> <xsd:complexType name="Invoice"> <xsd:element name="VID" type="xsd:string"/> <xsd:element name="invNum" type="xsd:int"/> </xsd:complexType> </xsd:schema> … <bpws:propertyAlias propertyName="cor:customerID" messageType="tns:POMessage" part="PO" query="/PO/CID"/> <bpws:propertyAlias propertyName="cor:orderNumber" messageType="tns:POMessage" part="PO" query="/PO/Order"/> <bpws:propertyAlias propertyName="cor:vendorID" messageType="tns:InvMessage" part="IVC" query="/IVC/VID"/> <bpws:propertyAlias propertyName="cor:invoiceNumber" messageType="tns:InvMessage" part="IVC" query="/IVC/InvNum"/> ... </definitions>

Implementations: 

Implementations Oracle (Collaxa) Oracle BPEL Process Manager 2.0 IBM Experimental BEA Free supported tool Cooperation with IBM on BPEL4J Microsoft? Next version of BizTalk FiveSight?

Oracle BPEL Process Manager 2.0: 

Oracle BPEL Process Manager 2.0 demo

Why I Hate BPEL: 

Why I Hate BPEL Mixes in internal implementation and external interfaces Mixes transaction specification with everythng else Statically defined transaction participants and units of work It’s a programming language

How About A Lighterweight Approach to Facilitating Longrunning Business Processes with Dynamic Participants?: 

How About A Lighterweight Approach to Facilitating Longrunning Business Processes with Dynamic Participants?

WS-BusinessActivity Specification: 

WS-BusinessActivity Specification Released yesterday Went to feedback workshop in April For long-running, complex distributed processes Builds on WS-Addressing, WS-Policy and WS-Coordination Parallel to WS-AtomicTransactions IMHO not as crucial as WS-BA

“Business Activity”: 

“Business Activity” May consume many resources over long duration Many atomic transactions may be involved Status of individual tasks may be seen and can affect external environment Responding to request may take a very long time If exception means Activity needs to be “undone”, “Abort” will not work -> Compensation actions need to be defined The list of components and participants may be dynamic

Business Activity Attributes: 

Business Activity Attributes Participant tasks can enter and leave business activity Dynamic participant lists even during processing (very different from atomic TX Nested scopes Allow app to choose from results of scopes Allow definition and application of compensating actions for completed scopes Participant tasks can announce their outcome (without being queried) Participants can perform “tentative operation” Helps if the participant operation needs to be “compensated” and it would be hard to write “compensating action”

WS-Coordination: 

WS-Coordination

WS-Coordination: 

WS-Coordination Applications use Activation service to create coordination context for an activity Coordination context sent to other interested applications Application which receives coordination context uses Registration service to register participation in activity

Coordination Contexts: 

Coordination Contexts Activity identifier Coordination type Endpoint reference to Registration service Optional expiration time Extensibility elements (for free with endpoint reference)

Example: 

Example <wscoor:CoordinationContext> <wsu:Expires>2012-04-22T00:00:00.0000000-07:00</wsu:Expires> <wsu:Identifier> uuid:0f05758b-1f0d-4248-a911-90f7bd18ae52 </wsu:Identifier> <wscoor:CoordinationType> http://schemas.xmlsoap.org/ws/2003/09/wsat </wscoor:CoordinationType> <wscoor:RegistrationService> <wsa:Address> http://Business456.com/MyCoordinationService/RegistrationCoordinator </wsa:Address> <wsa:ReferenceProperties> <mstx:ex xmlns:mstx=http://schemas.microsoft.com/wsat/extensibility mstx:transactionId="uuid:cfb01dc0-5073-405a-a3aea6038ecc476e"/> </wsa:ReferenceProperties> </wscoor:RegistrationService> </wscoor:CoordinationContext>

Example Coordination: 

Example Coordination

WS-BusinessActivity Coordination Types and Protocols: 

WS-BusinessActivity Coordination Types and Protocols Types http://schema.xmlsoap.org/ws/2004/10/wsba/AtomicOutcome Required for all WS-BA coordinators http://schema.xmlsoap.org/ws/2004/10/wsba/MixedOutcome Optional Protocols BusinessAgreementWithParticipantCompletion BusinessAgreementWithCoordinatorCompletion

BusinessAgreementWithParticipantCompletion (as Seen by Participant) State Diagram: 

BusinessAgreementWithParticipantCompletion (as Seen by Participant) State Diagram

Messages: 

Messages - <wsdl:message name="Complete">   <wsdl:part name="parameters" element="wsba:Complete" />   </wsdl:message> - <wsdl:message name="Completed">   <wsdl:part name="parameters" element="wsba:Completed" />   </wsdl:message> - <wsdl:message name="Close">   <wsdl:part name="parameters" element="wsba:Close" />   </wsdl:message> - <wsdl:message name="Closed">   <wsdl:part name="parameters" element="wsba:Closed" />   </wsdl:message> - <wsdl:message name="Cancel">   <wsdl:part name="parameters" element="wsba:Cancel" />   </wsdl:message> - <wsdl:message name="Canceled">   <wsdl:part name="parameters" element="wsba:Canceled" />   </wsdl:message> - <wsdl:message name="Compensate">   <wsdl:part name="parameters" element="wsba:Compensate" />   </wsdl:message> - <wsdl:message name="Compensated">   <wsdl:part name="parameters" element="wsba:Compensated" />   </wsdl:message> - <wsdl:message name="Fault">   <wsdl:part name="parameters" element="wsba:Fault" />   </wsdl:message> - <wsdl:message name="Faulted">   <wsdl:part name="parameters" element="wsba:Faulted" />   </wsdl:message> - <wsdl:message name="Exit">   <wsdl:part name="parameters" element="wsba:Exit" />   </wsdl:message> - <wsdl:message name="Exited">   <wsdl:part name="parameters" element="wsba:Exited" />   </wsdl:message> - <wsdl:message name="GetStatus">   <wsdl:part name="parameters" element="wsba:GetStatus" />   </wsdl:message> - <wsdl:message name="Status">   <wsdl:part name="parameters" element="wsba:Status" />   </wsdl:message>

Coordinator PortType: 

Coordinator PortType <wsdl:portType name="BusinessAgreementWithParticipantCompletionCoordinatorPortType"> - <wsdl:operation name="CompletedOperation"><wsdl:input message="wsba:Completed" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Completed" />   </wsdl:operation> - <wsdl:operation name="FaultOperation"><wsdl:input message="wsba:Fault" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Fault" />   </wsdl:operation> - <wsdl:operation name="CompensatedOperation"<wsdl:input message="wsba:Compensated" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Compensated" />   </wsdl:operation> - <wsdl:operation name="ClosedOperation"><wsdl:input message="wsba:Closed" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Closed" />   </wsdl:operation> - <wsdl:operation name="CanceledOperation"><wsdl:input message="wsba:Canceled" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Canceled" />   </wsdl:operation> - <wsdl:operation name="ExitOperation"><wsdl:input message="wsba:Exit" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Exit" />   </wsdl:operation> - <wsdl:operation name="GetStatusOperation"><wsdl:input message="wsba:GetStatus" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/GetStatus" />   </wsdl:operation> - <wsdl:operation name="StatusOperation"><wsdl:input message="wsba:Status" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Status" />   </wsdl:operation>   </wsdl:portType>

Participant PortType: 

Participant PortType wsdl:portType name="BusinessAgreementWithParticipantCompletionParticipantPortType"> - <wsdl:operation name="CloseOperation">   <wsdl:input message="wsba:Close" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Close" />   </wsdl:operation> - <wsdl:operation name="CancelOperation">   <wsdl:input message="wsba:Cancel" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Cancel" />   </wsdl:operation> - <wsdl:operation name="CompensateOperation">   <wsdl:input message="wsba:Compensate" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Compensate" />   </wsdl:operation> - <wsdl:operation name="FaultedOperation">   <wsdl:input message="wsba:Faulted" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Faulted" />   </wsdl:operation> - <wsdl:operation name="ExitedOperation">   <wsdl:input message="wsba:Exited" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Exited" />   </wsdl:operation> - <wsdl:operation name="GetStatusOperation">   <wsdl:input message="wsba:GetStatus" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/GetStatus" />   </wsdl:operation> - <wsdl:operation name="StatusOperation">   <wsdl:input message="wsba:Status" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Status" />   </wsdl:operation>   </wsdl:portType>

BusinessAgreementWithCoordinatorCompletion : 

BusinessAgreementWithCoordinatorCompletion

Coordinator PortType: 

Coordinator PortType - <wsdl:portType name="BusinessAgreementWithParticipantCompletionParticipantPortType"> - <wsdl:operation name="CloseOperation">   <wsdl:input message="wsba:Close" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Close" />   </wsdl:operation> - <wsdl:operation name="CancelOperation">   <wsdl:input message="wsba:Cancel" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Cancel" />   </wsdl:operation> - <wsdl:operation name="CompensateOperation">   <wsdl:input message="wsba:Compensate" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Compensate" />   </wsdl:operation> - <wsdl:operation name="FaultedOperation">   <wsdl:input message="wsba:Faulted" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Faulted" />   </wsdl:operation> - <wsdl:operation name="ExitedOperation">   <wsdl:input message="wsba:Exited" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Exited" />   </wsdl:operation> - <wsdl:operation name="GetStatusOperation">   <wsdl:input message="wsba:GetStatus" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/GetStatus" />   </wsdl:operation> - <wsdl:operation name="StatusOperation">   <wsdl:input message="wsba:Status" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Status" />   </wsdl:operation>   </wsdl:portType> <!-- BusinessAgreementWithComplete Service   --> - <wsdl:portType name="BusinessAgreementWithCoordinatorCompletionCoordinatorPortType"> - <wsdl:operation name="CompletedOperation">   <wsdl:input message="wsba:Completed" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Completed" />   </wsdl:operation> - <wsdl:operation name="FaultOperation">   <wsdl:input message="wsba:Fault" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Fault" />   </wsdl:operation> - <wsdl:operation name="CompensatedOperation">   <wsdl:input message="wsba:Compensated" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Compensated" />   </wsdl:operation> - <wsdl:operation name="ClosedOperation">   <wsdl:input message="wsba:Closed" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Closed" />   </wsdl:operation> - <wsdl:operation name="CanceledOperation">   <wsdl:input message="wsba:Canceled" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Canceled" />   </wsdl:operation> - <wsdl:operation name="ExitOperation">   <wsdl:input message="wsba:Exit" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Exit" />   </wsdl:operation> - <wsdl:operation name="GetStatusOperation">   <wsdl:input message="wsba:GetStatus" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/GetStatus" />   </wsdl:operation> - <wsdl:operation name="StatusOperation">   <wsdl:input message="wsba:Status" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Status" />   </wsdl:operation>   </wsdl:portType>

Participant PortType: 

Participant PortType - <wsdl:portType name="BusinessAgreementWithCoordinatorCompletionParticipantPortType"> - <wsdl:operation name="CompleteOperation">   <wsdl:input message="wsba:Complete" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Complete" />   </wsdl:operation> - <wsdl:operation name="CloseOperation">   <wsdl:input message="wsba:Close" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Close" />   </wsdl:operation> - <wsdl:operation name="CancelOperation">   <wsdl:input message="wsba:Cancel" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Cancel" />   </wsdl:operation> - <wsdl:operation name="CompensateOperation">   <wsdl:input message="wsba:Compensate" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Compensate" />   </wsdl:operation> - <wsdl:operation name="FaultedOperation">   <wsdl:input message="wsba:Faulted" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Faulted" />   </wsdl:operation> - <wsdl:operation name="ExitedOperation">   <wsdl:input message="wsba:Exited" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Exited" />   </wsdl:operation> - <wsdl:operation name="GetStatusOperation">   <wsdl:input message="wsba:GetStatus" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/GetStatus" />   </wsdl:operation> - <wsdl:operation name="StatusOperation">   <wsdl:input message="wsba:Status" wsa:Action="http://schemas.xmlsoap.org/ws/2004/10/wsba/Status" />   </wsdl:operation>   </wsdl:portType>w

WS-Policy Assertions: 

WS-Policy Assertions SpecVersion Protocol Types Participant Completion Coordinator Completion Coordination Types AtomicOutcome MixedOutcome

References: 

References WS-BPEL BPEL4WS 1.1 spec http://www-128.ibm.com/developerworks/library/ws-bpel/#coreconceptsandusagepatterns WS-Coordination Spec, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/ws-coordination.asp WS-BusinessActivity Spec, ftp://www6.software.ibm.com/software/developer/library/WS-BusinessActivity.pdf Article on WS-BusinessActivity, http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnwebsrv/html/wsacoord.asp