W3C

Web Services Description Language (WSDL) Version 2.0 Part 2: Message Exchange Patterns

W3C Working Draft 26 March 2004

This version:
http://www.w3.org/TR/2004/WD-wsdl20-patterns-20040326
Latest version:
http://www.w3.org/TR/wsdl20-patterns
Previous versions:
http://www.w3.org/TR/2003/WD-wsdl20-patterns-20031110
Editors:
Martin Gudgin, Microsoft
Amy Lewis, TIBCO
Jeffrey Schlimmer, Microsoft

This document is also available in these non-normative formats: postscript, PDF, XML, and plain text.


Abstract

This document describes Web Services Description Language (WSDL) Version 2.0 message exchange patterns. These patterns are intended for use with the Web Services Description Language (WSDL).

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 a W3C Working Draft of the WSDL Version 2.0 Message Patterns specification for review by W3C members and other interested parties.

A diff-marked version against the previous version of this document is available. For a detailed list of changes since the last publication of this document, please refer to appendix B. Change Log. A list of open issues against this document is also available.

This document has been produced as part of the W3C Web Services Activity. The authors of this document are the Web Services Description Working Group members.

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.

Comments on this document are invited and are to be sent to the public www-ws-desc@w3.org mailing list (public archive).

This document has been produced under the 24 January 2002 Current Patent Practice as amended by the W3C Patent Policy Transition Procedure. Patent disclosures relevant to this specification may be found on the Working Group's patent disclosure page. 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.


Short Table of Contents

1. Introduction
2. Fault Generation Rules
3. Message Exchange Patterns
4. References
A. Acknowledgements (Non-Normative)
B. Change Log (Non-Normative)


Table of Contents

1. Introduction
    1.1 Notational Conventions
2. Fault Generation Rules
    2.1 Fault Replaces Message
    2.2 Message Triggers Fault
    2.3 No Faults
3. Message Exchange Patterns
    3.1 In-Only
    3.2 Robust In-Only
    3.3 In-Out
    3.4 In-Optional-Out
    3.5 Out-Only
    3.6 Robust Out-Only
    3.7 Out-In
    3.8 Out-Optional-In
4. References
    4.1 Normative References
    4.2 Informative References

Appendices

A. Acknowledgements (Non-Normative)
B. Change Log (Non-Normative)
    B.1 Changes


1. Introduction

Web Services Description Language (WSDL) message exchange patterns define the sequence and cardinality of abstract messages listed in an operation. Message exchange patterns also define which other nodes send messages to, and receive messages from, the service implementing the operation.

By design, WSDL message exchange patterns abstract out specific message types. Patterns identify placeholders for messages, and placeholders are associated with specific message types by the operation using the pattern.

Unless explicitly stated otherwise, WSDL message exchange patterns also abstract out binding-specific information like timing between messages, whether the pattern is synchronous or asynchronous, and whether the message are sent over a single or multiple channels.

Like interfaces and operations, WSDL message exchange patterns do not exhaustively describe the set of messages exchanged between a service and other nodes; by some prior agreement, another node and/or the service may send other messages (to each other or to other nodes) that are not described by the pattern. For instance, even though a pattern may define a single message sent from a service to one other node, the Web Service may multicast that message to other nodes.

To maximize reuse, WSDL message exchange patterns identify a minimal contract between other parties and Web Services, and contain only information that is relevant to both the Web Service and another party.

This specification defines several message exchange patterns for use with WSDL Version 2.0 Part 1: Core Language [WSDL 2.0 Core Language].

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 [IETF RFC 2119].

2. Fault Generation Rules

WSDL patterns specify their fault generation model using standard rulesets to indicate where faults may occur. The two most common patterns for fault generation are defined here, and referenced by patterns later in the document.

Generation of a fault, regardless of ruleset, terminates the exchange.

2.1 Fault Replaces Message

Any message after the first in the pattern MAY be replaced with a fault message, which MUST have identical cardinality and direction. The fault message MUST be delivered to the same target node as the message it replaces.

2.2 Message Triggers Fault

Any message, including the first, MAY trigger a fault message in response. Each recipient MAY generate a fault message, and MUST generate no more than one fault for each triggering message. Each fault message has direction the reverse of its triggering message. The fault message MUST be delivered to the originator of the message which triggered it. If there is no path to this node, the fault MUST be discarded.

2.3 No Faults

No faults may be generated.

Editorial note: Introduction of No Faults ruleset 12 June 2003
The No Faults ruleset has been introduced primarily to clarify the confusion otherwise introduced by applying the Fault Replaces Message ruleset to single-message patterns (which implicitly disallows faults). Some concern has been expressed that a no-fault ruleset could easily be abused.

3. Message Exchange Patterns

WSDL patterns are described in terms of the WSDL component model, specifically the Label and Fault Reference components.

3.1 In-Only

