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