----- 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>
...