This pattern consists of exactly one message as follows:

  1. A message:

    • indicated by a Label component whose {label} is 'In' and {direction} is 'in'

    • received from some node N

This pattern uses the rule 2.3 No Faults.

An operation using this message exchange pattern has a {pattern} property with the value 'http://www.w3.org/2004/03/wsdl/in-only'.

3.2 Robust In-Only

This pattern consists of exactly one message as follows:

  1. message:

    • indicated by a Label component whose {label} is 'In' and {direction} is 'in'

    • received from some node N

This pattern uses the rule 2.2 Message Triggers Fault.

An operation using this message exchange pattern has a {pattern} property with the value 'http://www.w3.org/2004/03/wsdl/robust-in-only'.

3.3 In-Out

This pattern consists of exactly two messages, in order, as follows:

  1. A message:

    • indicated by a Label component whose {label} is 'In' and {direction} is 'in'

    • received from some node N

  2. A message:

    • indicated by a Label component whose {label} is 'Out' and {direction} is 'out'

    • sent to node N

This pattern uses the rule 2.1 Fault Replaces Message.

An operation using this message exchange pattern has a {pattern} property with the value 'http://www.w3.org/2004/03/wsdl/in-out'.

3.4 In-Optional-Out

This pattern consists of one or two messages, in order, as follows:

  1. A message:

    • indicated by a Label component whose {label} is 'In' and {direction} is 'in'

    • received from some node N

  2. An optional message:

    • indicated by a Label component whose {label} is 'Out' and {direction} is 'out'

    • sent to node N

This pattern uses the rule 2.2 Message Triggers Fault.

An operation using this message exchange pattern has a {pattern} property with the value 'http://www.w3.org/2004/03/wsdl/in-opt-out'.

3.5 Out-Only

This pattern consists of exactly one message as follows:

  1. A message:

    • indicated by a Label component whose {label} is 'Out' and {direction} is 'out'

    • sent to some node N

This pattern uses the rule 2.3 No Faults.

An operation using this message exchange pattern has a {pattern} property with the value 'http://www.w3.org/2004/03/wsdl/out-only'.

3.6 Robust Out-Only

This pattern consists of exactly one message as follows:

  1. message:

    • indicated by a Label component whose {label} is 'Out' and {direction} is 'out'

    • sent to some node N

This pattern uses the rule 2.2 Message Triggers Fault.

An operation using this message exchange pattern has a {pattern} property with the value 'http://www.w3.org/2004/03/wsdl/robust-out-only'.

3.7 Out-In

This pattern consists of exactly two messages, in order, as follows:

  1. A message:

    • indicated by a Label component whose {label} is 'Out' and {direction} is 'out'

    • sent to some node N

  2. A message:

    • indicated by a Label component whose {label} is 'In' and {direction} is 'in'

    • sent from node N

This pattern uses the rule 2.1 Fault Replaces Message.

An operation using this message exchange pattern has a {pattern} property with the value 'http://www.w3.org/2004/03/wsdl/out-in'.

3.8 Out-Optional-In

This pattern consists of one or two messages, in order, as follows:

  1. A message:

    • indicated by a Label component whose {label} is 'Out' and {direction} is 'out'

    • sent to some node N

  2. An optional message:

    • indicated by a Label component whose {label} is 'In' and {direction} is 'in'

    • sent from node N

This pattern uses the rule 2.2 Message Triggers Fault.

An operation using this message exchange pattern has a {pattern} property with the value 'http://www.w3.org/2004/03/wsdl/out-opt-in'.

4. References

4.1 Normative References

[IETF RFC 2119]
Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, Author. Internet Engineering Task Force, June 1999. Available at http://www.ietf.org/rfc/rfc2119.txt.
[WSDL 2.0 Core Language]
Web Services Description (WSDL) Version 2.0 Part 1: Core Language, R.Chinnici, M.Gudgin, J-J. Moreau, S.Weerawarana Editors. World Wide Web Consortium, 26 March 2004. This version of the "Web Services Description Version 2.0 Part 1: Core Language" Specification is available is available at http://www.w3.org/TR/2004/WD-wsdl20-20040326. The latest version of "Web Services Description Version 2.0 Part 1: Core Language" is available at http://www.w3.org/TR/wsdl20.

4.2 Informative References

[WSD Requirements]
Web Services Description Requirements, J. Schlimmer, Editor. World Wide Web Consortium, 28 October 2002. This version of the Web Services Description Requirements document is http://www.w3.org/TR/2002/WD-ws-desc-reqs-20021028. The latest version of Web Services Description Requirements is available at http://www.w3.org/TR/ws-desc-reqs.

A. Acknowledgements (Non-Normative)

This document is the work of the W3C Web Service Description Working Group.

