SlideShare uma empresa Scribd logo
1 de 54
Business Process Execution Language for Web Services Version 1.1 5 May 2003 Student: Chao-Chen Chiang Advisor: Dr. Gwan-Hwan Hwang National Taiwan Normal University Department of Computer Science & Information Engineering Internet Computing Laboratory
Business Process Execution Language for Web Services BPEL4WS BPEL Pronounce “bipple” or “bee-pell”
 
Terminology Changes The following terminology changes have occurred •  Service Links  are now called  Partner Links •  Service Link Types  are now called  Partner Link Types •  Service References  are now called  Endpoint References •  Containers  are now called  Variables
Orchestration versus Choreography   ,[object Object],[object Object],[object Object],[object Object],Web services usually expose operations of certain applications or information systems. Consequently, combining several Web services actually involves the integration of the underlying applications and their functionalities Web services can be combined in two ways:
Orchestration In orchestration, which is usually used in private business processes,  a central process  (which can be another Web service) takes control of the involved Web services and coordinates the execution of different operations on the Web services involved in the operation
Choreography Choreography, in contrast, does not rely on a central coordinator. Rather,  each Web service  involved in the choreography knows exactly when to execute its operations and with whom to interact
Business processes ,[object Object],[object Object],[object Object],[object Object],BPEL4WS is meant to be used to model the behavior of  both  executable and abstract processes
Relationship with WSDL BPEL4WS depends on the following XML-based specifications:  WSDL 1.1, XML Schema 1.0,XPath 1.0 and WS-Addressing Schema Document <xs:schema> <xs:element/> </xs:schema> BPEL Document <process> <partnerLinks/> <variables/> <scope> <assign/> </scope> ... </process> WSDL Document <definitions> <partnerLinkTypes/> <types/> <message> <part type=&quot;&quot;> </message> ... </definitions>
The Structure of a Business Process <process name=&quot;ncname&quot; targetNamespace=&quot;uri&quot; queryLanguage=&quot;anyURI&quot;? expressionLanguage=&quot;anyURI&quot;? suppressJoinFailure=&quot;yes|no&quot;? enableInstanceCompensation=&quot;yes|no&quot;? abstractProcess=&quot;yes|no&quot;? xmlns=&quot;http://schemas.xmlsoap.org/ws/2003/03/business-process/&quot;> <partnerLinks>? <!-- Note: At least one role must be specified. --> <partnerLink name=&quot;ncname&quot; partnerLinkType=&quot;qname&quot; myRole=&quot;ncname&quot;? partnerRole=&quot;ncname&quot;?>+ </partnerLink> </partnerLinks> <partners>? <partner name=&quot;ncname&quot;>+ <partnerLink name=&quot;ncname&quot;/>+ </partner> </partners>
The Structure of a Business Process <variables>? <variable name=&quot;ncname&quot; messageType=&quot;qname&quot;? type=&quot;qname&quot;? element=&quot;qname&quot;?/>+ </variables> <correlationSets>? <correlationSet name=&quot;ncname&quot; properties=&quot;qname-list&quot;/>+ </correlationSets> <faultHandlers>? <!-- Note: There must be at least one fault handler or default. --> <catch faultName=&quot;qname&quot;? faultVariable=&quot;ncname&quot;?>* activity </catch> <catchAll>? activity </catchAll> </faultHandlers> <compensationHandler>? activity </compensationHandler>
The Structure of a Business Process <eventHandlers>? <!-- Note: There must be at least one onMessage or onAlarm handler. --> <onMessage partnerLink=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; variable=&quot;ncname&quot;?> <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;?>+ <correlations> activity </onMessage> <onAlarm for=&quot;duration-expr&quot;? until=&quot;deadline-expr&quot;?>* activity </onAlarm> </eventHandlers> activity </process>
Activity Basic Activities •  <receive> •  <reply> •  <invoke> •  <assign> •  <throw> •  <wait> •  <empty> Structured Activities •  <sequence> •  <switch> •  <while> •  <pick> •  <flow> •  <scope> The token &quot; activity &quot; can be any of the following:
Standard Attributes for Each Activity name=&quot;ncname&quot;? joinCondition=&quot;bool-expr&quot;? suppressJoinFailure=&quot;yes|no&quot;? Every activity that is the target of a link has an implicit or explicit  joinCondition  attribute associated with it. A join condition is a Boolean expression. The expression for a join condition for an activity MUST be constructed using  only   Boolean operators and the  bpws:getLinkStatus  function  applied to incoming links at the activity. … <invoke name=&quot;settleTrade“  joinCondition=&quot;bpws:getLinkStatus('buyToSettle') and bpws:getLinkStatus('sellToSettle')“  > <target linkName=&quot;getBuyerInformation&quot;/> <target linkName=&quot;getSellerInformation&quot;/> <source linkName=&quot;toBuyConfirm&quot;/><source linkName=&quot;toSellConfirm&quot;/> </invoke> …
Dead-Path-Elimination (DPE) In cases where the control flow is largely defined by networks of links, the normal interpretation of a  false join condition  for activity A is that  A should not be performed,rather than that a fault has occurred. Moreover, there is a need to propagate the consequences of this decision by  assigning a negative status to the outgoing links  for A.BPEL4WS makes it easy to express these semantics by using an attribute  suppressJoinFailure  on an activity. A value of  &quot;yes&quot;  for this attribute has the effect of suppressing the  bpws:joinFailure  fault for the activity and all nested activities, except where the effect is overridden by using the  suppress JoinFailure  attribute with a value of  &quot;no&quot;  in a nested activity.
receive  activity   The <receive> construct allows the business process to do  a blocking wait  for a matching message to arrive <receive partnerLink=&quot;ncname&quot; portType=&quot;qname&quot;  operation=&quot;ncname&quot; variable=&quot;ncname&quot;? createInstance=&quot;yes|no&quot;? standard-attributes > standard-elements <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;?>+ </correlations> </receive>
reply  activity   The <reply> construct allows the business process to send a message in reply to a message that was received through a <receive>. The combination of a <receive> and a <reply> forms a request-response operation on the WSDL portType for the process. <reply partnerLink=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; variable=&quot;ncname&quot;? faultName=&quot;qname&quot;? standard-attributes > standard-elements <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;?>+ </correlations> </reply>
invoke  activity   The <invoke> construct allows the business process to invoke a  one-way or request-response  operation on a portType offered by a partner. <invoke partnerLink=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; inputVariable=&quot;ncname&quot;? outputVariable=&quot;ncname&quot;? standard-attributes > standard-elements <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;? pattern=&quot;in|out|out-in&quot;/>+ </correlations> <catch faultName=&quot;qname&quot; faultVariable=&quot;ncname&quot;?>* activity </catch> <catchAll>? activity </catchAll> <compensationHandler>? activity </compensationHandler> </invoke>
Communication Pattern
Partner Interactions
assign  activity   The <assign> construct can be used to update the values of variables with new data. An <assign> construct can contain any number of elementary assignments. The syntax of the assignment activity is: <assign  standard-attributes > standard-elements <copy>+ from-spec to-spec </copy> </assign>
from-spec and to-spec The  from-spec  MUST be one of the following forms except for the opaque form available in abstract processes: <from variable=&quot;ncname&quot; part=&quot;ncname&quot;?/> <from partnerLink=&quot;ncname&quot; endpointReference=&quot; myRole | partnerRole &quot;/> <from variable=&quot;ncname&quot; property=&quot;qname&quot;/> <from expression=&quot;general-expr&quot;/> <from> ... literal value ... </from> The  to-spec  MUST be one of the following forms: <to variable=&quot;ncname&quot; part=&quot;ncname&quot;?/> <to partnerLink=&quot;ncname&quot;/> <to variable=&quot;ncname&quot; property=&quot;qname&quot;/>
throw  activity   The <throw> construct generates a fault from inside the business process. <throw faultName=&quot;qname&quot; faultVariable=&quot;ncname&quot;?  standard- attributes > standard-elements </throw>
wait  activity   The <wait> construct allows you to wait for a given time period or until a certain time has passed. Exactly one of the expiration criteria must be specified. <wait (for=&quot;duration-expr&quot; | until=&quot;deadline-expr&quot;)  standard-attributes > standard-elements </wait>
empty  activity   The <empty> construct allows you to insert a &quot;no-op&quot; instruction into a business process . This is useful for synchronization of concurrent activities, for instance. <empty  standard-attributes > standard-elements </empty>
sequence  activity   The <sequence> construct allows you to define a collection of activities to be performed sequentially in lexical order. <sequence  standard-attributes > standard-elements activity + </sequence>
switch  activity   The <switch> construct allows you to select exactly one branch of activity from a set of choices. <switch  standard-attributes > standard-elements <case condition=&quot;bool-expr&quot;>+ activity </case> <otherwise>? activity </otherwise> </switch>
while  activity   The <while> construct allows you to indicate that an activity is to be repeated until a certain success criteria has been met. <while condition=&quot;bool-expr&quot;  standard-attributes > standard-elements activity </while>
pick  activity   The <pick> construct allows you to block and wait for  a suitable message  to arrive or for  a time-out alarm  to go off. When one of these triggers occurs, the associated activity is performed and the pick completes. <pick createInstance=&quot;yes|no&quot;?  standard-attributes > standard-elements <onMessage partnerLink=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; variable=&quot;ncname&quot;?>+ <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;?>+ </correlations> activity </onMessage> <onAlarm (for=&quot;duration-expr&quot; | until=&quot;deadline-expr&quot;)>* activity </onAlarm> </pick>
Using correlation sets   To use a correlation set, a BPEL author defines the set by enumerating the properties which comprise it, and then references that set from  receive ,  reply ,  invoke , or  pick  activities. A BPEL runtime uses the definition and references to determine the interesting pieces of information that it should examine during different points of executing the process. Each instance of the process has  an instantiation of each of the correlation sets  which are defined for the process. Each of these instantiations is  initialized exactly once  during the execution of the process instance, and is subsequently only used during comparisons involving incoming and outgoing messages. If an attempt is made to reinitialize a correlation set, or to use one which has not been initialized, then the runtime will throw a  bpws:correlationViolation
createInstance attribute In addition, receive activities play a role in the lifecycle of a business process. The  only way to instantiate a business process  in BPEL4WS is to annotate a receive activity with the  createInstance attribute  set to  &quot;yes“  .  The default value of this attribute is &quot;no&quot;. A receive activity annotated in this way MUST be an initial activity in the process It is permissible to have the createInstance attribute set to &quot;yes&quot; for  a  set  of concurrent initial activities . In this case the intent is to express the possibility that any one of a set of  required  inbound messages can create the process instance  because the order in which these messages arrive cannot be predicted . All such receive activities MUST use the  same correlation sets .
flow  activity   The <flow> construct allows you to specify one or more activities to be performed  concurrently . Links can be used within concurrent activities to define arbitrary control structures. <flow  standard-attributes > standard-elements <links>? <link name=&quot;ncname&quot;>+ </links> activity + </flow>
Links – Control Flow <flow> <links> <link name=&quot;XtoY&quot;/> <link name=&quot;CtoD&quot;/> </links> <sequence name=&quot;X&quot;> <source linkName=&quot;XtoY&quot;/> <invoke name=&quot;A&quot; .../> <invoke name=&quot;B&quot; .../> </sequence> <sequence name&quot;Y&quot;> <target linkName=&quot;XtoY&quot;/> <receive name=&quot;C&quot;/> <source linkName=&quot;CtoD&quot;/> </receive> <invoke name=&quot;E&quot; .../> </sequence> <invoke partnerLink=&quot;D&quot;> <target linkName=&quot;CtoD&quot;/> </invoke> </flow> <flow> </flow> <Y> <X> <link CtoD> <link XtoY>
scope  activity   The <scope> construct allows you to define a nested activity with its own associated variables, fault handlers, and compensation handler. <scope variableAccessSerializable=&quot;yes|no&quot;  standard-attributes > standard-elements <variables>? ... see above under <process> for syntax ... </variables> <correlationSets>? ... see above under <process> for syntax ... </correlationSets> <faultHandlers>? ... see above under <process> for syntax ... </faultHandlers> <compensationHandler>? ... see above under <process> for syntax ... </compensationHandler> <eventHandlers>? ... </eventHandlers> activity </scope>
compensate  activity   The <compensate> construct is used to invoke compensation on an inner scope that has already completed normally. This construct can be invoked only from within a fault handler or another compensation handler. <compensate scope=&quot;ncname&quot;?  standard-attributes > standard-elements </compensate>
Undoing with <compensate>  The first step is to surround that <invoke> activity with a scope that has a compensation handler.  As this is mainly for illustration purposes, we simply put an <empty> inside the handler . After the scope has run successfully,  its compensation handler waits for a signal to actually run. This signal can be either explicit, arising from a running <compensate> activity, or implicit due to a fault . Note that the scope to be explicitly compensated must be named.  <scope name=&quot;assessor-scope&quot;> <target linkName=&quot;receive-to-assess&quot;/> <compensationHandler>  <empty/>  </compensationHandler> <invoke name=&quot;invokeAssessor&quot; partner=&quot;assessor&quot; portType=&quot;asns:riskAssessmentPT&quot; operation=&quot;check&quot; inputContainer=&quot;request&quot; outputContainer=&quot;riskAssessment&quot;>  … </invoke>  </scope>
In BPEL, you can only invoke explicit compensation from  inside a fault or compensation handler  in a scope above the one to be compensated. Therefore, we will modify the fault handler on the process itself to include a  <compensate>  activity referring to the  assessor-scope   <process .... >  ....  <faultHandlers> <catch faultName=&quot;lns:loanProcessFault&quot; faultContainer=&quot;error&quot;>  <sequence name=&quot;fault-sequence&quot;> <compensate scope=&quot;assessor-scope&quot;/>    </sequence> </catch>  </faultHandlers>
standard-attributes and standard-elements Note that the  &quot; standard-attributes &quot;  referred to above are: name=&quot;ncname&quot;? joinCondition=&quot;bool-expr&quot;? suppressJoinFailure=&quot;yes|no&quot;? where the default values are as follows: •  name. No default value (that is, unnamed) •  joinCondition. The logical OR of the liveness status of all links  that are targeted at this activity •  suppressJoinFailure. No and that the  &quot; standard-elements &quot;  referred to above are: <target linkName=&quot;ncname&quot;/>* <source linkName=&quot;ncname&quot; transitionCondition=&quot;bool-expr&quot;?/>* where the default value of the &quot;transitionCondition&quot; attribute is &quot;true()&quot;, the truth-value function from the default expression language XPath 1.0.
WSDL Definitions <definitions targetNamespace =&quot;http://manufacturing.org/wsdl/purchase“ ... > <import namespace=&quot;http://manufacturing.org/xsd/purchase&quot; location=&quot;http://manufacturing.org/xsd/purchase.xsd&quot;/> <message name=&quot;POMessage&quot;> <part name=&quot;customerInfo&quot; type=&quot;sns:customerInfo&quot;/> <part name=&quot;purchaseOrder&quot; type=&quot;sns:purchaseOrder&quot;/> </message> ... <!-- portTypes supported by the purchase order process --> <portType name=&quot;purchaseOrderPT&quot;> ''' </portType> <plnk:partnerLinkType name=&quot;purchasingLT&quot;> ''' </plnk:partnerLinkType> ''' </definitions>
Defining Properties The WSDL extensibility mechanism  is used to define properties so that the target namespace and other useful aspects of WSDL are available. The BPEL4WS standard namespace,  http://schemas.xmlsoap.org/ws/2003/03/business-process/  , is used for property definitions. The syntax for a property definition is a new kind of WSDL definition as follows: <wsdl:definitions name=&quot;ncname&quot; xmlns:bpws=&quot;http://schemas.xmlsoap.org/ws/2003/03/business-process/&quot;> <bpws:property name=&quot;ncname&quot; type=&quot;qname&quot;/> ... </wsdl:definitions>
Defining PropertiesAlias <definitions name=&quot;properties&quot; …  &quot;> <bpws:property name=&quot;taxpayerNumber&quot; type=&quot;txtype:SSN&quot;/> ... <bpws:propertyAlias propertyName=&quot;tns:taxpayerNumber&quot; messageType=&quot;txmsg:taxpayerInfo&quot; part=&quot;identification&quot; query=&quot;/socialsecnumber&quot;/> </bpws:propertyAlias> </definitions> The  bpws:propertyAlias  defines a globally named property  tns:taxpayerNumber  as an alias for a location in the identification part of the message type  txmsg:taxpayerInfo .
 
