W3C

Web Services Choreography Description Language Version 1.0

W3C Working Draft 12 October17 December 2004

This version:
http://www.w3.org/TR/2004/WD-ws-cdl-10-20041012/http://www.w3.org/TR/2004/WD-ws-cdl-10-20041217/
Latest version:
http://www.w3.org/TR/ws-cdl-10/
Previous version:
http://www.w3.org/TR/2004/WD-ws-cdl-10-20040427/http://www.w3.org/TR/2004/WD-ws-cdl-10-20041012/
Editors:
Nickolas Kavantzas, Oracle
<nickolas.kavantzas@oracle.com>David Burdett, Commerce One
<david.burdett@commerceone.com>Gregory Ritzinger, Novell
<gritzinger@novell.com>Tony Fletcher, Choreology
Yves Lafon, W3C

Abstract

The Web Services Choreography Description Language (WS-CDL) is an XML-based language that describes peer-to-peer collaborations of parties by defining, from a global viewpoint, their common and complementary observable behavior; where ordered message exchanges result in accomplishing a common business goal.

The Web Services specifications offer a communication bridge between the heterogeneous computational environments used to develop and host applications. The future of E-Business applications requires the ability to perform long-lived, peer-to-peer collaborations between the participating services, within or across the trusted domains of an organization.

The Web Services Choreography specification is targeted for composing interoperable, peer-to-peer collaborations between any type of party regardless of the supporting platform or programming model used by the implementation of the hosting environment.

Status of this Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

This is the second publisheda Last Call Working Draft of the Web Services Choreography Description Language document. ItThe Last Call review period ends 31 January 2005. Comments on this document should be sent to public-ws-chor-comments@w3.org (public archive). It is inappropriate to send discussion emails to this address.

Discussion of this document takes place on the last version before Last Call WDpublic public-ws-chor@w3.org mailing list (public archive) per the email communication rules in the Web Services Choreography Working Group charter.

It has been produced by the Web Services Choreography Working Group, which is part of the Web Services Activity.

This document is a chartered deliverable of the Web Services Choreography Working Group. Some issuesIssues are already identified andrecorded in the process of being fixed before going to Last Call , see thegroup's issue section.

The Working Group identified two issues. Those issues may be dropped or fixed in the future, but the Working Group does not believe that the resolution will result in a substantive change.

This document is based upon the Working Draft published on 27 April12 October 2004. Changes between these two versions are described in a diff document.

Comments on this document should be sent to public-ws-chor-comments@w3.org ( public archive ). It is inappropriate to send discussion emails to this address. Discussion of this document takes place on the public public-ws-chor@w3.org mailing list ( public archive ) per the email communication rules in the Web Services Choreography Working Group charter .This document has been produced under the 24 January 2002 CPP as amended by the W3C Patent Policy Transition Procedure. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with section 6 of the W3C Patent Policy. Patent disclosures relevant to this specification may be found on the Working Group's patent disclosure page.

Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

Table of Contents

1 Introduction
    1.1    1.1 Notational Conventions
    1.2    1.2 Purpose of the Choreography Description Language
    1.3    1.3 Goals
    1.4    1.4 Relationship with XML and WSDL
    1.5    1.5 Relationship with Business Process Languages
    1.6 Time Assumptions
