BPEL process lifecycle Business Process Execution Language BPEL

Copyright © 2009 Open Geospatial Consortium, Inc.Copyright © 2009 Open Geospatial Consortium, Inc. 15

4.2.4.3 Partner Handling

The most important aspect of a BPEL process is the interaction with other Web Services partner. The relationship of a process to a partner is typically peer-to-peer. This aspect requires a two-way dependency at the service level. Therefore, a partner can represent both a consumer of a service provided by the process and a provider of a service to the process. The interaction is generally handled through operation calls offered by the Web Service’s interface and described by the corresponding WSDL. WSDL describes the Web Service’s functionality only and does not include the relationships between different partners. Therefore BPEL offers the concept of partnerLinks and partnerLinkTypes. A partnerLinkType determines the relationship between two services and also characterizes the roles of both partners. Additionally, the interaction pattern is specified between two partners by defining the portType provided by each service to receive messages within the context of the conversation. Hence, a partnerLink specifies only the interaction at an abstract level by simply defining just the roles and portTypes and not the concrete ports. Listing 2 shows the general structure of a partnerLinkType. Listing 2. General partnerLinkType structure Each partnerLinkType construct is named after the name attribute. Furthermore, the Web Service’s role e.g. buyer and seller is specified by the role element, which is also named. Each role specifies exactly one portType provided for the corresponding role. A partnerLinkType is different from other BPEL constructs, since it is specified in the context of a WSDL document on the basis of the WSDL extension mechanism and hence can be placed inside a WSDL document. All Web Services, which participate in the process and therefore interact with the process are specified as partnerLinks. Each partnerLink is characterized by a partnerLinkType. But more than one partnerLink can be characterized by