PortType The WSDL portType offered by the service to its customers. <portType name=&quot;purchaseOrderPT&quot;> <operation name=&quot;sendPurchaseOrder&quot;> <input message=&quot;pos:POMessage&quot;/> <output message=&quot;pos:InvMessage&quot;/> <fault name=&quot;cannotCompleteOrder&quot; message=&quot;pos:orderFaultType&quot;/> </operation> </portType>
Variable ,[object Object],<variables> <variable name=&quot;ncname&quot; messageType=&quot;qname&quot;? type=”qname”? element=”qname”?/>+ </variables>
Variables in BPEL <variables> <variable name=&quot;PO&quot; messageType=&quot; lns:POMessage &quot;/> <variable name=&quot;Invoice&quot; messageType=&quot; lns:InvMessage &quot;/> <variable name=&quot;POFault&quot; messageType=&quot; lns:orderFaultType &quot;/> </variables> <message name=&quot; POMessage &quot;> <part name=&quot;customerInfo&quot; type=&quot;sns:customerInfo&quot;/> <part name=&quot;purchaseOrder&quot; type=&quot;sns:purchaseOrder&quot;/> </message> <message name=&quot; InvMessage &quot;> <part name=&quot;IVC&quot; type=&quot;sns:Invoice&quot;/> </message> <message name=&quot; orderFaultType &quot;> <part name=&quot;problemInfo&quot; type=&quot;xsd:string&quot;/> </message> Purchase Process WSDL: BPEL:
Property, Property Alias (from WSDL) ,[object Object]
CorrelationSet ,[object Object],<correlationSets>? <correlationSet name=&quot;ncname&quot; properties=&quot;qname-list&quot;/>+ </correlationSets> <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;? pattern=&quot;in|out|out-in&quot;/>+ </correlations>
Partner Link Type (from WSDL) A partner link type characterizes the conversational relationship between two services by defining the  &quot;roles&quot; played by each of the services  in the conversation and specifying the  portType  provided by each service to receive messages within the context of the conversation
Partner Link ,[object Object],[object Object]
< wsdl:definitions  name = &quot;NCName&quot;  targetNamespace = &quot;anyURI&quot;  ... >     ...     < plnk:partnerLinkType  name = &quot;NCName&quot; >        < plnk:role  name = &quot;NCName&quot;  portType = &quot;QName&quot;  />        < plnk:role  name = &quot;NCName&quot;  portType = &quot;QName&quot;  /> ?     </ plnk:partnerLinkType >     ... </ wsdl:definitions > < partnerLinks >     < partnerLink  name = &quot;NCName&quot;         partnerLinkType = &quot;QName&quot;         myRole = &quot;NCName&quot; ?        partnerRole = &quot;NCName&quot; ?         initializePartnerRole = &quot;yes|no&quot; ?  /> + </ partnerLinks >
Partner ,[object Object]
Partners in BPEL <partnerLinks> <partnerLink name=&quot;customer&quot; serviceLinkType=&quot; lns:purchasePLT &quot;    myRole=&quot; purchaseService &quot;/> <partnerLink name=&quot;inventoryChecker&quot; serviceLinkType=&quot;lns:inventoryPLT&quot;    myRole=&quot;inventoryRequestor&quot; partnerRole=&quot;inventoryService&quot;/> <partnerLink name=&quot;creditChecker&quot; serviceLinkType=&quot;lns:creditPLT&quot;  myRole=&quot;creditRequestor&quot; partnerRole=&quot;creditService&quot;/> </partnerLinks> <plt:partnerLinkType name=&quot; purchasePLT &quot;> <plt:role name=&quot; purchaseService &quot;> <plt:portType name=&quot; tns:purchasePT &quot;/> </plt:role> </plt:partnerLinkType>  Purchase Process WSDL: BPEL: <portType name=&quot; purchasePT &quot;> <operation name=&quot;sendPurchase&quot;> </operation> </portType> Purchase Process PortType:
Endpoint References? Partner links define the shape of a relationship with a partner by defining the message and port types used in the interactions in both directions. However, the actual partner service may be  dynamically determined within the process . BPEL4WS uses a notion of endpoint reference to represent the dynamic data required to describe a partner service endpoint. <assign> <copy> <from>  <EndpointReference xmlns  =&quot;http://schemas.xmlsoap.org/ws/2003/03/addressing&quot;> <Address>http://localhost:9700/orabpel/default/UnitedLoan</Address> <ServiceName xmlns:ns1  =&quot;http://services.otn.com&quot;>ns1:UnitedLoan</ServiceName> </EndpointReference> </from> <to variable=&quot;partnerReference&quot;/> </copy> </assign>
Reference ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Mais conteúdo relacionado

