← Prev in month ← Prev in thread

i019/i028 - final proposal

From
Doug Davis <>
Date
2005-09-08T18:03:31+00:00
ID
Thread
i019/i028 - final proposal
Based on Jacques comments I've modified
the text to avoid using terms that are not defined in the glossary.  I'm
concerned that there are too many version of this proposal out there.  All
of the suggestions people have made have been great and I do really think
they've helped mold this into a better proposal.  However, when comparing
this version with the original one I think the basic idea is still the
same.  And for the purposes of the TC voting on this, while a totally
complete proposal certainly helps, I don't think it needs to be bullet-proof
in order for people to vote one way or the other.  Leaving some of
the minor textual changes for the editors allows them to do something too
 :-)

So, barring some major change request
from someone I'd like this to be the version we vote on.

thanks

-Doug

ps just got Jacques' note about possibly
updating the term 'received' in the glossary but I'd prefer to leave that
for the editors as well.  With 2 hrs left before the call I need to
send something :-)

- - - - - - - -

Using the pdf file at http://www.oasis-open.org/apps/org/workgroup/ws-rx/download.php/13493/WS-ReliableMessaging-v1.0-wd-01.pdf
  

here's the proposal:     

Change lines 340-347, the SeqAck syntax, to:   

<wsrm:SequenceAcknowledgement ...>   

  <wsrm:Identifier ...> xs:anyURI </wsrm:Identifier>  

  [ [<wsrm:AcknowledgementRange ...   

      Upper="xs:unsignedLong"   

      Lower="xs:unsignedLong"/> +   

     <wsrm:Final/> ? ]   

  | <wsrm:Nack> xs:unsignedLong </wsrm:Nack> + ]  

  ...   

</wsrm:SequenceAcknowledgement>   

After line 378, add to the description of the SeqAck elements:    

  /wsrm:SequenceAcknowledgement/wsrm:Final     

  This optional element, if present, indicates that the RM  
  

  Destination is not receiving new messages for the    

  specified Sequence.  The RM Source can be assured that  
  

  the ranges of messages acknowledged by this   

  SequenceAcknowledgement header block will not change in the  
  

  future.  This element MUST be present when the Sequence  
  

  is no longer receiving new message for the specified sequence.

  Note: this element MUST NOT be used when sending a Nack, it  
  

  can only be used when sending AcknowledgementRanges.   

On lines 569 and 570 change:   

  After an RM Source receives the <SequenceAcknowledgement>
    

  acknowledging the complete range of messages in a Sequence, it 

  sends a ... 

to     

  When the RM Source has completed its use of the Sequence, it  
  

  sends a ...     

To the end of that para, at the end of line 574, add:     

  Note, under normal usage the RM source will complete its use of
  

  the sequence when all of the messages in the Sequence have been
    

  acknowledged.  However, the RM Source is free to Terminate
    

  or Close a Sequence at any time regardless of the acknowledgement
    

  state of the messages.   

Change lines 581 and 582 from:   

  This element is sent by an RM Source after it has received the  
  

  final <SequenceAcknowledgement> covering the full range of
a Sequence.     

to     

  This element is sent by an RM Source to indicate it has completed

  its use of the Sequence, i.e. it will not attempt to send any  

  additional messages to the RM Destination referencing this sequence.

After line 396, add a new section about closing a Sequence:   

  3.6 Closing A Sequence     

  There may be times during the use of an RM Sequence that the RM
  

  Source or RM Destination will wish to discontinue using a Sequence
  

  even if some of the messages have not been successfully delivered
  

  to the RM Destination.   

  In the case where the RM Source wishes to discontinue use of a 

  sequence, while it can send a TerminateSequence to the RM Destination,
    

  since this is a one-way message and due to the possibility of late
    

  arriving (or lost) messages and Acknowledgements, this would leave
    

  the RM Source unsure of the final ranges of messages that were  
  

  successfully delivered to the RM Destination.     

  To alleviate this, the RM Source can send a <wsrm:CloseSequence>
element,     

  in the body of a message, to the RM Destination to indicate that
    

  RM Destination MUST NOT receive any new messages for the  
  

  specified sequence, other than those already received at the time

  the <wsrm:CloseSequence> element is interpreted by the RMD.
 Upon receipt 

  of this message the RM Destination MUST send a SequenceAcknowledgement
  

  to the RM Source.  Note, this SequenceAcknowledgement MUST
include the   

  <wsrm:Final> element. 

  While the RM Destination MUST NOT receive any new messages for the

  specified sequence it MUST still
process RM protocol messages.

  For example, it MUST respond
to AckRequested, TerminateSequence

  as well as CloseSequence messages.
 Note, subsequent CloseSequence messages

  have no effect on the state of
the sequence. 

  In the case where the RM Destination wishes to discontinue use of
a

  sequence it may 'close' the sequence itself.  Please see wsrm:Final

  above and the Sequence Closed fault below. Note the SequenceClosed

  Fault SHOULD be used in place of the SequenceTerminated Fault, 

  whenever possible, to allow the RM Source to still receive 

  Acknowledgements. 

  The following exemplar defines the CloseSequence syntax:  

    <wsrm:CloseSequence wsrm:Identifier="xs:anyURI"/>
    

  /wsrm:CloseSequence   

  This element is sent by an RM Source to indicate that the RM  
  

  Destination MUST NOT receive any new messages for this sequence.
  

  A SequenceClosed fault MUST be generated by the RM Destination

  when it receives a message for
a sequence that is closed.

  /wsrm:CloseSequence@Identifier   

  This required attribute contains an absolute URI conformant  
  

  with RFC2396 that uniquely identifies the sequence.   

  /wsrm:CloseSequence/{any}     

  This is an extensibility mechanism to allow different (extensible)
    

  types of information, based on a schema, to be passed.    

    

  /wsrm:CloseSequence@{any}   

  This is an extensibility mechanism to allow additional attributes,
    

  based on schemas, to be added to the element.   

  A <wsrm:CloseSequenceResponse> is sent in the body of a response
message by     

  an RM Destination in response to receipt of a <wsrm:CloseSequence>
request   

  message.  It indicates that the RM Destination has closed the
  

  sequence.   

  The following exemplar defines the <wsrm:CloseSequenceResponse>
syntax:     

  /wsrm:CloseSequenceResponse   

  The element is sent in the body of a response message by  
  

  an RM Destination in response to receipt of a <wsrm:CloseSequence>
request   

  message.  It indicates that the RM Destination has closed the
  

  sequence.   

  /wsrm:CloseSequenceResponse/{any}   

  This is an extensibility mechanism to allow different (extensible)
    

  types of information, based on a schema, to be passed.    

    

  /wsrm:CloseSequenceResponse@{any}     

  This is an extensibility mechanism to allow additional attributes,
    

  based on schemas, to be added to the element.   

On lines 735 and 746 make these faults non-terminating by removing:  
  

  It is an unrecoverable error and terminates the Sequence.  
  

    

After line 760, add a new fault:   

  4.8 Sequence Closed     

  This fault is sent by an RM Destination to indicate that the 

  specified sequence has been closed. This fault MUST be generated

  when an RM Destination is asked
to receive a message for a sequence

  that is closed.

  Properties:     

  [Code] Sender   

  [Subcode] wsrm:SequenceClosed   

  [Reason] The sequence is closed and can not receive new messages.
  

  [Detail] <wsrm:Identifier...> xs:anyURI </wsrm:Identifier>

Add the proper XML to the schema and WSDL....
← Prev in month ← Prev in thread