2 Choreography Description Language Model
    2.1    2.1 WS-CDL Model Overview
    2.2 Choreography    2.2 WS-CDL Document Structure
        2.2.1 Package         2.2.2        2.2.1 Choreography Package
        2.2.2 Including WS-CDL Type Definitions
        2.2.3 WS-CDL document Naming and Linking
        2.2.3        2.2.4 Language Extensibility and Binding
        2.2.4        2.2.5 Semantics
    2.3    2.3 Collaborating Parties
        2.3.1        2.3.1 Role Types
        2.3.2 Participant Types         2.3.3        2.3.2 Relationship Types
        2.3.4        2.3.3 Participant Types
        2.3.4 Channel Types
    2.4    2.4 Information Driven Collaborations
        2.4.1        2.4.1 Information Types
        2.4.2        2.4.2 Variables
            2.4.2.1        2.4.3 Expressions
        2.4.3            2.4.3.1 WS-CDL Supplied Functions
        2.4.4 Tokens
        2.4.4        2.4.5 Choreographies
        2.4.5        2.4.6 WorkUnits
        2.4.6 Including Choreographies         2.4.7        2.4.7 Choreography Life-line
        2.4.8        2.4.8 Choreography Recovery             2.4.8.1Exception Block             2.4.8.2 Finalizer Block     2.5Handling
        2.4.9 Choreography Finalization
        2.4.10 Choreography Coordination
    2.5 Activities
        2.5.1        2.5.1 Ordering Structures
            2.5.1.1            2.5.1.1 Sequence
            2.5.1.2            2.5.1.2 Parallel
            2.5.1.3            2.5.1.3 Choice
        2.5.2        2.5.2 Interacting
            2.5.2.1            2.5.2.1 Interaction Based Information Alignment
            2.5.2.2 Protocol Based Information Exchanges             2.5.2.3            2.5.2.2 Interaction Life-line
            2.5.2.4            2.5.2.3 Interaction Syntax
        2.5.3        2.5.3 Composing Choreographies
        2.5.4        2.5.4 Assigning Variables
        2.5.5        2.5.5 Marking Silent Actions
        2.5.6        2.5.6 Marking the Absence of Actions
        2.5.7 Finalizing a Choreography
3 Example
4 Relationship with the Security framework
5 Relationship with the Reliable Messaging framework
6 Relationship with the Transaction/CoordinationCoordination framework
7 AcknowledgmentsRelationship with the Addressing framework
8 ReferencesConformance
9 Acknowledgments
10 References
11 Last Call Issues
    11.1 Issue 1
    11.2 Issue 2
12 WS-CDL XSD Schemas


10 WS-CDL Supplied Functions1 Introduction

For many years, organizations have being developing solutions for automating their peer-to-peer collaborations, within or across their trusted domain, in an effort to improve productivity and reduce operating costs.

The past few years have seen the Extensible Markup Language (XML) and the Web Services framework developing as the de-factode facto choices for describing interoperable data and platform neutral business interfaces, enabling more open business transactions to be developed.

Web Services are a key component of the emerging, loosely coupled, Web-based computing architecture. A Web Service is an autonomous, standards-based component whose public interfaces are defined and described using XML. Other systems may interact with a Web Service in a manner prescribed by its definition, using XML based messages conveyed by Internet protocols.

The Web Services specifications offer a communication bridge between the heterogeneous computational environments used to develop and host applications. The future of E-Business applications requires the ability to perform long-lived, peer-to-peer collaborations between the participating services, within or across the trusted domains of an organization.

The Web Service architecture stack targeted for integrating interacting applications consists of the following components:

The Web Services Choreography specification is targeted for composing interoperable, peer-to-peeraimed at the composition of interoperable collaborations between any type of party regardless of the supporting platform or programming model used by the implementation of the hosting environment.

1.1 Notational Conventions

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC-2119 [2].[RFC2119].

The following namespace prefixes are used throughout this document:

Prefix Namespace URI Definition
wsdl http://www.w3.org/2004/08/wsdl WSDL 2.0 namespace for WSDL framework.
cdl http://www.w3.org/2004/10/ws-chor/cdlhttp://www.w3.org/2004/12/ws-chor/cdl WSCDL namespace for Choreography language.Description Language.
xsi http://www.w3.org/2001/XMLSchema-instance Instance namespace as defined by XSD [11].[XMLSchemaP1].
xsd http://www.w3.org/2001/XMLSchema Schema namespace as defined by XSD [12].[XMLSchemaP2].
tns (various) The "this namespace" (tns) prefix is used as a convention to refer to the current document.
(other) (various) All other namespace prefixes are samples only. In particular, URIs starting with "http://example.com" represent some application-dependent or context-dependent URIs [4].[RFC2396].