Semelhante a Business Process Execution Language

Ruslan Platonov - Transactions
Ruslan Platonov - TransactionsRuslan Platonov - Transactions
Ruslan Platonov - Transactions
Dmitry Buzdin
 
Microformats HTML to API
Microformats HTML to APIMicroformats HTML to API
Microformats HTML to API
elliando dias
 

Semelhante a Business Process Execution Language (20)

jBPM5: Bringing more Power to your Business Processes
jBPM5: Bringing more Power to your Business ProcessesjBPM5: Bringing more Power to your Business Processes
jBPM5: Bringing more Power to your Business Processes
 
Struts2
Struts2Struts2
Struts2
 
jBPM5 - Bringing more power to your business processes
jBPM5 - Bringing more power to your business processesjBPM5 - Bringing more power to your business processes
jBPM5 - Bringing more power to your business processes
 
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developersjBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
 
Ruslan Platonov - Transactions
Ruslan Platonov - TransactionsRuslan Platonov - Transactions
Ruslan Platonov - Transactions
 
Migration testing framework
Migration testing frameworkMigration testing framework
Migration testing framework
 
JSP diana y yo
JSP diana y yoJSP diana y yo
JSP diana y yo
 
Flex 360 Rules Engine
Flex 360 Rules EngineFlex 360 Rules Engine
Flex 360 Rules Engine
 
