Copyright
 © 2005 W3C®
(MIT, ERCIM,
Keio), All Rights Reserved.
W3C liability,
trademark
and document
use rules apply. © 2004Â
The Web Services Choreography Description Language (WS-CDL) is
an XML-based language that describes peer-to-peer collaborations of
participants by
defining, from a global viewpoint, their common and complementary
observable behavior; where ordered message exchanges result in
accomplishing a common business goal.parties
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 participant
regardless of the supporting platform or programming model used by
the implementation of the hosting environment.party
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 aLastCallWorkingDraftthe
of9 November
2005 W3C
Candidate Recommendation
of "Web Services Choreography
Description WebLanguagedocument.TheLastCallreviewperiodLanguage,
Version 1.0".
W3C publishes
a technical
report as a
Candidate Recommendation
to indicate
that the
document is
believed to
be stable and
to encourage
implementation by
the developer
community. Candidate
Recommendation status
is described
in section
7.1.1 of the
Process Document.
Comments can
be sent until
31 endsJanuaryMarch
2006. 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.2005.
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.
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. Issues are recorded in the group's issue section.
TheWorkingGroupidentifiedtwoissues.Thoseissuesmaybedroppedorfixedinthefuture,buttheWorkingGroupdoesnotbelievethattheresolutionwillresultinasubstantiveThis
document is based upon the Last
Call Working Draft published on
change.1217
December 2004. Changes between these two
versions are described in a diff
document.October
The specific
entrance criteria
to the
Proposed Recommendation
phase shall
be as
follows:
There MUST be
examples that
exhibit all
of the key
features of
WS-CDL such
that the
examples:
Where "valid
WS-CDL" means
that it
conforms to
the specification
both in terms
of the schema
and the
operational semantics
of WS-CDL.
Where "implementations"
mean tools
that process
WS-CDL documents
and produce
end-point(s).
Where "end
point" means
a web
service.
Where "platform"
means a
software stack
capable of
supporting the
execution of
a web
service.
Where "interoperate"
means two web
services playing
at least two
distinct roles.
Interoperability concerns
such as
alignment protocol,
coordination protocol
and adressing
are implementation
details.
Detailed implementation requirements and the invitation for participation in the Implementation Report are provided in the Implementation Report Plan
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 WorkingCandidate
Recommendation 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.Draft
1 Introduction
    1.1 Notational Conventions
    1.2 Purpose of theChoreographyDescriptionWS-CDLLanguage
    1.3 Goals
    1.4 Relationship with XML and
WSDL
    1.5 Relationship with
Business Process Languages
    1.6 Time Assumptions
    1.7
Authoritative
Schema
2 ChoreographyDescriptionLanguageModelWS-CDL
Model Overview    2.1
3
WS-CDL Document
Structure    2.2
    3.1
Choreography Package        2.2.1
    3.2
Including WS-CDL Type
Definitions        2.2.2
    3.3
WS-CDL document
Naming and Linking        2.2.3
    3.4
Language Extensibility        2.2.4
andBinding    3.5
Semantics        2.2.5
4
Collaborating
    2.3Parties        2.3.1RoleTypes        2.3.2RelationshipTypes        2.3.3ParticipantTypes        2.3.4ChannelTypesParticipants    2.4
    4.1
RoleType
    4.2
RelationshipType
    4.3
ParticipantType
    4.4
ChannelType
5 Information Driven
Collaborations
        2.4.1InformationTypes    5.1
InformationType        2.4.2
    5.2
Variables
    5.3
Expressions        2.4.3
        5.3.1
WS-CDL Supplied
Functions            2.4.3.1
        2.4.4Tokens        2.4.5Choreographies        2.4.6WorkUnits    5.4
Token
and TokenLocator        2.4.7
    5.5
Choreography
    5.6
WorkUnit
    5.7
Choreography Life-line
    5.8
Choreography Exception
Handling        2.4.8
    5.9
Choreography
Finalization        2.4.9
    5.10
Choreography
Coordination        2.4.10
6
Activities    2.5
    6.1
Ordering Structures        2.5.1
        6.1.1
Sequence            2.5.1.1
        6.1.2
Parallel            2.5.1.2
        6.1.3
Choice            2.5.1.3
    6.2
Interacting        2.5.2
        6.2.1
Interaction
Based Information Alignment            2.5.2.1
        6.2.2
Interaction Life-line            2.5.2.2
        6.2.3
Interaction Syntax            2.5.2.3
    6.3
Composing
Choreographies        2.5.3
    6.4
Assigning Variables        2.5.4
    6.5
Marking Silent Actions        2.5.5
    6.6
Marking the Absence of
Actions        2.5.6
    6.7
Finalizing a
Choreography        2.5.7
3Example47 Interoperability
with other
SpecificationsRelationship
    7.1
Interoperability
with Security theframework5frameworksRelationship
    7.2