Members of the Working Group are (at the time of writing, and by alphabetical order): Mike Ballantyne (Electronic Data Systems), David Booth (W3C), Allen Brookes (Rogue Wave Softwave), Roberto Chinnici (Sun Microsystems), Glen Daniels (Sonic Software), Alan Davies (SeeBeyond), Mike Davoren (W. W. Grainger), Paul Downey (British Telecommunications), Youenn Fablet (Canon), Yaron Goland (BEA), Martin Gudgin (Microsoft Corporation), Hugo Haas (W3C), Hao He (The Thomson Corporation), Tom Jordahl (Macromedia), Jacek Kopecky (Systinet), Dan Kulp (IONA Technologies), Sandeep Kumar (Cisco Systems), Amelia Lewis (TIBCO Software, Inc.), Kevin Canyang Liu (SAP), Michael Mahan (Nokia), Jonathan Marsh (Microsoft Corporation), Mike McHugh (W. W. Grainger), Michael Mealling (Verisign), Ingor Melzer (DaimlerChrysler Research and Technology), Jeff Mischkinsky (Oracle Corporation), Dale Moberg (Cyclone Commerce), Jean-Jacques Moreau (Canon), David Orchard (BEA), Bijan Parsia (University of Maryland), Arthur Ryman (IBM), Waqar Sadiq (Electronic Data Systems), Adi Sakala (IONA Technologies), Jeffrey Schlimmer (Microsoft Corporation), Igor Sedukhin (Computer Associates), Sandra Swearingen (U.S. Department of Defense, U.S. Air Force), Bryan Thompson (Hicks & Associates), Jerry Thrasher (Lexmark), William Vambenepe (Hewlett-Packard Company), Asir Vedamuthu (webMethods, Inc.), Sanjiva Weerawarana (IBM), Ümit Yalçınalp (Oracle Corporation), Prasad Yendluri (webMethods, Inc.).

Previous members were: Lily Liu (webMethods, Inc.), Don Wright (Lexmark), Joyce Yang (Oracle Corporation), Daniel Schutzer (Citigroup), Dave Solo (Citigroup), Stefano Pogliani (Sun Microsystems), William Stumbo (Xerox), Stephen White (SeeBeyond), Barbara Zengler (DaimlerChrysler Research and Technology), Tim Finin (University of Maryland), Laurent De Teneuille (L'Echangeur), Johan Pauhlsson (L'Echangeur), Mark Jones (AT&T), Steve Lind (AT&T), Philippe Le Hégaret (W3C), Jim Hendler (University of Maryland), Dietmar Gaertner (Software AG), Michael Champion (Software AG), Don Mullen (TIBCO Software, Inc.), Steve Graham (Global Grid Forum), Steve Tuecke (Global Grid Forum).

The people who have contributed to discussions on www-ws-desc@w3.org are also gratefully acknowledged.

B. Change Log (Non-Normative)

B.1 Changes


Date Author Description
20040225 aal add in-optional-out per minutes of 20 feb 2004 telecon
20040212 aal change {messageReference} to {label} and "Message Reference component" to "Label component" per 20040212 teleconference
20040205 aal change all 'A' and 'B' message labels into 'Out' or 'In', depending upon direction.
20040205 aal s/message pattern/message exchange pattern/gi
20031204 jcs Removed change marks; note that some were on div2 tag and did not show when transformed into HTML.
20031204 jcs Per 4 Dec 2003 telecon, decided to rename 'Asynchronous Out-In' pattern to 'Output-Optional-Input'.
20031105 aal Fix titles of added patterns. Move them to be in conjunction with similar patterns.
20031022 aal Per action item from October 16 teleconference, added the three patterns using message-triggers-fault as published on the mailing list (robust-in-only, robust-out-only, asynch-out-in).
20031022 aal Added internal linkage (using specref) from patterns to the fault rulesets which they use.
20031022 aal Per 9 and 16 Oct 2003 teleconferences, marked in-multi-out and out-multi-in patterns deleted.
20031022 aal Per 16 Oct 2003 teleconference, added a paragraph/sentence stating that generation of a fault terminates an exchange.
20031007 JCS Per 2 Oct 2003 teleconference, changed "broadcast" to "multicast" in the introduction.
20030922 JCS Per 22 Sep 2003 meeting in Palo Alto, CA, removed "Pattern Review" editorial note; added specific editorial notes for In-Multi-Out and Out-Multi-In.
20030911 RRC Changed the "name" property of the message reference component to "messageReference".
20030904 JCS Incorporated clarifications suggested by W3C\David Booth.
20030801 JCS Per 30 July meeting, added recommendations from patterns task force.
20030612 AAL Added fault generation rulesets and references to them from patterns.
20030313 MJG Changed to Part 2 ( from Part 3 )
20030306 JCS Proposed name for MEP7.
20030305 JCS Per 4 Mar 03 meeting, renamed 'message exchange pattern' to 'message pattern' or 'pattern', added pattern for request-response, added ednote about review of patterns.
20030217 MJG Fixed some issues with entities and validity errors WRT ulists
20030212 JCS Initial draft