Flex 360 Rules Engine
Flex 360 Rules EngineFlex 360 Rules Engine
Flex 360 Rules Engine
 
Aug Xml Net Forum Dynamics Integration
Aug Xml Net Forum Dynamics IntegrationAug Xml Net Forum Dynamics Integration
Aug Xml Net Forum Dynamics Integration
 
Extending the Compatibility Notion for Abstract WS-BPEL Processes
 Extending the Compatibility Notion for Abstract WS-BPEL Processes Extending the Compatibility Notion for Abstract WS-BPEL Processes
Extending the Compatibility Notion for Abstract WS-BPEL Processes
 
Beyond the Node: Arkestration with Noah
Beyond the Node: Arkestration with NoahBeyond the Node: Arkestration with Noah
Beyond the Node: Arkestration with Noah
 
Obey The Rules: Implementing a Rules Engine in Flex
Obey The Rules: Implementing a Rules Engine in FlexObey The Rules: Implementing a Rules Engine in Flex
Obey The Rules: Implementing a Rules Engine in Flex
 
PPePR Overview Web2 Ireland
PPePR Overview Web2 IrelandPPePR Overview Web2 Ireland
PPePR Overview Web2 Ireland
 
Sneak Preview of jBPM 4 at JAX conference
Sneak Preview of jBPM 4 at JAX conferenceSneak Preview of jBPM 4 at JAX conference
Sneak Preview of jBPM 4 at JAX conference
 