Interoperability
with Reliable Messaging
theframework6frameworksRelationship
    7.3
Interoperability
with Coordination theframework7frameworksRelationship
    7.4
Interoperability
with Addressing
theframeworksframework
8 Conformance
    8.1
Conforming
WS-CDL documents
    8.2
Endpoint
conformance
9 Acknowledgments
10 References
11LastCallIssues    11.1Issue1    11.2Issue2    10.1
Normative
References12
    10.2
Informative
References
For many years, organizations have
been 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.being
The past few years have seen the Extensible Markup Language (XML) and the Web Services framework developing as the de 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:
SOAP: defines the basic formatting of a message and the basic delivery options independent of programming language, operating system, or platform. A SOAP compliant Web Service knows how to send and receive SOAP-based messages
Web
Services Description
Language (WSDL): describes
the static interface of a Web Service. It defines the message set
and the message characteristics of end points. Data types are
defined by XML Schema specification, which supports rich type
definitions and allows expressing any kind of XML type requirement
for the application data (Note:
WSDL 2.0 also
supports types
defined in
other systems
such as DTD,
RelaxNG and
RDF)WSDL
Registry: allows publishing the availability of a Web
Service and its discovery from service requesters using
sophisticated searching
mechanismsmechanims
Security layer: ensures that exchanged information are
not modified or forged in a verifiable manner and that
participants can be
authenticatedparties
Reliable Messaging layer: provides exactly-once and
guaranteed delivery of information exchanged between
participantsparties
Context, Coordination and Transaction layer: defines
interoperable mechanisms for propagating context of long-lived
business transactions and enables
participants to meet
correctness requirements by following a global agreement
protocolparties
Business Process Languages layer: describes the execution logic of Web Services based applications by defining their control flows (such as conditional, sequential, parallel and exceptional execution) and prescribing the rules for consistently managing their non-observable data
Choreography layer: describes collaborations of
participants by defining
from a global viewpoint their common and complementary observable
behavior, where information exchanges occur, when the jointly
agreed ordering rules are satisfiedparties
The Web Services Choreography specification is aimed at the
composition of interoperable collaborations between any type of
participant regardless of
the supporting platform or programming model used by the
implementation of the hosting environment. A
choreography description
is the
multi-participant contract
that describes
this composition
from a global
perspective. The
Web Services
Choreography Description
Language (WS-CDL)
is the means
by which this
technical contract
is described.party
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 [RFC2119].
The following namespace prefixes are used throughout this document:
| Prefix | Namespace URI | Definition |
|---|---|---|
| wsdl |
|
WSDL 2.0 namespace for WSDL framework. |
| cdl |
|
WSCDL namespace for Choreography Description Language. |
| xsi | http://www.w3.org/2001/XMLSchema-instance | Instance namespace as defined by XSD [XMLSchemaP1]. |
| xsd | http://www.w3.org/2001/XMLSchema | Schema namespace as defined by XSD [XMLSchemaP2]. |
| tns | (various) | The "this namespace" (tns) prefix is used as a convention to refer to the current document. |
| rns | (various) | A namespace prefix used to refer to an (example and fictitious) WSDL interface specification. |
| (other) | (various) | All other namespace prefixes are
|
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; other examples
are fragments and require additional information to be specified in
order to conform.<?xml
An XSD is provided as a formal definition of WS-CDL grammar (see Section 11).
Where there is any discrepancy between the text of this specification, the fragments of informal schema and the full formal schema in the appendix then it is an error in the specification. Should such an error come to light please notify W3C. While awaiting resolution, the text takes priority over the formal schema in the appendix, which takes priority over the informal schema fragments.
Business or other activities that involve different organizations or independent processes are engaged in a collaborative fashion to achieve a common business goal, such as Order Fulfillment.
For the collaboration to work successfully, the rules of
engagement between all the interacting
participants 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
partiesparticipants and
responsibilities of each, is missing.parties
The WebServicesWS-CDL
specification is aimed at being able to precisely describe
collaborations between any type of
Choreographyparticipant regardless of
the supporting platform or programming model used by the
implementation of the hosting environment.party
Using the WebServicesWS-CDL
specification, a contract containing a "global" definition of the
common ordering conditions and constraints under which messages are
exchanged, is produced that describes, from a global viewpoint, the
common and complementary observable behavior of all the
Choreographyparticipants involved.
Each partiesparticipant can then
use the global definition to build and test solutions that conform
to it. The global specification is in turn realized by combination
of the resulting local systems, on the basis of appropriate
infrastructure support.party
The advantage of a contract based on a global viewpoint as
opposed to any
one 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 sequences in which each business or system exchanges
information with others. This means that, as long as the
"observable" sequences do not change, the rules and logic followed
within a domain of control (endpoint) can change at will and
interoperability is therefore guaranteed.anyone
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
ChoreographyWS-CDL that the conformance
of each implementation to the common view expressed
CDLintherein
is easy to determine.CDL
The figure below demonstrates a possible usage of
theChoreographyDescriptionLanguage.Figure1:IntegratingWebServicesbasedapplicationsusingWS-CDL.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 interactions, and their common ordering and
constraint rules under which the interactions occur. They then
generate a ChoreographyDescriptionWS-CDL based
representation. In this example, a
Languagechoreography
specifies the interactions between services across business
entities ensuring interoperability, while leaving actual
implementation decisions in the hands of each individual
company:Choreography
Company "A" relies on a WS-BPEL [WSBPEL]
solution to implement its own part of the
choreographyChoreography
Company "B", having greater legacy driven integration needs,
relies on a J2EE [J2EE] solution incorporating
Java and Enterprise Java Bean Components or a .NET [C#S] solution incorporating C# to implement its own
part of the
choreographyChoreography
Similarly, a
choreography can
specify the interoperability and interactions between services
within one business entity.Choreography
The primary goal of aChoreographyDescriptionthe
WS-CDL specification is to
specify a declarative, XML based language that defines from a
global viewpoint the common and complementary observable behavior
specifically, the information exchanges that occur and the jointly
agreed ordering rules that need to be satisfied.Language
More specifically, the goals of the
ChoreographyDescriptionWS-CDL
specification are to permit:Language
Reusability. The same
choreography
definition is usable by different
Choreographyparticipants operating
in different contexts (industry, locale, etc.) with different
software (e.g. application software)parties
Cooperation. Choreographies define the sequence of
exchanging messages between two (or more) independent
participants or
processes by describing how they should cooperateparties
Multi-Party Collaboration. Choreographies can be
defined involving any number of
participants or
processesparties
Semantics. Choreographies can include human-readable
documentation and semantics for all the components in the
choreographyChoreography
Composability. Existing
choreographies
can be combined to form new
Choreographieschoreographies
that may be reused in different contextsChoreographies
Modularity. Choreographies can be defined using an
"inclusion" facility that allows a
choreography to be
created from parts contained in several different
ChoreographychoreographiesChoreographies
Information Driven Collaboration. Choreographies
describe how
participants make
progress within a collaboration, through the recording of exchanged
information and changes to observable information that cause
ordering constraints to be fulfilled and progress to be madeparties
Information Alignment. Choreographies allow the
participants that take
part in
partieschoreographies to
communicate and synchronize their observable informationChoreographies
Exception Handling. Choreographies can define how
exceptional or unusual conditions that occur while the
choreography is
performed are handledChoreography
Transactionality. The processes or
participants that take
part in a
partieschoreography can
work in a "transactional" way with the ability to coordinate the
outcome of the long-lived collaborations, which include multiple
participants, each with their own, non-observable business rules
and goalsChoreography
Specification Composability. This specification
is
intended to work alongside
willand/or complement other
specifications such as the WS-Reliability [WSRM], WS-Composite Application Framework (WS-CAF)
[WSCAF], WS-Security [WSS],
Business Process Execution Language for WS (WS-BPEL) [WSBPEL], ebXML
Business Process
Specification Schema
[ebBP20],
[BPSS11], etc.and
The WS-CDL specification depends on the following
specifications: XML 1.0 [XML], XML-Namespaces
[XMLNS], XML-Schema 1.0 [XMLSchemaP1], [XMLSchemaP2] and
XPath
1.0 [XPTRF]. Support for
including and 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 1.1 as constrained by WS-I Basic
Profile XPointer[Action:add[BP11] is a
normative part of the WS-CDL specification.references]
AChoreographyDescriptionWS-CDL is not an
"executable business process description language" or an
implementation 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.Language
AChoreographyDescriptionWS-CDL does not depend
on a specific business process implementation language. Thus, it
can be used to specify truly interoperable, collaborations between
any type of Languageparticipant
regardless of the supporting platform or programming model used by
the implementation of the hosting environment.
partyEachparty,adheringtoaChoreographyDescriptionLanguagecollaborationrepresentation,couldbeWS-CDL
may couple
with other
languages such
as those that
add further
computable semantic
definitions.implemented
Each participant, adhering to a WS-CDL collaboration representation, could be implemented using completely different mechanisms such as:
Clock synchronization is unspecified in the WS-CDL technical
specification and is considered design-specific. In specific
environments between involved
participants, it can be
assumed that all
parties,participants are
reasonably well synchronized on second time boundaries. However,
finer grained time synchronization within or across
partiesparticipants, or
additional support or control are undefined and outside the scope
of the WS-CDL specification.parties,
In the WebServicesChoreographyDescriptionLanguage(WS-CDL)model.event of
any ambiguity
or differentiation
between the
WS-CDL fragments
and the
appendix with
the full
schema, the
full schema
takes precedence.2.1
WS-CDL describes interoperable, peer-to-peer collaborations
between participants.
In order to facilitate these collaborations, services commit to
mutual responsibilities by establishing
parties.formal
relationships. Their collaboration takes place in
a jointly agreed set of ordering and constraint rules, whereby
information is exchanged between the
Relationships.participants.parties.
The WS-CDL model consists of the following entities:
ParticipantTypes,RoleroleType,
relationshipType and
TypesRelationshipparticipantType -
Within a
Typeschoreography,
information is always exchanged between
Choreography,participants within or
across trust boundaries. partiesARoleTypeenumeratestheobservablebehaviorapartyexhibitsinordertocollaboratewithotherparties.ARelationshipTypeidentifiesthemutualcommitmentsthatmustbeAll
interactions occur between
madetwopartiesforthemtocollaboratesuccessfully.AParticipantroles
being exhibited
by participants,
and are
constrained by
a relationship.
Within WS-CDL,
a participant is
Typeabstractly
modeled by a
participantType, a
role by a
roleType, and
a relationship
by a
relationshipType:grouping
informationType,
variable and
token -
TokensVariablesA
variable contains information
about commonly observable objects in a collaboration, such as the
information exchanged or the observable information of the
containroleTypes involved.
RolesTokensareA
token is an
alias that can be used to reference parts of a
aliasesVariable.Bothvariable.
Information exchange
variables, state
capturing variables and
Variablestokens have
TokensinformationTypes that
define the Typestype of
structureinformation the
whatvariable contains or
the Variabletoken referencesToken
choreography
- ChoreographiesChoreographiesA
choreography defines
collaborations between interacting defineparties:ChoreographyparticipantTypes:Life-line
channelType
- A Channelschannel realizes a
point of collaboration between
ChannelparticipantTypes by
specifying where and how information is partiesexchangedWorkexchanged.
Within WS-CDL,
channels are
abstractly modeled
as channelTypesUnits
workunit - A Workworkunit prescribes the
constraints that must be fulfilled for making
Unitprogress, and thus
performing progressactualwork, within a
workChoreographychoreographyActivities
activities and Orderingordering
structures - Activities
StructuresarethelowestlevelcomponentsoftheChoreographythatdescribe the
performactualwork.Orderingactions
performed within
a choreography.
Ordering structures combine
activities with other StructuresOrderingordering
structures in a nested structure to express the
ordering Structuresconditionsinwhichrules
of actions
performed within informationtheChoreographyisexchangedInteractiona
choreographyActivity
interaction
activity - An
interaction is the
basic building block of a InteractionChoreography,choreography.
It results in an exchange of information between
whichparticipants and
possible synchronization of their observable information
changesparties
andtheactualvaluesoftheexchangedinformationsemantics -
Semantics allow the creation of descriptions that can record the
semantic definitions of every component in the modelSemantics
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.Choreography
A Choreographychoreography
package aggregates a set of WS-CDL type
definitions, provides a namespace for the definitions and through
the use of XInclude [XInclude], MAY
syntactically include WS-CDL type definitions that are defined in
other PackageChoreographychoreography
packages.Packages.
The syntax of the package construct is:
<package
name="ncname"name="NCName"
author="xsd:string"?
version="xsd:string"?
targetNamespace="uri"
xmlns="http://www.w3.org/2004/12/ws-chor/cdl"> informationType* token* tokenLocator* roleType* relationshipType* participantType* channelType*xmlns="http://www.w3.org/2005/10/cdl">
<informationType/>*
<token/>*
<tokenLocator/>*
<roleType/>*
<relationshipType/>*
<participantType/>*
<channelType/>*
Choreography-Notation*
</package>
The ChoreographyPackagechoreography
package contains
the following
WS-CDL type
definitions:contains:
Zero or more InformationinformationTypesTypes
Zero or more tokens
and TokensTokentoken
locatorsLocators
Zero or more RoleroleTypesTypes
Zero or more RelationshiprelationshipTypesTypes
Zero or more ParticipantparticipantTypesTypes
Zero or more ChannelchannelTypesTypes
Zero or more Package-levelpackage-level
choreographiesChoreographies
The top-level attributes name , author
, and version define authoring properties of the
choreography
document.Choreography
The targetNamespace attribute provides the
namespace associated with all WS-CDL type definitions contained in
this Choreographychoreography
package. WS-CDL type definitions included in this
Package.package, using the
inclusion mechanism, MAY be associated with other namespaces.Package,
The elements informationType , token ,
tokenLocator , roleType ,
relationshipType , participantType and
channelType MAY be used as elements by all the
choreographies
defined within this ChoreographiesChoreographyPackage.choreography
package.2.2.2
WS-CDL type definitions or fragments of WS-CDL type definitions can be syntactically 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
SHOULD(variables, blocks,
etc.). A WS-CDL processor MUST ensure that the document is
(Variables,correctbeforeprocessingit.ThecorrectnessmayinvolveXMLwell-formednessaswellassemantic;checks,suchasunicityofVariabledefinitions,a ofsinglerootChoreography,conforming
WS-CDL document
[Conforming
Document].
It MAY verify
that the
document conforms
to the
provided schema
[WS-CDL
Schema].etc.
The example below shows some possible syntactic reuses of
WS-CDL type
definitions.Choreography
<choreography name="newChoreography" root="true">
...
<variable name="newVariable" informationType="someType"
role="randomRome"/>roleType="randomRoleType"/>
<xi:include href="genericVariableDefinitions.xml" />href="genericVariableDefinitions.xml"/>
<xi:include href="otherChoreography.xml"
xpointer="xpointer(//choreography/variable[1]) />xpointer="xpointer(//choreography/variable[1])"/>
...
</choreography>
WS-CDL documents MUST be assigned a name attribute of type NCNAME that serves as a lightweight form of documentation.
The targetNamespace attribute of type URI MUST be
specified.
The URI MUST NOT be a relative URI.
A reference to a definition
MUST be
made using a is"QName".QName.
Each WS-CDL type
definition has its own name scope.definition
Names within a name scope MUST be unique within
the WS-CDL document.a
The resolution of a
"QName" in WS-CDL is similar to the resolution of
QNamesa
"QName" as described by the XML
Schemas specification [XMLSchemaP1].QNames
andTo support
extending the WS-CDL language, this specification allows the use of
extensibility elements and/or attributes defined in other XML
Bindingnamespaces
inside any
WS-CDL language
element.namespaces.
Extensibility elements and/or attributes MUST use an XML namespace different from that of WS-CDL.
All extension namespaces used in a WS-CDL document MUST be declared.
Extensions MUST NOT
contradict the semantics
of any element or attribute from the WS-CDL namespace.change
Within a WS-CDL document, descriptions allowtherecordingmay
reference semantic definitions and other
documentation. The OPTIONAL ofdescription sub-element is
allowed inside any WS-CDL language element.
Descriptions MAY
be text or
document references
defined in
multiple different
human readable
languages. Where
machine processable, WS-CDL
parsers are not required to parse the contents of the
description
sub-element..
The information provided by the description
sub-element will allowreference the
forrecordingofdescriptions in any or
all of the following
semanticsareas:ways:
Text. ThiswillbeinplaintextorPlain
text, HTML possiblyandshouldbeor other
non-encoded text
formats may
apply (e.g.
text/plain, text/html,
text/sgml, text/xml,
etc.).brief
Document Reference. This
MAY contain a URI to a
document that more fully describes the
willcomponent.component
Machine Oriented Semantic Descriptions. This
MAY contain machine
processable definitions in languages such as RDF
[RDF] or OWL
willDescriptionsthatare[OWL].
This description
MAY contain a
URI.text
The semantics
of any
element or documentreferencesattribute
from the
WS-CDL namespace
SHOULD remain
unchanged and
MUST NOT be
candefinedinmultipledifferenthumanreadablelanguages.contradicted.2.3
The WSDL specification [WSDL20] describes
the functionality of a service provided by a
participant based on a
stateless, client-server model. The emerging Web Based applications
require the ability to exchange information in a peer-to-peer
environment. In these types of environments a
partyparticipant represents a
requester of services provided by another
partyparticipant and is at the
same time a provider of services requested from other
partyparticipants, thus
creating mutual
parties,multi-participant
service dependencies.multi-party
A WS-CDL document describes how a
participant is capable of
engaging in collaborations with the same
partyparticipant or with
different
partyparticipants.parties.
The RoleroleTypes,
TypesParticipantrelationshipTypes
, participantTypes,
TypesRelationshipand
TypesChannelchannelTypes define
Typesthecouplingofcollaborating
theparties.2.3.1RoleTypesARoleTypeenumeratestheobservableparticipants
and their
coupling.behavior
The typeRef complex type definitions used in participantTypes , relationshipTypes, and channelTypes are different for each. They are type definitions for different local elements even though they have the same tag name. The text in the following sections describes the different attributes and child elements of each.
A roleType
enumerates potential
observable behavior a
partyparticipant
can exhibit in order to
exhibitscollaboratewithotherinteract. For
parties.example, the "Buyer"
exampleRoleroleType is associated with
the purchasing of goods or services and the
"Supplier" TypeRoleroleType is associated with
providing those goods or services for a fee.Type
The syntax of the roleType construct is:
<roleTypename="NCName"> <behaviorname="ncname">name="ncname"name="NCName" interface="QName"? />+ </roleType>interface="qname"?
The attribute name is used forto
specify a distinct name for each
specifyingroleType element declared within a
Choreographychoreography
package.Package.
Within the roleType element,
a thebehavior
element specifies a subset of the observable behavior a
participant exhibits. A
partyRoleroleType MUST contain one
or more Typebehavior elements. The attribute
name within the behavior element is used
forto
specify a distinct name for each
specifyingbehavior element declared within a
roleType element.
The behavior element defines an OPTIONAL
interface attribute, which identifies a WSDL interface
type. A behavior without an interface
describes a RoleroleType that is not
required to support a specific Web Service interface.Type
A RelationshiprelationshipType
identifies the TypeRoleroleTypes and
Typesbehaviors, where
mutual commitments Behaviors,betweentwoMUST be made for
partiescollaborations to
themcollaboratebe
successful. For
successfully.example, the
exampleRelationshiprelationshipTypes between
a Types"Buyer" and a
Buyer"Seller" could
include:Seller
A "Purchasing" RelationshiprelationshipType, for the
initial procurement of goods or services, andType,
A "Customer Management" RelationshiprelationshipType to allow
the Type"Supplier" to
provide service and support after the goods have been purchased or
the service providedSupplier
Although RelationshiprelationshipTypes are
always between two TypesRoleTypes,roleTypes,
choreographies involving more than two
ChoreographiesRoleroleTypes are possible.
For Typesexample, if the
purchase of goods involved a third-party
example"Shipper" contracted by
the Shipper"Supplier" to
deliver the
Supplier"Supplier's" goods,
then, in addition to the "Purchasing" and "Customer Management"
Supplier'sRelationshiprelationshipTypes
described above, the following TypesRelationshiprelationshipTypes might
exist:Types
A "Logistics Provider" RelationshiprelationshipType between
the Type"Supplier" and the
Supplier"Shipper", andShipper,
A "Goods Delivery" RelationshiprelationshipType between
the Type"Buyer" and the
Buyer"Shipper"Shipper
The syntax of the relationshipType construct is:
<relationshipTypename="ncname"><rolename="NCName"> <roleType typeRef="QName" behavior="list oftype="qname"NCName"? />ncname"?<role<roleType typeRef="QName" behavior="list oftype="qname"NCName"? /> </relationshipType>ncname"?
The attribute name is used forto
specify a distinct name for each
specifyingrelationshipType element declared within a
Choreographychoreography
package.Package.
A relationshipType element MUST have exactly two
RoleroleTypes defined. Each
TypesRoleroleType is specified by
the Type
attribute within the
typeReftype
element. The "QName"
value of the
roleTyperoletypeRef attribute
of the
roleType element
MUST reference
the name of
a roleType.
Within each
element, the OPTIONAL attribute roleTyperolebehavior identifies
the commitment of a
participant as an
XML-Schema list of behavior types belonging to this
partyRoleroleType. If the
Type.behavior attribute is missing then all the behaviors
belonging to this RoleroleType are identified as
the commitment of a Typeparty.2.3.3ParticipantTypesAParticipantTypeidentifiesasetofRoleTypesthatMUSTbeimplementedparticipant.
If the by
attribute is present
then the
behaviors listed
MUST be a
proper subset
of those
belonging to
samelogicalentityororganization.Itsbehaviorpurposethis
roleType.group
A participantType
groups together
those parts of the
observable behavior that MUST be implemented by
thethea
participant .
A logical entity or
sameorganization
MAY be
represented by
more than one
participantType within
a choreography.organization.
The syntax of the participantType construct is:
<participantTypename="ncname"><rolename="NCName"> <roleType typeRef="QName" />+ </participantType>type="qname"
The attribute name is used forto
specify a distinct name for each
specifyingparticipantType element declared within a
Choreographychoreography
package.Package.
Within the participantType element, one or more
elements identify the roleTyperoleRoleroleTypes that MUST be
implemented by this TypesParticipantparticipantType. Each
Type.RoleroleType is specified by
the Type
attribute of the
typeReftype
element. The "QName"
value of the
roleTyperoletypeRef attribute
of the
roleType element
MUST reference
the name of
a roleType. A specific
RoleroleType MUST NOT be
specified in more than one TypeparticipantType
element.
An example is shown
below where the "SellerForBuyer" givenRoleroleType belonging to a
"Buyer-Seller" TypeRelationshiprelationshipType is
implemented by the TypeParticipantparticipantType "Broker"
which also implements the "SellerForShipper" TypeRoleroleType belonging to a
"Seller-Shipper" TypeRelationshiprelationshipType.Type:
<roleType name="Buyer">
. . .
</roleType>
<roleType name="SellerForBuyer">
<behavior name="sellerForBuyer" interface="rns:sellerForBuyerPT"/>
</roleType>
<roleType name="SellerForShipper">
<behavior name="sellerForShipper" interface="rns:sellerForShipperPT"/>
</roleType>
<roleType name="Shipper">
. . .
</roleType>
<relationshipType name="Buyer-Seller">
<role type="tns:Buyer"<roleType typeRef="tns:Buyer" />
<role type="tns:SellerForBuyer"<roleType typeRef="tns:SellerForBuyer" />
</relationshipType>
<relationshipType name="Seller-Shipper">
<role type="tns:SellerForShipper"<roleType typeRef="tns:SellerForShipper" />
<role type="tns:Shipper"<roleType typeRef="tns:Shipper" />
</relationshipType>
<participantType name="Broker">
<role type="tns:SellerForBuyer"<roleType typeRef="tns:SellerForBuyer" />
<role type="tns:SellerForShipper"<roleType typeRef="tns:SellerForShipper" />
</participantType>
A
channelType
realizes a point of collaboration between
ChannelparticipantTypes by
specifying where and how information is partiesexchangedbetweencollaboratingexchanged.
Additionally, parties.ChannelchannelType
instance information,
captured within
channel variables, can be
passed among
informationparticipants in
information exchanges. The
partieschannelType
instances exchanged MAY be used in subsequent
Channelsinteraction
activities. This allows the modeling of both static and dynamic
message destinations when collaborating within a
Interactionchoreography. For
example, a Choreography."Buyer" could
specify BuyerchannelType
instance information to be used for sending
delivery information. The
Channel"Buyer" could then send
Buyerthethis
channelType instance
information to the
Channel"Seller" who then
forwards it to the
Seller"Shipper". The
Shipper."Shipper" could then
send delivery information directly to the
Shipper"Buyer" using the
BuyerchannelType
instance information originally supplied by the
Channel"Buyer".Buyer.
A ChannelchannelType MUST describe
the TypeRoleroleType and the
Typetype of a
referenceparticipant
reference, conveying
the information
needed to
address the
participant being the target of an information
exchange, either a
receiver of a
request action
or a sender
of a reply
action, which is party,used for
determining where and how to send or receive information to or
thenfrom the
intoparticipant.party.
A ChannelchannelType MAY
Typespecifytheinstanceidentityofanentitydescribe the
implementingtype of
behavior(s)aparty,the
beinginstance
identity of targetaninformationexchange.AChannelTypeMAYone or more logical conversations between
describeparticipants, where
each conversation groups a set of related information exchanges.
The channelType
instance identity
can be used
to correlate
multiple conversations
(channel instances)
within the
same choreography
instance.parties,
One or more
channelType
instances MAY be passed around from one
Channel(s)participant to another in
an information exchange. A partyChannelchannelType MAY be used
to:Type
Restrict the number of times aan
instance of this ChannelChannelchannelType can be usedType
Restrict the type of information exchange that can be performed
when using aan
instance of this ChannelChannelchannelTypeType
Restrict the ChannelchannelTypes that will
be passed through Type(s)aan
instance of this ChannelChannelchannelTypeType
Enforce that a passed
channel
instance is Channelalwaysuniquedistinct
The syntax of the channelType construct is:
<channelTypename="ncname"name="NCName" usage="once"|"distinct"|"shared"? action="request-respond"|"request"|"respond"? > <passingusage="once"|"unlimited"?channel="QName" action="request-respond"|"request"|"respond"? new="true"|"false"? />*channel="qname"<roletype="qname"<roleType typeRef="QName" behavior="NCName"? /> <reference> <tokenbehavior="ncname"?name="QName"/> </reference>name="qname"/><identity usage="primary"|"alternate"|"derived"|"association"> <token<identity>name="qname"/>+name="QName"/>+ <identity>* </channelType></identity>?
The attribute name is used forto
specify a distinct name for each
specifyingchannelType element declared within a
Choreographychoreography
package.Package.
The OPTIONAL attribute usage is used to
constrain the
restrictnumberoftimesaway in
which an
instance of this ChannelChannelchannelType, can be used.
The TypeOPTIONALattributeactionisusedtorestrictthetypeofinformationvalues that can be
exchangeperformedwhenused for
this attribute
are:using
"once" -
Once means
that a
channel
instance of this ChannelChannelType.ThetypeofinformationexchangeperformedcouldchannelType
can be eitherarequest-respondexchange,arequestused
for one
interaction, or can
be passed to
another roleType.
When a exchange,respondexchange.Thedefaultchannel
instance of this
forchannelType is
attributesetto"request".TheOPTIONALelementpassingpassed, the
describesChannelpasser of the
Type(s)channel
instance MUST
relinquish control,
for outputting
only, of that
Channel(s)arepassed,fromoneinstance
and passes
control to partyanother,whenusinganinformationexchangeonathe
receiver. A
channel instance of this
ChannelChannelType.TheOPTIONALattributeactionwithinthepassingelementdefineschannelType
MUST NOT be
passed to
more than one
receiver at
any one
time.if
"distinct" (default
usage mode) -
Distinct means
that a Channelchannel
instance of
this channelType
can be used
multiple times
by a
participantType within
multiple interactions.
When a
channel instance
of this
channelType is
passed, the
passer of the
channel instance
MUST relinquish
control, for
outputting only,
of that
instance and
passes control
to the
receiver. A
channel instance
of this
channelType MUST
NOT be passed
by a
participantType to
more than one
receiver. In
this mode, a
participantType MUST
NOT specify
two or more
concurrent interactions
for the same
channel instance
with the same
operation name.will
"shared" - Shared means that a channel instance of this channelType can be used multiple times by multiple participantTypes within multiple interactions. When a channel instance of this channelType is passed, the participantType passing the channel instance MUST NOT relinquish control. In this mode, a participantType MUST NOT specify two or more concurrent interactions for the same channel instance with the same operation name.
The OPTIONAL
attribute action
is used to
restrict the
type of
information exchange
that can be
performed when
using a
channel instance
of this
channelType. The
type of
information exchange
performed could
either be a
request-respond exchange,
a request
exchange, or
a respond
exchange. The
default value
for this
attribute is
"request".
The OPTIONAL
element passing
describes the
channelTypes of
the channel
instances that
are passed from
one participant
to another
when using an
information exchange
on a channel
instance of
this channelType.
The OPTIONAL
attribute action
within the
passing element,
defines when
a channel
instance MUST
be passed,
either during a request exchange, during a
response exchange or both. The default value for
this attribute is set"request". The OPTIONAL attribute new within
the topassing
element, when set to
element"true", enforces a passed
"true"channel
instance to be always
Channelunique. If the element
distinct.passing is
missing, then this
missingChannelchannelType MAY be used for
exchanging
Typeinformation, but
MUST NOT be used for passing
informationchannel
instances of any ChannelsChannelchannelType.Type.
The element
is
used to identify the roleTyperoleRoleroleType of a
Typeparticipant, being the
party,type of
the target of an information
exchange, which is then used for statically determining where and
how to send or receive information to or
targetfrom the
participant. Each
roleType is
specified by the
into
attribute of
the typeRefparty.roleType
element. The "QName"
value of the
typeRef attribute
of the
roleType element
MUST reference the
name of a
roleType defined
in the
choreography package.
Within the
roleType element,
the OPTIONAL
attribute behavior
identifies a
specific observable
behavior, belonging
to the
roleType that is
usedforthe target
of an
information exchange.
If the
describingbehavior attribute
is missing,
then any one
of the
behavior types
belonging to
this roleType
MAY be the
target of an
information exchange.
The element
reference is used
to specify
the type of a
participant
reference, conveying
the information
needed to
address the
participant being the target of an information
exchange, which is party,used for dynamically
determining where and how to send or receive information to or
thenfrom the
intoparticipant. The
party.type of a
referenceparticipant
reference is distinguished by a
partytoken, as specified by the
Tokenname attribute of the token element
within the reference element.
The OPTIONAL list
of elementidentity
elements MAY be used to
associate a
unique identity for
identifyingeach instance of
ananentitythe implementingbehaviorofapartyandforidentifyingalogicalconversationbetweenchannelType. The
identity parties.andthedifferentconversationsareis
defined by a set of distinguishedTokenstokens specified by the
asname attribute of the token element
within the identity element. ThefollowingruleappliesforChannelIf two
Type:
elements are specified within
the ormoreChannelTypesSHOULDpointtoRoleTypesthatMUSTbeimplementedbythesamelogicalentityororganization,thenthespecifiedRoleTypesMUSTbelongtothesameParticipantType.Inaddition,identitytheChannelTypessame or
different
MUSTchannelType
elements, and
they have the same
set of
numberTokensnamed
tokens in the same
withinformationTypesspecifiedorder, then
they are
considered to
represent the same
inidentity
type.order
The
element has a
mandatory examplebelowidentityshowsusage
attribute, which
defines the
purpose of the
definitionChannelType"RetailerChannel"thatrealizesaidentity
in the
context of pointcollaborationwithathe
channelType. The Retailer.ChannelTypevalues
for this
attribute are:identifies
"primary" -
The 'primary'
usage classification
means that the
RoleTypeidentity is
created by the
ofRetailerinitial
message on an
instance of
this channelType.
A channelType
must have
only one
'primary' identity
field.as
An example for using this attribute is shown below.
<channelType name="OrderChannel">
…
<identity usage="primary">
<token name="OrderId" />
</identity>
</channelType>
This means that all messages (requests and responses) exchanged on this "OrderChannel" must contain the 'OrderId' field.
"alternate" - The 'alternate' usage classification means that an alternative identity for a channelType instance can be established. The alternate identity can be initialized based on any message within the channel instance's conversation (i.e. it does not have to be the first). If it is not the first message, then the message must also contain either the channel instance's primary key, or another previously initialized alternate identity, to bind the identity to the channel instance. Once the alternate identity has been bound to the channel instance, subsequent messages that only contain that alternate identity will be correlated to the channel instance.
An example for using this attribute is shown below.
<channelType name="OrderChannel">
…
<identity usage="primary">
<token name="OrderId" />
</identity>
<identity usage="alternate">
<token name="TxnId" />
</identity>
</channelType>
In this example, an "OrderChannel" channel instance will be identified initially by the value of the 'OrderId' field. However, at some point i