-----
Original Message -----
Sent:
Wednesday, January 02, 2002 1:48 PM
Subject:
[ebxml-msg] Arvola's SyncReply issues
Arvola,
I've snipped out a few of your comments that centre
on the SyncReply element and embedded a few comments below.
Hopefully, this will move us quickly towards resolving your
questions.
thanx,
doug
-----
Original Message -----
Sent: Wednesday, 02 January 2002 12:33
Subject: Re: [ebxml-msg] Messaging Spec v1.092
...
6. Line 1412: I like to point out that a
SyncReply element is not compatible with an AckRequested element that
is targeted at the next MSH.
I'm not sure why you're of this
opinion. Why couldn't the next MSH synchronously reply with an
Acknowledgment element (after it's persisted the incoming message, of
course)?
<ac>
The From Party MSH expects a
synchronous response from the To Party MSH. On the other hand,
if the intermediary MSH returns the intermediate Acknowledgment
synchronously after it has persisted the message, and then closes
the HTTP connection (prior to forwarding the message), then how can
the response from the To Party MSH be returned synchronously to the
From Party MSH?
</ac>
12. Line 1591: I think it may be
problematical for the recipient to do duplicate elimination when no
DuplicateElimination element is present. What happens if SyncReply is
present and AckRequested is not present. If the incoming message is
not passed on to the application, should any reply be returned to the
sender?
The DuplicateElimination semantics are
described rather clearly in the specification. The answer to
your question is that the synchronous reply must contain the
first response to the duplicate message. The receiver
application might not hear about the duplicate but the will get the
same answer back as the first time.
<ac>
You are correct. I was confused by the
statement on line 1788: "A Receiving MSH node is not participating in
the reliable messaging protocol for a received message if the message
either does not contain an AckRequested element, or ..." I think there
are actually four aspects of reliable messaging behavior: (1)
persisting the sent message and retry on the part of the sender when
an Acknowledgment is not returned in time; (2) returning an
Acknowledgment message by the receiver; (3) persisting the
received message to allow duplicate elimination by the receiver; (4)
automatic returning of the first response message without forwarding
the message to the application when a duplicate message is received.
(1) and (2) are triggered by the AckRequested element. (3) and (4) are
triggered by the DuplicateElimination element, or if the receiver
decides to do duplicate elimination in spite of the absence of a
DuplicateElimination element in the incoming message. Line 1589 needs
to clarify what adopting a reliable messaging behavior really means
(really (3) and (4)). In the paragraph starting on line 1591, it will
be helpful to qualify "although elimination of duplicates is still
allowed" to mean that (3) and (4) are to be done.
</ac>
20. Line 1733 and line
1738: These two bullet points assume that syncReplyMode in the CPA is
not used with an asynchronous communication channel. This is in
conflict with the 1.0 CPP/A spec statement quoted in item 15 above. I
think this is a minor technical issue that may require some
discussion.
Would this be resolved by (more
correctly) referencing the syncReplyMode semantics in the CPP/A 1.1
specification? If not, we still have a discrepancy between the
two specifications and that should be resolved as soon as
possible. The CPP/A 1.0 specification may have some vestiges of
the "bundling" semantics I've mentioned before (using syncReplyMode to
describe which signals may be bundled with the application
response). Those semantics apply equally to synchronous and
asynchronous channels. The current SyncReply MSH semantics are
all about what signals must appear in the synchronous response over a
synchronous channel.
It's not up to the MSH to determine
how later business responses might be bundled with business signals
and asynchronous channels are therefore not relevant. Of course,
the current description of an MSH doesn't provide a way to describe
expectations around bundling of business responses and signals with
MSH signals like the Acknowledgment element over an asynchronous
channel. 2.0 issue?
<ac>
I think the simplest solution may be
to request the CPP/A team to strike out from the 1.1 spec the
following sentence: " If the delivery channel identifies a transport
protocol that has no synchronous capabilities (such as SMTP) and the
Characteristics element
has a syncReplyMode
attribute with a value other than "none", a response SHALL contain the
same content as if the transport protocol did support synchronous
responses." which contradicts the statement on line 1625: "The
SyncReplyMode parameter from the CPA is used only if the data
communications protocol is synchronous (e.g.
HTTP)." We
can defer the bundling issue for asynchronous communications protocols
until the 2.0 versions of the MSG and CPP/A specs.
</ac>
...