MicroWSMO editor - Bachelor's thesis presentation
MicroWSMO editor - Bachelor's thesis presentationMicroWSMO editor - Bachelor's thesis presentation
MicroWSMO editor - Bachelor's thesis presentation
 
Microformats HTML to API
Microformats HTML to APIMicroformats HTML to API
Microformats HTML to API
 
The Basics Of Page Creation
The Basics Of Page CreationThe Basics Of Page Creation
The Basics Of Page Creation
 
Vb.Net Web Forms
Vb.Net  Web FormsVb.Net  Web Forms
Vb.Net Web Forms
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
 

Último

Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
daisycvs
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
lizamodels9
 
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
amitlee9823
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
amitlee9823
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
Abortion pills in Kuwait Cytotec pills in Kuwait
 
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
lizamodels9
 
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
dlhescort
 

Último (20)

Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
 
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
Call Girls Jp Nagar Just Call 👗 7737669865 👗 Top Class Call Girl Service Bang...
 
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
Call Girls Electronic City Just Call 👗 7737669865 👗 Top Class Call Girl Servi...
 
Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...
Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...
Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...
 
Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Service
 
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptxB.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
 
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabiunwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
unwanted pregnancy Kit [+918133066128] Abortion Pills IN Dubai UAE Abudhabi
 
Business Model Canvas (BMC)- A new venture concept
Business Model Canvas (BMC)-  A new venture conceptBusiness Model Canvas (BMC)-  A new venture concept
Business Model Canvas (BMC)- A new venture concept
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMAN
 
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentation
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023
 
RSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataRSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors Data
 
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
 
Falcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to ProsperityFalcon's Invoice Discounting: Your Path to Prosperity
Falcon's Invoice Discounting: Your Path to Prosperity
 
Falcon Invoice Discounting platform in india
Falcon Invoice Discounting platform in indiaFalcon Invoice Discounting platform in india
Falcon Invoice Discounting platform in india
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 May
 
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLBAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
 
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
(Anamika) VIP Call Girls Napur Call Now 8617697112 Napur Escorts 24x7
 

