ebXML Message States
One of the main purpose of the ebXML Message Service Handler is to deliver a message from A to B.
So a user typically wants to know whether that was achieved or not. And if not what happend.
Connectivity (Ping/Pong)
Cases
All Good
Party A:
- directive (A1) is received
- ebXML ping message (A2) created
- ebXML ping message (A2) sent
- ebXML pong message (A3) received
- directive (A4) created
- direcitve (A4) sent
- case done
Party B:
- ebXML ping message (B1) received
- ebXML pong message (B2) created
- ebXML pong message (B2) sent
- directive (B3) created
- directive (B3) sent
- case done
No Reliable Messaging
Cases
All Good
Party A:
- directive (A1) is received
- ebXML message (A2) is created
- ebXML message (A2) is sent
Party B:
- ebXML message (B1) is received
- directive (B2) is created
- directive (B2) is sent
Final Message States:
A1: received A2: sent
B1: received B2: sent
Overall A: Success Overall B: Success
Bad
Party A:
- directive (A1) is received
- ebXML message (A2) is created
- ebXML message (A2) is error sending
- error directive (A3) created
- error directive (A3) sent
Party B:
- nothing
Final Message States:
A1: received A2: error A3: sent
Overall A: Failure Overall B: nothing
Bad 2
Party A:
- directive (A1) is received
- ebXML message (A2) is created
- ebXML message (A2) is sent
- error ebXML Message (A3) received
- error directive (A4) created
- error directive (A4) sent
Party B:
- ebXML message (B1) is received
- ebXML message (B1) fails validation
- error ebXML message (B2) created
- error ebXML message (B2) sent
Final Message States:
A1: received A2: failed A3: received A4: sent
B1: received -> failed B2: sent
Overall A: Failure Overall B: Failure
Reliable Messaging
Cases
All Good
Party A:
- directive (A1) is received
- ebXML message (A2) is created
- ebXML message (A2) is sent
Party B:
- ebXML message (B1) is received
- ebXML message (B1) validates
- ack ebXML message (B2) created
- ack ebXML message (B2) sent
- directive (B3) is created
- directive (B3) is sent
Final Message States
A1: received A2: sent
B1: received B2: sent B3: sent
Overall A: Success Overall B: Success
Bad
Party A:
- directive (A1) is received
- ebXML message (A2) is created
- ebXML message (A2) is sent 1st time
- x ebXML message (A2) is sent 2nd time
- y ebXML message (A2) is sent 3rd time
- z error directive (A3) created
- error directie (A3) sent
Party B:
- ebXML message (B1) is received
- ebXML message (B1) validates
- ack ebXML message (B2) created
- ack ebXML message (B2) failed to send
- directive (B5) created
- directive (B5) sent
- x ebXML message (B1) is received
- ebXML message (B1) validates
- ack ebXML message (B2) already created
- ack ebXML message (B2) failed to send
- y ebXML message (B1) is received
- ebXML message (B1) validates
- ack ebXML messagee (B2) already created
- ack ebXML message (B2) failed to send
- error directive (B3) created
- error directive (B3) sent
failed to send async ack if there is no HTTP server listening on expected ip and port.
this behavious differently than when the ack is sent async to some SMTP server. There an error SMTP email would come back!
Final Message States:
A1: received A2: sent
B1: received B2: sent B3: sent
Overall A: Success Overall B: Success
