Re: An Example Use of RM's MakeConnection

Looking at the message flow, I think WS-RM could make more use of  
wsa:RelatesTo instead of inventing a new anon URI. Here's the same  
message flow using the WS-A anon URI and making more use of  
wsa:RelatesTo and @RelationshipType.

I think this formulation removes the requirement for additional WSRM- 
specific anon URIs, let me know if I missed anything.

Marc.

Scenario: Client sends GetQuote to server unreliably.  Server wants  
to send GetQuoteResponse using RM so it must sent a CreateSequence  
before I can send the GetQuoteResponse back.

Step 1 - Client sends GetQuote to Server
<soap:Envelope ...>
  <soap:Header>
   <wsa:To> http://stockquote.com </wsa:To>
   <wsa:Action> foo:GetQuote </wsa:Action>
   <wsa:MessageID> uuid://.../100 </wsa:MessageID>
   <wsa:ReplyTo>
    <wsa:Address>http://www.w3.org/.../anonymous</wsa:Address>
   </wsa:ReplyTo>
  </soap:Header>
  <soap:Body>
   <foo:GetQuote> IBM </foo:GetQuote>
  </soap:Body>
</soap:Envelope>

Step 2 - Server sends an RM CreateSequence to the Client using the  
only means it has available - the transport backchannel.
<soap:Envelope ...>
  <soap:Header>
   <wsa:To>http://www.w3.org/.../anonymous</wsa:To>
   <wsa:Action> http://...wsrm/CreateSequence </wsa:Action>
   <wsa:MessageID> uuid://.../101 </wsa:MessageID>
   <wsa:RelatesTo RelationshipType="http://...wsrm/InitReliable">
     uuid://.../100
   </wsa:RelatesTo>
   <wsa:ReplyTo>
    <wsa:Address> http://stockquote.com </wsa:Address>
   </wsa:ReplyTo>
  </soap:Header>
  <soap:Body>
   <wsrm:CreateSequence> ... </wsrm:CreateSequence>
  </soap:Body>
</soap:Envelope>

Notice the use of RelatesTo with a WSRM-specific @RelationshipType to  
indicate that this message is a WSRM-specific response to the initial  
request.

Step 3 - Client sends a CreateSequenceResponse to wsa:ReplyTo
<soap:Envelope ...>
  <soap:Header>
   <wsa:To> http://stockquote.com </wsa:To>
   <wsa:Action> http://...wsrm/CreateSequenceResponse </wsa:Action>
   <wsa:RelatesTo> uuid://.../101 </wsa:RelatesTo>
  </soap:Header>
  <soap:Body>
   <wsrm:CreateSequenceResponse> ... </wsrm:CreateSequenceResponse>
  </soap:Body>
</soap:Envelope>

Step 4 - Having not received the GetQuoteResponse, the Client uses  
MakeConnection to allow it to flow back
<soap:Envelope ...>
  <soap:Header>
   <wsa:To> http://stockquote.com </wsa:To>
   <wsa:Action> http://...wsrm/MakeConnection </wsa:Action>
   <wsa:ReplyTo>
    <wsa:Address>http://www.w3.org/.../anonymous</wsa:Address>
   </wsa:ReplyTo>
   <wsa:RelatesTo RelationshipType="http://...wsrm/InitialRequest">
     uuid://.../100
   </wsa:RelatesTo>
  </soap:Header>
  <soap:Body>
   <wsrm:MakeConnection>
   </wsrm:MakeConnection>
  </soap:Body>
</soap:Envelope>

Notice the use of the wsa:RelatesTo with a WSRM-specific  
@RelationshipType to indicate that this message is requesting a  
response to the initial request message.

Step 5 - Server uses the backchannel to let the GetQuoteResponse flow  
back to the Client
<soap:Envelope ...>
  <soap:Header>
   <wsa:To>http://www.w3.org/.../anonymous</wsa:To>
   <wsa:Action> foo://GetQuoteResponse </wsa:Action>
   <wsa:RelatesTo> uuid://.../100 </wsa:RelatesTo>
   <wsrm:Sequence> ... </wsrm:Sequence>
  </soap:Header>
  <soap:Body>
   <foo:GetQuoteResponse> 139.0 </foo:GetQuoteResponse>
  </soap:Body>
</soap:Envelope>

Notice the wsa:RelatesTo points to the GetQuote request message and  
it is sent using RM (the Sequence header), and that the SOAP Envelope  
looks exactly like it would if it had been sent on the original  
transport backchannel - meaning, the wsa:To is derived from the  
wsa:ReplyTo from the GetQuote request message not the MakeConnection.

---
Marc Hadley <marc.hadley at sun.com>
Business Alliances, CTO Office, Sun Microsystems.

Received on Monday, 9 October 2006 16:26:18 UTC