Business Process Execution Language

  • 1. Business Process Execution Language for Web Services Version 1.1 5 May 2003 Student: Chao-Chen Chiang Advisor: Dr. Gwan-Hwan Hwang National Taiwan Normal University Department of Computer Science & Information Engineering Internet Computing Laboratory
  • 2. Business Process Execution Language for Web Services BPEL4WS BPEL Pronounce “bipple” or “bee-pell”
  • 3.  
  • 4. Terminology Changes The following terminology changes have occurred • Service Links are now called Partner Links • Service Link Types are now called Partner Link Types • Service References are now called Endpoint References • Containers are now called Variables
  • 5.
  • 6. Orchestration In orchestration, which is usually used in private business processes, a central process (which can be another Web service) takes control of the involved Web services and coordinates the execution of different operations on the Web services involved in the operation
  • 7. Choreography Choreography, in contrast, does not rely on a central coordinator. Rather, each Web service involved in the choreography knows exactly when to execute its operations and with whom to interact
  • 8.
  • 9. Relationship with WSDL BPEL4WS depends on the following XML-based specifications: WSDL 1.1, XML Schema 1.0,XPath 1.0 and WS-Addressing Schema Document <xs:schema> <xs:element/> </xs:schema> BPEL Document <process> <partnerLinks/> <variables/> <scope> <assign/> </scope> ... </process> WSDL Document <definitions> <partnerLinkTypes/> <types/> <message> <part type=&quot;&quot;> </message> ... </definitions>
  • 10. The Structure of a Business Process <process name=&quot;ncname&quot; targetNamespace=&quot;uri&quot; queryLanguage=&quot;anyURI&quot;? expressionLanguage=&quot;anyURI&quot;? suppressJoinFailure=&quot;yes|no&quot;? enableInstanceCompensation=&quot;yes|no&quot;? abstractProcess=&quot;yes|no&quot;? xmlns=&quot;http://schemas.xmlsoap.org/ws/2003/03/business-process/&quot;> <partnerLinks>? <!-- Note: At least one role must be specified. --> <partnerLink name=&quot;ncname&quot; partnerLinkType=&quot;qname&quot; myRole=&quot;ncname&quot;? partnerRole=&quot;ncname&quot;?>+ </partnerLink> </partnerLinks> <partners>? <partner name=&quot;ncname&quot;>+ <partnerLink name=&quot;ncname&quot;/>+ </partner> </partners>
  • 11. The Structure of a Business Process <variables>? <variable name=&quot;ncname&quot; messageType=&quot;qname&quot;? type=&quot;qname&quot;? element=&quot;qname&quot;?/>+ </variables> <correlationSets>? <correlationSet name=&quot;ncname&quot; properties=&quot;qname-list&quot;/>+ </correlationSets> <faultHandlers>? <!-- Note: There must be at least one fault handler or default. --> <catch faultName=&quot;qname&quot;? faultVariable=&quot;ncname&quot;?>* activity </catch> <catchAll>? activity </catchAll> </faultHandlers> <compensationHandler>? activity </compensationHandler>
  • 12. The Structure of a Business Process <eventHandlers>? <!-- Note: There must be at least one onMessage or onAlarm handler. --> <onMessage partnerLink=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; variable=&quot;ncname&quot;?> <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;?>+ <correlations> activity </onMessage> <onAlarm for=&quot;duration-expr&quot;? until=&quot;deadline-expr&quot;?>* activity </onAlarm> </eventHandlers> activity </process>
  • 13. Activity Basic Activities • <receive> • <reply> • <invoke> • <assign> • <throw> • <wait> • <empty> Structured Activities • <sequence> • <switch> • <while> • <pick> • <flow> • <scope> The token &quot; activity &quot; can be any of the following:
  • 14. Standard Attributes for Each Activity name=&quot;ncname&quot;? joinCondition=&quot;bool-expr&quot;? suppressJoinFailure=&quot;yes|no&quot;? Every activity that is the target of a link has an implicit or explicit joinCondition attribute associated with it. A join condition is a Boolean expression. The expression for a join condition for an activity MUST be constructed using only Boolean operators and the bpws:getLinkStatus function applied to incoming links at the activity. … <invoke name=&quot;settleTrade“ joinCondition=&quot;bpws:getLinkStatus('buyToSettle') and bpws:getLinkStatus('sellToSettle')“ > <target linkName=&quot;getBuyerInformation&quot;/> <target linkName=&quot;getSellerInformation&quot;/> <source linkName=&quot;toBuyConfirm&quot;/><source linkName=&quot;toSellConfirm&quot;/> </invoke> …
  • 15. Dead-Path-Elimination (DPE) In cases where the control flow is largely defined by networks of links, the normal interpretation of a false join condition for activity A is that A should not be performed,rather than that a fault has occurred. Moreover, there is a need to propagate the consequences of this decision by assigning a negative status to the outgoing links for A.BPEL4WS makes it easy to express these semantics by using an attribute suppressJoinFailure on an activity. A value of &quot;yes&quot; for this attribute has the effect of suppressing the bpws:joinFailure fault for the activity and all nested activities, except where the effect is overridden by using the suppress JoinFailure attribute with a value of &quot;no&quot; in a nested activity.
  • 16. receive activity The <receive> construct allows the business process to do a blocking wait for a matching message to arrive <receive partnerLink=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; variable=&quot;ncname&quot;? createInstance=&quot;yes|no&quot;? standard-attributes > standard-elements <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;?>+ </correlations> </receive>
  • 17. reply activity The <reply> construct allows the business process to send a message in reply to a message that was received through a <receive>. The combination of a <receive> and a <reply> forms a request-response operation on the WSDL portType for the process. <reply partnerLink=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; variable=&quot;ncname&quot;? faultName=&quot;qname&quot;? standard-attributes > standard-elements <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;?>+ </correlations> </reply>
  • 18. invoke activity The <invoke> construct allows the business process to invoke a one-way or request-response operation on a portType offered by a partner. <invoke partnerLink=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; inputVariable=&quot;ncname&quot;? outputVariable=&quot;ncname&quot;? standard-attributes > standard-elements <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;? pattern=&quot;in|out|out-in&quot;/>+ </correlations> <catch faultName=&quot;qname&quot; faultVariable=&quot;ncname&quot;?>* activity </catch> <catchAll>? activity </catchAll> <compensationHandler>? activity </compensationHandler> </invoke>
  • 21. assign activity The <assign> construct can be used to update the values of variables with new data. An <assign> construct can contain any number of elementary assignments. The syntax of the assignment activity is: <assign standard-attributes > standard-elements <copy>+ from-spec to-spec </copy> </assign>
  • 22. from-spec and to-spec The from-spec MUST be one of the following forms except for the opaque form available in abstract processes: <from variable=&quot;ncname&quot; part=&quot;ncname&quot;?/> <from partnerLink=&quot;ncname&quot; endpointReference=&quot; myRole | partnerRole &quot;/> <from variable=&quot;ncname&quot; property=&quot;qname&quot;/> <from expression=&quot;general-expr&quot;/> <from> ... literal value ... </from> The to-spec MUST be one of the following forms: <to variable=&quot;ncname&quot; part=&quot;ncname&quot;?/> <to partnerLink=&quot;ncname&quot;/> <to variable=&quot;ncname&quot; property=&quot;qname&quot;/>
  • 23. throw activity The <throw> construct generates a fault from inside the business process. <throw faultName=&quot;qname&quot; faultVariable=&quot;ncname&quot;? standard- attributes > standard-elements </throw>
  • 24. wait activity The <wait> construct allows you to wait for a given time period or until a certain time has passed. Exactly one of the expiration criteria must be specified. <wait (for=&quot;duration-expr&quot; | until=&quot;deadline-expr&quot;) standard-attributes > standard-elements </wait>
  • 25. empty activity The <empty> construct allows you to insert a &quot;no-op&quot; instruction into a business process . This is useful for synchronization of concurrent activities, for instance. <empty standard-attributes > standard-elements </empty>
  • 26. sequence activity The <sequence> construct allows you to define a collection of activities to be performed sequentially in lexical order. <sequence standard-attributes > standard-elements activity + </sequence>
  • 27. switch activity The <switch> construct allows you to select exactly one branch of activity from a set of choices. <switch standard-attributes > standard-elements <case condition=&quot;bool-expr&quot;>+ activity </case> <otherwise>? activity </otherwise> </switch>
  • 28. while activity The <while> construct allows you to indicate that an activity is to be repeated until a certain success criteria has been met. <while condition=&quot;bool-expr&quot; standard-attributes > standard-elements activity </while>
  • 29. pick activity The <pick> construct allows you to block and wait for a suitable message to arrive or for a time-out alarm to go off. When one of these triggers occurs, the associated activity is performed and the pick completes. <pick createInstance=&quot;yes|no&quot;? standard-attributes > standard-elements <onMessage partnerLink=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; variable=&quot;ncname&quot;?>+ <correlations>? <correlation set=&quot;ncname&quot; initiate=&quot;yes|no&quot;?>+ </correlations> activity </onMessage> <onAlarm (for=&quot;duration-expr&quot; | until=&quot;deadline-expr&quot;)>* activity </onAlarm> </pick>
  • 30. Using correlation sets To use a correlation set, a BPEL author defines the set by enumerating the properties which comprise it, and then references that set from receive , reply , invoke , or pick activities. A BPEL runtime uses the definition and references to determine the interesting pieces of information that it should examine during different points of executing the process. Each instance of the process has an instantiation of each of the correlation sets which are defined for the process. Each of these instantiations is initialized exactly once during the execution of the process instance, and is subsequently only used during comparisons involving incoming and outgoing messages. If an attempt is made to reinitialize a correlation set, or to use one which has not been initialized, then the runtime will throw a bpws:correlationViolation
  • 31. createInstance attribute In addition, receive activities play a role in the lifecycle of a business process. The only way to instantiate a business process in BPEL4WS is to annotate a receive activity with the createInstance attribute set to &quot;yes“ . The default value of this attribute is &quot;no&quot;. A receive activity annotated in this way MUST be an initial activity in the process It is permissible to have the createInstance attribute set to &quot;yes&quot; for a set of concurrent initial activities . In this case the intent is to express the possibility that any one of a set of required inbound messages can create the process instance because the order in which these messages arrive cannot be predicted . All such receive activities MUST use the same correlation sets .
  • 32. flow activity The <flow> construct allows you to specify one or more activities to be performed concurrently . Links can be used within concurrent activities to define arbitrary control structures. <flow standard-attributes > standard-elements <links>? <link name=&quot;ncname&quot;>+ </links> activity + </flow>
  • 33. Links – Control Flow <flow> <links> <link name=&quot;XtoY&quot;/> <link name=&quot;CtoD&quot;/> </links> <sequence name=&quot;X&quot;> <source linkName=&quot;XtoY&quot;/> <invoke name=&quot;A&quot; .../> <invoke name=&quot;B&quot; .../> </sequence> <sequence name&quot;Y&quot;> <target linkName=&quot;XtoY&quot;/> <receive name=&quot;C&quot;/> <source linkName=&quot;CtoD&quot;/> </receive> <invoke name=&quot;E&quot; .../> </sequence> <invoke partnerLink=&quot;D&quot;> <target linkName=&quot;CtoD&quot;/> </invoke> </flow> <flow> </flow> <Y> <X> <link CtoD> <link XtoY>
  • 34. scope activity The <scope> construct allows you to define a nested activity with its own associated variables, fault handlers, and compensation handler. <scope variableAccessSerializable=&quot;yes|no&quot; standard-attributes > standard-elements <variables>? ... see above under <process> for syntax ... </variables> <correlationSets>? ... see above under <process> for syntax ... </correlationSets> <faultHandlers>? ... see above under <process> for syntax ... </faultHandlers> <compensationHandler>? ... see above under <process> for syntax ... </compensationHandler> <eventHandlers>? ... </eventHandlers> activity </scope>
  • 35. compensate activity The <compensate> construct is used to invoke compensation on an inner scope that has already completed normally. This construct can be invoked only from within a fault handler or another compensation handler. <compensate scope=&quot;ncname&quot;? standard-attributes > standard-elements </compensate>
  • 36. Undoing with <compensate> The first step is to surround that <invoke> activity with a scope that has a compensation handler. As this is mainly for illustration purposes, we simply put an <empty> inside the handler . After the scope has run successfully, its compensation handler waits for a signal to actually run. This signal can be either explicit, arising from a running <compensate> activity, or implicit due to a fault . Note that the scope to be explicitly compensated must be named. <scope name=&quot;assessor-scope&quot;> <target linkName=&quot;receive-to-assess&quot;/> <compensationHandler> <empty/> </compensationHandler> <invoke name=&quot;invokeAssessor&quot; partner=&quot;assessor&quot; portType=&quot;asns:riskAssessmentPT&quot; operation=&quot;check&quot; inputContainer=&quot;request&quot; outputContainer=&quot;riskAssessment&quot;> … </invoke> </scope>
  • 37. In BPEL, you can only invoke explicit compensation from inside a fault or compensation handler in a scope above the one to be compensated. Therefore, we will modify the fault handler on the process itself to include a <compensate> activity referring to the assessor-scope <process .... > .... <faultHandlers> <catch faultName=&quot;lns:loanProcessFault&quot; faultContainer=&quot;error&quot;> <sequence name=&quot;fault-sequence&quot;> <compensate scope=&quot;assessor-scope&quot;/> </sequence> </catch> </faultHandlers>
  • 38. standard-attributes and standard-elements Note that the &quot; standard-attributes &quot; referred to above are: name=&quot;ncname&quot;? joinCondition=&quot;bool-expr&quot;? suppressJoinFailure=&quot;yes|no&quot;? where the default values are as follows: • name. No default value (that is, unnamed) • joinCondition. The logical OR of the liveness status of all links that are targeted at this activity • suppressJoinFailure. No and that the &quot; standard-elements &quot; referred to above are: <target linkName=&quot;ncname&quot;/>* <source linkName=&quot;ncname&quot; transitionCondition=&quot;bool-expr&quot;?/>* where the default value of the &quot;transitionCondition&quot; attribute is &quot;true()&quot;, the truth-value function from the default expression language XPath 1.0.
  • 39. WSDL Definitions <definitions targetNamespace =&quot;http://manufacturing.org/wsdl/purchase“ ... > <import namespace=&quot;http://manufacturing.org/xsd/purchase&quot; location=&quot;http://manufacturing.org/xsd/purchase.xsd&quot;/> <message name=&quot;POMessage&quot;> <part name=&quot;customerInfo&quot; type=&quot;sns:customerInfo&quot;/> <part name=&quot;purchaseOrder&quot; type=&quot;sns:purchaseOrder&quot;/> </message> ... <!-- portTypes supported by the purchase order process --> <portType name=&quot;purchaseOrderPT&quot;> ''' </portType> <plnk:partnerLinkType name=&quot;purchasingLT&quot;> ''' </plnk:partnerLinkType> ''' </definitions>
  • 40. Defining Properties The WSDL extensibility mechanism is used to define properties so that the target namespace and other useful aspects of WSDL are available. The BPEL4WS standard namespace, http://schemas.xmlsoap.org/ws/2003/03/business-process/ , is used for property definitions. The syntax for a property definition is a new kind of WSDL definition as follows: <wsdl:definitions name=&quot;ncname&quot; xmlns:bpws=&quot;http://schemas.xmlsoap.org/ws/2003/03/business-process/&quot;> <bpws:property name=&quot;ncname&quot; type=&quot;qname&quot;/> ... </wsdl:definitions>
  • 41. Defining PropertiesAlias <definitions name=&quot;properties&quot; … &quot;> <bpws:property name=&quot;taxpayerNumber&quot; type=&quot;txtype:SSN&quot;/> ... <bpws:propertyAlias propertyName=&quot;tns:taxpayerNumber&quot; messageType=&quot;txmsg:taxpayerInfo&quot; part=&quot;identification&quot; query=&quot;/socialsecnumber&quot;/> </bpws:propertyAlias> </definitions> The bpws:propertyAlias defines a globally named property tns:taxpayerNumber as an alias for a location in the identification part of the message type txmsg:taxpayerInfo .
  • 42.  
  • 43. PortType The WSDL portType offered by the service to its customers. <portType name=&quot;purchaseOrderPT&quot;> <operation name=&quot;sendPurchaseOrder&quot;> <input message=&quot;pos:POMessage&quot;/> <output message=&quot;pos:InvMessage&quot;/> <fault name=&quot;cannotCompleteOrder&quot; message=&quot;pos:orderFaultType&quot;/> </operation> </portType>
  • 44.
  • 45. Variables in BPEL <variables> <variable name=&quot;PO&quot; messageType=&quot; lns:POMessage &quot;/> <variable name=&quot;Invoice&quot; messageType=&quot; lns:InvMessage &quot;/> <variable name=&quot;POFault&quot; messageType=&quot; lns:orderFaultType &quot;/> </variables> <message name=&quot; POMessage &quot;> <part name=&quot;customerInfo&quot; type=&quot;sns:customerInfo&quot;/> <part name=&quot;purchaseOrder&quot; type=&quot;sns:purchaseOrder&quot;/> </message> <message name=&quot; InvMessage &quot;> <part name=&quot;IVC&quot; type=&quot;sns:Invoice&quot;/> </message> <message name=&quot; orderFaultType &quot;> <part name=&quot;problemInfo&quot; type=&quot;xsd:string&quot;/> </message> Purchase Process WSDL: BPEL:
  • 46.
  • 47.
  • 48. Partner Link Type (from WSDL) A partner link type characterizes the conversational relationship between two services by defining the &quot;roles&quot; played by each of the services in the conversation and specifying the portType provided by each service to receive messages within the context of the conversation
  • 49.
  • 50. < wsdl:definitions name = &quot;NCName&quot; targetNamespace = &quot;anyURI&quot; ... >    ...    < plnk:partnerLinkType name = &quot;NCName&quot; >       < plnk:role name = &quot;NCName&quot; portType = &quot;QName&quot; />       < plnk:role name = &quot;NCName&quot; portType = &quot;QName&quot; /> ?    </ plnk:partnerLinkType >    ... </ wsdl:definitions > < partnerLinks >    < partnerLink name = &quot;NCName&quot;       partnerLinkType = &quot;QName&quot;       myRole = &quot;NCName&quot; ?       partnerRole = &quot;NCName&quot; ?       initializePartnerRole = &quot;yes|no&quot; ? /> + </ partnerLinks >
  • 51.
  • 52. Partners in BPEL <partnerLinks> <partnerLink name=&quot;customer&quot; serviceLinkType=&quot; lns:purchasePLT &quot; myRole=&quot; purchaseService &quot;/> <partnerLink name=&quot;inventoryChecker&quot; serviceLinkType=&quot;lns:inventoryPLT&quot; myRole=&quot;inventoryRequestor&quot; partnerRole=&quot;inventoryService&quot;/> <partnerLink name=&quot;creditChecker&quot; serviceLinkType=&quot;lns:creditPLT&quot; myRole=&quot;creditRequestor&quot; partnerRole=&quot;creditService&quot;/> </partnerLinks> <plt:partnerLinkType name=&quot; purchasePLT &quot;> <plt:role name=&quot; purchaseService &quot;> <plt:portType name=&quot; tns:purchasePT &quot;/> </plt:role> </plt:partnerLinkType> Purchase Process WSDL: BPEL: <portType name=&quot; purchasePT &quot;> <operation name=&quot;sendPurchase&quot;> </operation> </portType> Purchase Process PortType:
  • 53. Endpoint References? Partner links define the shape of a relationship with a partner by defining the message and port types used in the interactions in both directions. However, the actual partner service may be dynamically determined within the process . BPEL4WS uses a notion of endpoint reference to represent the dynamic data required to describe a partner service endpoint. <assign> <copy> <from> <EndpointReference xmlns =&quot;http://schemas.xmlsoap.org/ws/2003/03/addressing&quot;> <Address>http://localhost:9700/orabpel/default/UnitedLoan</Address> <ServiceName xmlns:ns1 =&quot;http://services.otn.com&quot;>ns1:UnitedLoan</ServiceName> </EndpointReference> </from> <to variable=&quot;partnerReference&quot;/> </copy> </assign>
  • 54.