David Booth, W3C Fellow / HP Software
Amelia Lewis, Tibco
Jonathan Marsh, Microsoft (WSD WG Chair)
Umit Yalcinalp, Oracle
WSD F2F Meeting
30-July-2003
This document: http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl12/meps-vs-iops/recommendations_clean.htm
$Revision: 1.2 $ of $Date: 2003/08/01 12:25:59 $ by $Author: dbooth $
This document was produced by a task force of the Web Services Description working group for use by that working group in discussions of message exchange patterns. It has no official standing.
Main participants:
Parttime participants:
Signed up but did not participate:
Also:
Example: p2 family defined 12 variations of the PART2 "Input-Output" pattern.
See examples of p2 family:
http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl12/meps-vs-iops/meps-vs-iops_clean.htm#p2
(or
p2b:
Client A:
Message sendAndReceiveMessage(ServiceAddress s, Message m);
Client Bi:
void registerMessageReceiverCallback(MessageReceiverCallback f);
p2c:
Client A:
void sendMessage(ServiceAddress s, Message m);
Client B:
void registerMessageReceiverCallback(MessageReceiverCallback f);
Client C:
void registerMessageReceiverCallback(MessageReceiverCallback f);
. . . etc.
See:
http://lists.w3.org/Archives/Public/public-ws-desc-meps/2003Jul/0005.html
1. Patterns describe *minimal* behavior.
2. Patterns should only express info that is relevant to more than one party
3. Patterns must specify parties as variables. This also needs to be applied to fault rules.
4. Recommendations for specific patterns (6 to adopt; 2 to drop):
In-Only pattern: Adopt p1a-nf
In-Out pattern: Adopt p2e-nf
In-Multi-Out pattern: Adopt p4c-nf
Out-Only pattern: Adopt p5a-nf
Out-In pattern: Adopt p6b-nf
Out-Multi-In pattern: Adopt p7b-nf
Request-Response pattern: DROP in favor of p2e-nf (listed above)
Multicast-Solicit-Response pattern: DROP. (Subsumed by p6b-nf)
Request with Response to Third Party: Do not adopt. (Details below)
(Guiding principle: Be able to write code based on interface, independent of transport.)
Each pattern represents a contract that specifies *minimal* behavior that is expected between the parties. In general, the WSD (and therefore the patterns) should only contain information that is relevant to more than one party. (For example, information that the client and service need to agree on.)
The clients and services may have additional behaviors that are not specified by the pattern. Specifically, a client or service may send other messages (to each other or other parties) that are not described by the pattern. However, in such case, the parties must use other means to agree on the handling of the additional messages. For example, a message specified in a pattern as being from service S to client A might actually be broadcast to other clients in addition to being sent to client A. However, the pattern only governs the agreement to send the message to client A.
Every pattern involving more than one message must specify (as variables) the sender and recipient of each message. For example, a pattern might specify:
"Some client A sends a message M1 to some service S. Subsequently
service S replies by sending a message M2 to client A."
This example makes clear that S sends the response to A. As a contrasting example, a pattern might specify:
"Some client A sends a message M1 to some service S. Subsequently
service S replies by sending a message M2 to some client B."
This later example makes clear that client A and client B are not necessarily the same client. (However, this pattern description also does not prevent a client from assuming roles of both A and B simultaneously.)
Ignoring faults, these are the pattern variations we think the WG should adopt.
These patterns omit the faults because faults are now described separately by general-purpose fault rules.
This addresses the In-Only pattern of PART2.
![]() |
Sequence:
1. Client A sends a message to the service S.
Addresses the In-Out pattern of PART2.
![]() |
Sequence:
1. Client A sends a message to service S.
2. Service S sends an ofault message to client A.
Comments: This pattern represents the classic "request-response", since the response is specified as going back to the original requester.
This addresses the In-Multi-Out pattern of PART2.
![]() |
Sequence:
1. Client A sends a message to service S.
2. Service S sends zero or more output messages to client A.
Issue:
Should this pattern require that messages be delivered in
order?
Addresses the Out-Only pattern of PART2.
![]() |
Sequence:
1. Service S sends a message to client A.
Addresses the Out-In pattern of PART2.
![]() |
Sequence:
1. Service S sends an output message to client A.
2. Service S receives an input message from client A.
Comments: This is classic "solicit-response".
This addresses the Out-Multi-In pattern of PART2.
Sequence
1. Service S sends an output message to client A.
2. Service S receives zero or more input messages from client A.
Issue:
Should this pattern require that messages be delivered in
order?
1. The Request-Response pattern of PART2.
2. The Multicast-Solicit-Response pattern of PART2.
Addresses the In-Out pattern of PART2.
Sequence:
1. Client A sends a message to service S.
2. Service S sends an output message to client B.
1. This is request / response to a third party.
2. p2d-nf is more general than p2e-nf:
3. This pattern only matters to the service
4. The client cannot conveniently use p2d-nf as p2e-nf:
Message sendMessageAndReceiveReply(Message m);
Do not adopt (unless the WG defines a standard way for a client to indicate the identity of the intended recipient.)
1. Faults. Could the fault rules be simplified to a single "message triggers fault" rule?
2. Correspondence with SOAP MEPs.
1. Patterns describe *minimal* behavior.
2. Patterns should only express info that is relevant to more than one party
3. Patterns must specify parties as variables. This also needs to be applied to fault rules.
4. Recommendations for specific patterns (6 to adopt; 2 to drop):
In-Only pattern: Adopt p1a-nf
In-Out pattern: Adopt p2e-nf
In-Multi-Out pattern: Adopt p4c-nf
Out-Only pattern: Adopt p5a-nf
Out-In pattern: Adopt p6b-nf
Out-Multi-In pattern: Adopt p7b-nf
Request-Response pattern: DROP in favor of p2e-nf (listed above)
Multicast-Solicit-Response pattern: DROP. (Subsumed by p6b-nf)
Request with Response to Third Party: Do not adopt. (Details below)
(Guiding principle: Be able to write code based on interface, independent of transport.)
[End]