This specification uses an informal syntax to describe the XML grammar of a WS-CDL document:

  • The syntax appears as an XML instance, but the values indicate the data types instead of values.

  • Characters are appended to elements and attributes as follows: "?" (0 or 1), "*" (0 or more), "+" (1 or more).

  • Elements names ending in """. . ." (such as <element/><element. . ./> or <element>)<element. . .>) indicate that elements/attributes irrelevant to the context are being omitted.

  • Grammar in bold has not been introduced earlier in the document, or is of particular interest in an example.

  • <-- extensibility element --> is a placeholder for elements from some "other" namespace (like ##other in XSD).

  • The XML namespace prefixes (defined above) are used to indicate the namespace of the element being defined.

  • Examples starting with <?xml contain enough information to conform to this specification; othersother examples are fragments and require additional information to be specified in order to conform.

An XSD schemas areis provided as a formal definition of WS-CDL grammar (see Section 9).11).

1.2 Purpose of the Choreography Description Language

Business or other activities that involve multipledifferent organizations or independent processes are engaged in a collaborative fashion to achieve a common business goal, such as Order Fulfillment.Fulfillment.

For the collaboration to work successfully, the rules of engagement between all the interacting parties must be provided. Whereas today these rules are frequently written in English, a standardized way for precisely defining these interactions, leaving unambiguous documentation of the parties and responsibilities of each, is missing.

The Web Services Choreography specification is targeted foraimed at being able to precisely describing peer-to-peerdescribe collaborations between any type of party regardless of the supporting platform or programming model used by the implementation of the hosting environment.

Using the Web Services Choreography specification, a contract containing a "global" definition of the common ordering conditions and constraints under which messages are exchangedexchanged, is produced that describesdescribes, from a global viewpointviewpoint, the common and complementary observable behavior of all the parties involved. Each party can then use the global definition to build and test solutions that conform to it. The mainglobal specification is in turn realized by combination of the resulting local systems, on the basis of appropriate infrastructure support.

The advantage of a contract withbased on a global definition approachviewpoint as opposed to anyone endpoint is that it separates the overall "global" process being followed by an individual business or system within a "domain of control" (an endpoint) from the definition of the sequencesequences in which each business or system exchanges information with others. This means that, as long as the "observable" sequence doessequences do not change, the rules and logic followed within thea domain of control (endpoint) can change at will.will and interoperability is therefore guaranteed.

In real-world scenarios, corporate entities are often unwilling to delegate control of their business processes to their integration partners. Choreography offers a means by which the rules of participation within a collaboration can be clearly defined and agreed to, jointly. Each entity may then implement its portion of the Choreography as determined by the common or global view. It is the intent of CDL that the conformance of each implementation to the common view expressed in CDL is easy to determine.

The figure below demonstrates a possible usage of the Choreography Description Language.

diagram of integration of different Web Services based applications

Figure 1: Integrating Web Services based applications using WS-CDL

In Figure 1, Company A and Company B wish to integrate their Web Services based applications. The respective business analysts at both companies agree upon the services involved in the collaboration, their interactionsinteractions, and their common ordering and constraint rules under which the interactions occur andoccur. They then generate a Choreography Description Language based representation. In this example, a Choreography specifies the interoperability andinteractions between services across business entities,entities ensuring interoperability, while leaving actual implementation decisions in the hands of each individual company:

  • Company "A" relies on a WS-BPEL [18][WSBPEL] solution to implement its own part of the Choreography

  • Company "B", having greater legacy driven integration needs, relies on a J2EE [25][J2EE] solution incorporating Java and Enterprise Java Bean Components or a .NET [26][C#S] solution incorporating C# to implement its own part of the Choreography

Similarly, a Choreography can specify the interoperability and interactions between services within one business entity.

1.3 Goals

The primary goal of a Choreography Description Language is to specify a declarative, XML based language that defines from a global viewpoint the common and complementary observable behavior, where messagebehavior specifically, the information exchanges occur,that occur and whenthe jointly agreed ordering rules arethat need to be satisfied.

Some additionalMore specifically, the goals of this definition languagethe Choreography Description Language are to permit:

1.4 Relationship with XML and WSDL

ThisThe WS-CDL specification depends on the following specifications: XML 1.0 [9],[XML], XML-Namespaces [10],[XMLNS], XML-Schema 1.0 [11, 12][XMLSchemaP1], [XMLSchemaP2] and XPointer [XPTRF]. Support for including and XPath 1.0 [13].referencing service definitions given in WSDL 2.0 [WSDL20] is a normative part of the WS-CDL specification. In addition, support for including and referencing service definitions given in WSDL 2.0 [7]1.1 as constrained by WS-I Basic Profile [Action: add references] is a normative part of thisthe WS-CDL specification.

1.5 Relationship with Business Process Languages

A Choreography Description Language is not an "executable business process description language" [16, 17, 18, 19, 20]or an implementation language [23].language. The role of specifying the execution logic of an application will be covered by these [XLANG], [WSFL], [WSBPEL], [BPML], [XPDL], [JLS], [C#S] and other specifications.

A Choreography Description Language does not depend on a specific business process implementation language. Thus, it can be used to specify truly interoperable, peer-to-peercollaborations between any type of party regardless of the supporting platform or programming model used by the implementation of the hosting environment. Each party, adhering to a Choreography Description Language collaboration representation, could be implemented using completely different mechanisms such as:

  • Applications, whose implementation is based on executable business process languages [16, 17, 18, 19, 20][XLANG], [WSFL], [WSBPEL], [BPML], [XPDL]

  • Applications, whose implementation is based on general purpose programming languages [23, 26][JLS], [C#S]

  • Or human controlled software agents

2 Choreography Description Language Model

This section introduces the Web Services Choreography Description Language (WS-CDL) model.

2.1 WS-CDL Model Overview

WS-CDL describes interoperable, peer-to-peer collaborations between parties. In order to facilitate these collaborations, services commit onto mutual responsibilities by establishing Relationships. Their collaboration takes place in a jointly agreed set of ordering and constraint rules, whereby messages areinformation is exchanged between the parties.

The ChoreographyWS-CDL model consists of the following notations: Participants, Rolesentities:

2.2 ChoreographyWS-CDL Document Structure

A WS-CDL document is simply a set of definitions. Each definition is a named construct that can be referenced. There is a package element at the root, and the individual Choreography type definitions inside.

2.2.1 Choreography Package

A WS-CDLChoreography Package aggregates a set of ChoreographyWS-CDL type definitions, provides a namespace for the definitions and through the use of XInclude [27],[XInclude], MAY syntactically includes Choreographyinclude WS-CDL type definitions that are defined in other Choreography Packages.

The syntax of the package construct is:;is:

<package  
   name="ncname" 
   author="xsd:string"?
    version="xsd:string"version="xsd:string"?
   targetNamespace="uri"
    xmlns="http://www.w3.org/2004/10/ws-chor/cdl/">xmlns="http://www.w3.org/2004/12/ws-chor/cdl">
   informationType*
   token*
   tokenLocator*
   roleType*
   relationshipType*
   participantType*
   channelType*
   Choreography-Notation*
</package>

The Choreography Package contains:

  • Zero or more Information Types

  • Zero or more Tokens and Token Locators

  • Zero or more Role Types

  • Zero or more Relationship Types

  • Zero or more Participant Types

  • Zero or more Channel Types

  • Zero or more Package-level Choreographies

The top-level attributes name, author,name, author, and version define authoring properties of the Choreography document.

The targetNamespace attribute provides the namespace associated with all WS-CDL type definitions contained in this Package.Choreography Package. WS-CDL type definitions included toin this PackagePackage, using the inclusion mechanism, mayMAY be associated with other namespaces.

The elements informationType, token, tokenLocator, roleType, relationshipType,informationType, token, tokenLocator, roleType, relationshipType, participantType and channelType are sharedMAY be used as elements by all the Choreographies defined within this Choreography Package.

Within a WS-CDL Package, language constructs that need to be uniquely named MUST use the attribute name for specifying a distinct name.2.2.2 Choreography document Naming and LinkingIncluding WS-CDL Type Definitions

WS-CDL documents MUST be assigned a name attribute oftype NCNAME that serves as a lightweight form of documentation. The targetNamespace attributedefinitions or fragments of WS-CDL type URI MUSTdefinitions can be specified. The URI MUST NOTsyntactically reused in any WS-CDL type definition by using XInclude [XInclude]. The assembly of large WS-CDL type definitions from multiple smaller, well-formed WS-CDL type definitions or WS-CDL type definitions fragments is enabled using this mechanism.

Inclusion of fragments of other WS-CDL type definitions SHOULD be done carefully in order to avoid duplicate definitions (Variables, blocks, etc.). A WS-CDL processor MUST ensure that the document is correct before processing it. The correctness may involve XML well-formedness as well as semantic ;checks, such as unicity of Variable definitions, of a single root Choreography, etc.

The example below shows some possible syntactic reuses of Choreography type definitions.

<choreography name="newChoreography" root="true">
...
   <variable name="newVariable" informationType="someType"
             role="randomRome"/>
   <xi:include href="genericVariableDefinitions.xml" />
   <xi:include href="otherChoreography.xml"
               xpointer="xpointer(//choreography/variable[1]) />
... 
</choreography>

2.3 Collaborating Parties

The WSDL specification [7][WSDL20] describes the functionality of a service provided by a party based on a stateless, client-server model. The emerging Web Based applications require the ability to exchange messagesinformation in a peer-to-peer environment. In these types of environments a party represents a requester of services provided by another party and is at the same time a provider of services requested from other parties, thus creating mutual multi-party service dependencies.

A WS-CDL document describes how a party is capable of engaging in peer-to-peercollaborations with the same party or with different parties.

The Role Types, Participant Types, Relationship Types and Channel Types define the coupling of the collaborating parties.

2.3.2 ParticipantRelationship Types

A ParticipantRelationship Type identifies a set ofthe Role Types thatand Behaviors, where mutual commitments between two parties MUST be implemented by the same entity or organization. Its purpose is to group together the parts of the observable behavior that MUST be implemented by the same process. The syntax of the participantType construct is:; <participantType name="ncname"> <role type="qname" />+ </participantType> The attribute name is used for specifying a distinct name for each participantType element declared within a Choreography Package. An example is given below where the "SellerForBuyer" Role Type belonging to a "Buyer-Seller" Relationship Type is implemented by the Participant Type "Broker" which also implements the "SellerForShipper" Role Type belonging to a "Seller-Shipper" Relationship Type: <participantType name="Broker"> <role type="tns:SellerForBuyer" /> <role type="tns:SellerForShipper" /> </participantType> 2.3.3 Relationship Types A Relationship Type identifies the Role Type and Behaviors where mutual commitments between two parties MUST be made for themmade for them to collaborate successfully. For example the Relationship Types between a Buyer and a Seller could include:

Although Relationship Types are always between two Role Types, Choreographies involving more than two Role Types are possible. For example if the purchase of goods involved a third-party Shipper contracted by the Supplier to deliver the Supplier's goods, then, in addition to the Purchasing"Purchasing" and Customer Management"Customer Management" Relationship Types described above, the following Relationship Types might exist:

The syntax of the relationshipType construct is:;is:

The attribute name is used for specifying a distinct name for each relationshipType element declared within a Choreography Package.

A relationshipType element MUST have exactly two Role Types defined. WithinEach Role Type is specified by the type attribute within the role element.

Within each role element, the optionalOPTIONAL attribute behavior identifies the commitment of a party as aan XML-Schema list of behavior types belonging to thethis Role Type specified by the type attribute of the role element.Type. If the behavior attribute is missing then all the behaviors belonging to thethis Role Type specified by the type attribute of the role elementare identified as the commitment of a party.

2.3.4 Channel2.3.3 Participant Types

A Channel realizesParticipant Type identifies a pointset of collaboration between partiesRole Types that MUST be implemented by specifying where and how informationthe same logical entity or organization. Its purpose is exchanged. Additionally, Channel information can be passed among parties. This allowsto group together the modelingparts of both static and dynamic message destinations when collaborating within a Choreography. For example, a Buyer could specify Channel information tothe observable behavior that MUST be used for sending delivery information. The Buyer could then sendimplemented by the Channel information tosame logical entity or organization.

The syntax of the participantType construct is:

The attribute name is used for specifying a distinct name for each participantType element declared within a Choreography Package.

Within the participantType element, one or more role elements identify the Role Types that MUST be implemented by this Participant Type. Each Role Type is specified by the type attribute of the role element. A specific Role Type MUST NOT be specified in more than one participantType element.

An example is given below where the "SellerForBuyer" Role Type belonging to a "Buyer-Seller" Relationship Type is implemented by the Participant Type "Broker" which also implements the "SellerForShipper" Role Type belonging to a "Seller-Shipper" Relationship Type:

2.3.4 Channel Types

A Channel realizes a point of collaboration between parties by specifying where and how information is exchanged between collaborating parties. Additionally, Channel information can be passed among parties in information exchanges. The Channels exchanged MAY be used in subsequent Interaction activities. This allows the modeling of both static and dynamic message destinations when collaborating within a Choreography. For example, a Buyer could specify Channel information to be used for sending delivery information. The Buyer could then send the Channel information to the Seller who then forwards it to the Shipper. The Shipper could then send delivery information directly to the Buyer using the Channel information originally supplied by the Buyer.

A Channel Type MUST describe the Role Type and the reference type of a party, being the target of an Interaction,information exchange, which is then used for determining where and how to send/receivesend or receive information to/intoto or into the party.

A Channel Type MAY specify the instance identity of an entity implementing the behavior(s) of a party, being the target of an Interaction.information exchange.

A Channel Type MAY describe one or more logical conversations between parties, where each conversation groups a set of related messageinformation exchanges.

One or more Channel(s) MAY be passed around from one Roleparty to another.another in an information exchange. A Channel Type MAY restrict the Channel Type(s) allowed tobe exchanged betweenused to:

The syntax of the channelType construct is:;is:

The attribute name is used for specifying a distinct name for each channelType element declared within a Choreography Package.

The optionalOPTIONAL attribute usage is used to restrict the number of times a Channel of this Channel Type can be used.

The optionalOPTIONAL attribute action is used to restrict the type of information exchange that can be performed when using a Channel of this Channel Type. The type of information exchange performed could either be a request-respond exchange, a request exchange, or a respond exchange. The default for this attribute is set to "request".

The OPTIONAL element passing describes the Channel Type(s) of the Channel(s) that are exchangedpassed, from one Role Typeparty to another Role Type,another, when using an information exchange on a Channel of this Channel Type in an Interaction. In the case where the operation used to exchange the Channel is of request-response type, then theType. The OPTIONAL attribute action within the passing element defines if thea Channel will be exchangedpassed during thea request orexchange, during the response.a response exchange or both. The Channels exchanged MAYdefault for this attribute is set to "request". The OPTIONAL attribute new within the passing element when set to "true" enforces a passed Channel to be used in subsequent Interaction activities.always distinct. If the element passing is missing then this Channel Type MAY be used for exchanging business documents and all Channel Types withoutinformation but MUST NOT be used for passing Channels of any restrictions.Channel Type.

The element role is used to identify the Role Type of a party, being the target of an Interaction,information exchange, which is then used for statically determining where and how to send or receive information to or into the party.

The element reference is used for describing the reference type of a party, being the target of an Interaction,information exchange, which is then used for dynamically determining where and how to send or receive information to or into the party. The servicereference of a party is distinguished by a Token as specified by the name attribute of the token element within the reference element.

The optionalOPTIONAL element identity MAY be used for identifying an instance of an entity implementing the behavior of a party and for identifying a logical conversation between parties. The processidentity and the different conversations are distinguished by a set of Tokens as specified by the name attribute of the token element within the identity element.

The following rule applies for Channel Type:

The example below shows the definition of the Channel Type RetailerChannel."RetailerChannel" that realizes a point of collaboration with a Retailer. The Channel Type identifies the Role Type of the Retailer as the "tns:Retailer"."Retailer". The address ofinformation for locating the ChannelRetailer is specified in the reference element, whereas the processinstance can beof a process implementing the Retailer is identified for correlation purposes using the identity element for correlation purposes.element. The passingelement passing allows only a Channel instanceof the ConsumerChannel"ConsumerChannel" Type to be sent over the RetailerChannel Type.;passed in a request information exchange through a Channel of "RetailerChannel" Type.

2.4 Information Driven Collaborations

Parties make progress within a collaboration,collaboration when recordings of exchanged information are made, and changes to observable information changesoccur, that then cause ordering constraints to be fulfilled. A WS-CDL document allows defining information within a Choreography that can influence the observable behavior of the collaborating parties.

Variables capture information about objects in the Choreography, such as the messagesinformation exchanged or the observablesobservable information of the Roles involved. TokenTokens are aliases that can be used to reference parts of a Variable .Variable. Both Variables and Tokens have Information Types that define the type of information the Variable contains or the Token contain.references.

2.4.1 Information Types

Information typesTypes describe the type of information used within a Choreography. By introducing this abstraction, a Choreography definition avoids referencing directly the data types, as defined within a WSDL document or an XML Schema document.

The syntax of the informationType construct is:;is:

The attribute name is used for specifying a distinct name for each informationType element declared within a Choreography Package.

The OPTIONAL attributes type,type and element describe the document to betype of information used within a Choreography as a WSDL 1.1 Message Type, an XML Schema type, a WSDL 2.0 Schema element or an XML Schema element respectively.element. The document istype of information is exclusively one of these types exclusively.the aforementioned.

When the OPTIONAL attribute exceptionType is set to "true", this Information Type is an Exception Type and MAY map to a WSDL fault type. When the attribute exceptionType is set to "false", this information type MUST NOT map to a WSDL fault type. The default for this attribute is set to "false".

In case of WSDL 2.0, the attribute element within the informationType refers to a unique WSDL 2.0 faultname when the attribute exceptionType is set to "true".

The examples below show some possible usages of the informationType construct.

2.4.2 Variables

Variables capture information about objects in a Choreography as defined by their usage :usage:

The value of Variables:

The variableDefinitions construct is used for defining one or more Variables within a Choreography block.Choreography.

The syntax of the variableDefinitions construct is:;is:

TheA Variable defined Variables can be ofusing the following types:attribute informationType specifies either Information Exchange Capturing Variables,Variables or State Capturing Variables. TheA Variable defined using the attribute informationType describesspecifies Exception Capturing Variables when the referenced information type of the object captured byhas the attribute exceptionType set to "true". A Variable defined using the attribute channelType specifies Channel Capturing Variables. The attributeattributes informationType and channelType describes the type of the channel object captured by the Variableare mutually exclusive.

The optionalOPTIONAL attribute mutable,mutable, when set to "false" describes"false", specifies that the Variable information when initialized,cannot change anymore.once initialized. The default value for this attribute is "true".

The optionalOPTIONAL attribute silent, when set to "true" specifies that there SHOULD NOT be any activity used for creating or changing this Variable in the Choreography. A silent Variable is used to represent the result of actions within a party that are either not observable or are of no interest from the WS-CDL perspective. The default value for this attribute is "false".

The OPTIONAL attribute free, when set to "true" describesspecifies that a Variable defined in an enclosing Choreography is also used in this Choreography, thus sharing the Variables information. The following rules apply in this case:

when sharing the Variables informationThe optionalOPTIONAL attribute free,free, when set to "false" describesspecifies that a Variable is defined in this Choreography.

The default value for the free attribute is "false".

The optional attribute silentAction, when set to "true" describes that there SHOULD NOT be any activity used for creating or changing this Variable in the Choreography, if these operations should not be observable to other parties. The default value for this attribute is "false". The optionalOPTIONAL attribute roleTyperoleTypes is used to specify thean XML-Schema list of one or more Role TypeType(s) of a party at which the Variable information will reside. The following rules apply toA Variable Definitions: The attribute namedefined without a Role Type is used for specifying a distinct name for each variable element declared within a variableDefinitions element when needed. The Variables with Role Type not specified MUST have distinct names. The Variables with Role Type specified MUST have distinct names, when their Role Type is the same A Variable defined without a Role Type is equivalent toequivalent to a Variable that is defined at all the Role Types that are part of the Relationship Types of the Choreography where the Variable is defined. For example if Choreography C1"C1" has Relationship Type R"R" that has a tuple (Role1, Role2),Roles "Role1", "Role2", then a Variable x"var" defined in Choreography C1"C1" without a roleTyperoleTypes attribute means it is defined at Role1both "Role1" and Role2 2.4.2.1"Role2".

The attribute name is used for specifying a distinct name for each Variable declared within the variableDefinitions element. In those cases where the visibility of a Variable is wholly within a single Role then that Role needs to be named in the definition of the Variable as the Role Type using the attribute roleTypes. In those cases where the Variable is shared amongst a subset of Roles within a Choreography those Roles need to be listed within the definition of <