RE: T2: ackRequested attribute in Via element

From
David Fischer <>
Date
2001-08-07T05:05:08+00:00
ID
Thread
RE: T2: ackRequested attribute in Via element
David,

 

In your example about an intermediate hop 
being different, how would the AckRequested be passed through?  Each 
intermediary must recreate the Via for the next hop based upon values it 
receives.  Let's say we have 6 hops and the middle hop (3-4) is 
MQseries so it doesn't need AckRequested.  Hop 1 sends to Hop 2 with the 
Via element including AckRequested=signed (sign/unsigned doesn't matter here) 
and actor=next.  Hop 2 consumes the Via header and recreates a Via 
with AckRequested=signed and actor=next because that's what came to it and sends 
to Hop 3.  Hop 3 creates a Via with AckRequested=none and actor=next 
because its hop doesn't need it and sends to Hop 4.  How does Hop 4 know to 
reset AckRequested=signed before it sends to Hop 5?  Am I missing something 
here?

 

I don't think this works.  I 
understand the desire to have things change on a per hop basis but I don't think 
it works the way we have it now.  We always have to leave AckRequested to 
the same value even if we don't need it for some hop -- so, it doesn't need to 
go in Via.  This 
goes back to the question of what is the difference between an Ack and a 
DeliveryReceipt for single-hop?  IMO the answer is Via should not be passed 
to the end and DeliveryReceipt should be the end-to-end Ack.

 

Why do we need AckRequested at all?  All we 
have to do is have intermediate hops send back an Ack to the previous hop based 
on the value of DeliveryReceiptRequested.  

 

PROPOSAL

1.  Get rid of AckRequested.

2.  Intermediate hop sends an Ack to the previous 
hop based upon the value of DeliveryReceiptRequested unless overridden by a 
local CPA.

3.  End node sends a DeliveryReceipt, which acts 
the same as an Ack, to the sender based upon the value of 
DeliveryReceiptRequested.

 

 
On the problem with unlimited messages, IMO the 
observation is correct.  We should not allow an Ack to an Error.  
We should also not allow an Ack to an Ack or an Error to an Error.  We 
should still allow an Error to an Ack (we can 
only allow one or the other).  

 

David.

  
-----Original Message-----
From: Burdett, David 
  [mailto:]
Sent: Monday, August 06, 2001 
  8:59 PM
To: 'Arvola Chan'; ebXML Msg
Cc: 
  
Subject: RE: T2: ackRequested attribute in Via 
  element

  
See 
  comments inline

  
 

  
David

  
    
-----Original Message-----
From: Arvola Chan 
    [mailto:]
Sent: Monday, July 30, 2001 2:08 
    PM
To: Burdett, David; ebXML Msg
Cc: 
    
Subject: Re: T2: ackRequested attribute in Via 
    element

    
David:

    
 

    
Please see my comments inline.

    
 

    
Thanks,

    
-Arvola

    
      
----- Original Message ----- 

      
From: 
      Burdett, David 

      
To: 'Arvola Chan' ; ebXML Msg 

      
Cc:  

      
Sent: Monday, July 30, 2001 12:11 
      PM

      
Subject: RE: T2: ackRequested 
      attribute in Via element

      

      
Arvola

      
 

      
Setting the ackRequested to Signed or Unsigned is 
      a decision that the designer (and/or implementer) of the business process 
      makes when they design or build a business process collaboration or 
      business process transaction. Factors that need to be considere include 
      (IMO):

      
        
The natuure of the business process/transaction 
        - e.g. payments probably need to be secure 
        
The requirements of the individual trading 
        partners

      
This brings up a Messaging Service Interface 
      question. Does the application (i.e., whatever software is above the MSI 
      layer) instruct the MSH to send a message reliably, and/or to specify the 
      use of MSH level acknowledgement, or is it the responsibility of the MSH 
      to infer from the CPA and such message header elements as Service, Action, 
      CPAId, etc. the quality of service that should be used for sending a 
      message, and then set the QualityOfServiceInfo and Via elements 
      accordingly?
[David 
      B] I think there are several use cases which are all equally 
      valid:

      
1. The MSH looks up the 
      CPA

      
2. The Application tells the MSH to send the 
      data reliably

      
3. The MSH infers what to do by looking at the 
      service and action (or other data) in the header and looking up what to do 
      in some type of rules 
      database.

      
 

      
Once the CPA knows what to do it should set the 
      QualityOfService and Via elements accordingly. 
       

      
 

      
I have always thought that the ackRequested 
      attribute should be set if reliable messaging is being used. Is it 
      allowable to set deliverySemantics to OnceAndOnlyOnce and to either omit 
      the Via element or to include a Via element but set ackRequested to 
      None?
[David 
      B] As currently specified I think that you have to use the Via 
      element if you are doing reliable messaging as you need ackRequest to 
      be set even if you are doing a single hop. The reason that ackRequested is 
      in the Via element is because the need for ackRequested is removed if 
      you are doing multiple hops and one of the hops is using a proprietary 
      "reliable messaging protocol" e.g IBM MQ Series. This really indicates 
      thatr the Via element is wrongly named IMO. What are your thoughts about 
      changing it ... 

      
 

      
The concept of an Acknowledgement message to 
      support reliable messaging seems muddled with the concept of the 
      Acknowledgement element which is primarily used to provide non-repudiation 
      of receipt. My colleagues at TIBCO have pointed out to me that it seems 
      possible to send an Acknowledgement message that does not carry an 
      Acknowledgement element, and that only the RefToMessageId is 
      required.  (See lines 1816 and 1817 in Section 10.3.3.) Can you 
      please confirm that this indeed is the case?
[David B] I think that what you say is 
      correct. 

      
 

      
 

      
I think what would be really useful is to have a 
      guide that describes how to design a business process/transaction using 
      ebXML Messaging. Do you agree? If so hould it be in the 1.1 spec or 
      something separate.

      
 

      
Either way is fine with me, as long as the guide 
      is available around the time the 1.1 spec is published.
[David B] Any 
      volunteers? 

      
 

      
I think that if an error is dicovered then 
      including the ackRequested set to true on the error message runs the risk 
      of a never ending series of messages. The only use cases to consider are 
      where a message is being sent reliably in which case 
      ...

      
 

      
My question was whether the error message should 
      be sent reliably. I was under the impression that the CPA determines the 
      role played by the receiver and the delivery channel that it will use for 
      receiving messages. If the delivery channel uses a doc exchange that calls 
      for the use of reliable messaging, then shouldn't the error message be 
      sent reliably?
[David B] Yes if the messages are being 
      sent synchronously. 

      
        
If the message that was in error has 
        ackRequested set to Signed/Unsigned and the error message sent in return 
        is lost, then the sender of the original message will resend it which 
        will cause the error message to be resent - see example 1 
        below 
        
If the message that was in error has 
        ackRequested set to None (e.g. it is a synchronous resposne) then 
        sending the error message with Ack Requested set to Signed/Unsigned 
        makes sense otherwise the sender of the error message will not know if 
        the message was delivered - see example 2 below

      
EXAMPLE 1

      
Message (with 
      error)(AckRequested=S/U)---------------------->

      
<---------------ErrorMessage (Includes 
      Acknowledgment element)

      
 

      
If the message is in error, I doubt if the 
      responder is obligated to include an Acknowledgement element in the error 
      message, even if AckRequested has been asked for.
[David B] Perhaps. Even 
      if he did not then the rules say that any errors in an error message 
      are not responded to so it would not make much 
      difference. 

      
 

      
EXAMPLE 2

      

      
Message (no 
      errors)(AckRequested=S/U)------------------------>

      
<-------Message (with error) (Includes 
      Acknowledgment element)

      

      
Error Message 
      (AckRequested=S/U)----------------------------->

      

      
<---------------Message (Includes 
      Acknowledgment element only)

      
 

      
I still 
      don't see why in example 1 the sender of the error message does not set 
      AckRequested to S/U while in example 2 the sender of the error message 
      sets AckRequested to S/U. 
[David B] In example 1, suppose the ErrorMessage was 
      lost, then, as the original message was sent reliably, the sender would 
      resend it which would cause the Error Message to be resent. This means 
      that the ErrorMessage does not need to be sent reliably as the sender of 
      the Error Message knows that they will receive the original message again 
      if the error message is lost

      
In example 2, the Error 
      Message needs to be sent reliably as the sender wants to make sure that it 
      was received. If it is not sent reliably then there will be no 
      acknowledgement.

      
 Perhaps the design guide you 
      suggested earlier should clearly define the error scenarios when reliable 
      messaging and/or AckRequested are to be used.

      
 

      
A general 
      rule (it's somewhere in the spec but I can't immediately find where) says 
      that if you find an error in an error message then you don't respond with 
      another error message and sort out the problem by some other 
      means.

      
 

      
Regards

      
David

      
        
-----Original Message-----
From: Arvola Chan 
        [mailto:]
Sent: Friday, July 27, 2001 7:40 
        PM
To: ebXML Msg
Cc: 
        
Subject: T2: ackRequested attribute in Via 
        element

        
Section 8.7 does not clearly indicate the 
        circumstances under which the ackRequested attribute should be set (to 
        Signed or Unsigned). Is this governed by the ReliableMessaging and 
        NonRepudiation element for the DocExchange associated with the 
        DeliveryChannel that is being used?

        
 

        
In particular, when an error is encountered 
        in processing a message, what should be the strategy for setting the 
        ackRequested attribute in the error message? In other words, under what 
        circumstances, if any, are error messages to be sent 
        reliably?

        
 

        
Thanks,

        
-Arvola