OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-poc message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: RM Use Cases


Hello all:

please find below some RM use cases (co-written by Fujitsu & Savvion),
for your review...

Jacques
Three use cases can be independently used
to demo Reliable Messaging:

Use Case A: demonstrates "guaranteed delivery" (resending a failed
message)
Use Case B: demonstrates elimination of duplicates (idempotency)
Use Case C: demonstrates handling of a failed Ack (combines A & B)

Terminology:
MSH means Messaging Service Handler. (impements ebXML TR&P)

1. Use Case A: Resending a Reliable Message not well received.
------------------------------------------------------

Context:
Track #1 of demo draft, purchase order exchange.

Description:
as Case title says.

Steps:
- Buyer App: sends a "reliable" PO.
- Buyer MSH: sets header field (DeliverySemantics = "OnceAndOnlyOnce")
and generates a SequenceNumber=1.
- Seller MSH: does not receive it because of  sub-transport failure,
or because of a host failure. (See suggestion for practical simulation
below).
- Buyer MSH: does not receive the expected Ack (MSH-level) .
- Buyer MSH:  After the timeout has expired, resends exactly same  PO.
- Seller MSH: receives the PO, sends back the Ack, and transfers PO to
SellerApp.

Buyer App   Buyer MSH                       Seller MSH     Seller App

PO |------------> |-------------- PO------*               (no PO)
at timeout:
PO |------------> |------------- PO------------>|--------> PO
                  |<-----ebXML Ack--------------|

POAccept |<------ |<----------- PO Accept ----- | <------ PO Accept
                  |------ ebXML Ack------------>|

2. Use Case B: Elimination of Reliable Message duplicate.
------------------------------------------------------

Context:
Track #1 of demo draft, purchase order exchange.

Description:
as Case title says.

Steps:
- Buyer App: sends a "reliable" PO..
- Buyer MSH: sets header field (DeliverySemantics = "OnceAndOnlyOnce")
and generates a SequenceNumber=1 (or increment if not the first).
- Seller MSH:  receives it and passes it to the SellerApp, and sends
back an Ack to BuyerMSH.
- Seller MSH: Because of a sub-transport problem or a Buyer MSH problem,

receives again the same message. (See suggestion for practical
simulation below).
- Seller MSH: sends back an Ack to BuyerMSH, detects duplicate
(SeqNumber is
same as previous one), discards message (does not pass it to Seller
App).

Buyer App   Buyer MSH                       Seller MSH     Seller App

PO |------------> |------------- PO-----------> |--------> PO
                  |<-----ebXML Ack--------------|

                         *----- PO------------> |(duplicate)
                  |<-----ebXML Ack--------------|

POAccept |<------ |<-------------- PO Accept ---| <------ PO Accept
                  |------ ebXML Ack------------>|

3. Use Case C: Failed Acknowledgement for a reliable message.
------------------------------------------------------

Context:
Track #1 of demo draft, purchase order exchange.

Description:
A reliable Message is well received, but its Ack is not well transmitted
back
to sender. The sender resends the message after timeout. The seller
detects
a duplicate and ignore the repeated message. This is a combo of Case A &
Case B.

Steps:
- Buyer App: sends a "reliable" PO.
- Buyer MSH: sets header field (DeliverySemantics = "Once AndOnlyOnce")
and generates a SequenceNumber=1 (or increment if not the first).
- Seller MSH:  receives it and passes it to the SellerApp, and sends
back an Ack to BuyerMSH.
- [Seller App: is in the process of preparing a PO Acceptance]
- Buyer MSH: Because of a sub-transport problem or a Seller MSH problem,

does not receive the Ack. (See suggestion for practical simulation
below).
- Buyer MSH:  After the timeout has expired, resends exactly same  PO.
- Seller MSH: receives the PO, sends back an Ack to BuyerMSH
- Seller MSH:  detects duplicate (SeqNumber is same or smaller than
previous one),
discards message (does not pass it to Seller App).

Variant:
- the PO acceptance could be sent and received by Buyer even before
timeout
of intial PO expires.

Buyer App   Buyer MSH                       Seller MSH     Seller App

PO |------------> |------------- PO-------------> |--------> PO
                          *--ebXML Ack------------|

at timeout:
PO |------------> |------------- PO-------------> |(duplicate)
                  |<-----ebXML Ack----------------|

POAccept |<------ |<-------------- PO Accept -----| <------ PO Accept
                  |------ ebXML Ack-------------->|

4. Demo Implementation Notes
-------------------------------

4.1- Note that the MSH sender of a reliable message is supposed 
to store the message until an Ack is received 
(and resend it if needed, transparently to the App layer).
As the next Application message can be sent without waiting 
for the Ack of the previous one,
it is expected that several messages need to be stored. 
This results from lifting the "blocking" constraint
(lines 123-125 in v0.080 should be removed.):
"Service and the Sender's Messaging Service will not 
  initiate a new message transmission until a current 
  message transmission has been correctly received."
However, in the context of the demo, we should not have to deal with
several concurrent msg_sendings/msg_acks. So one message at most 
would need be stored at any time, for each connection (pair sender-receiver).

4.2- How to simulate the "failures": two solutions:

(a) The Seller MSH has a configuration parameter that will make it NOT
send an Ack for a received reliable message (just once) (supports
Case C), or ignore a received appmessage (just one) (supports Case A).
The Buyer MSH has a configuration parameter that will make it resend
twice the next app message (supports Case B).

(b) We can use one of the candidate Hubs, to simulate sub-transport
problems.
As we understand, Viquity's Hub is a router that is transparent to 
MSH layer: it generates no Ack, makes no changes to routing header
fields, just transfers any message.
The only "ebXML  intelligence" this Hub has,  as an exception to its
dumbness (no offense Philippe),
is that there is a DUNS field somewhere in the header that it can read
to decide of which URL to send it next.
It does not fall into the category described in Phase 2 (section 4)
of the RM spec, so is not involved at all in the Reliability mechanism.
Such a Hub really is part of the "sub-transport"
layer, and we can use it to simulate network problems, 
and reliable exchanges between two end points. We can demonstrate:
- Use Case A: by intercepting and deleting a PO message at Hub level.
- Use Case B: by resending a PO message at Hub level.
- Use Case C: by intercepting and deleting an Ack message at Hub level.
Here, we would act manually at Hub level, selecting messages based on
their origin-destination, and showing the audience what kind of
"trouble" we simulate.
(To check with Philippe on detailed procedure.)



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Search: Match: Sort by:
Words: | Help


Powered by eList eXpress LLC