ebMS3 Part 2 Figures Part 2
MSH A MSH intermediary MSH B 1-way from A to B 1-way/push: A-Int 1-way/push: Int-B Int only forwards the message M1 HTTP 200 M1 1-way from A to B, end-to-end reliable 1-way/push: A-Int 1-way/push: Int-B Int forwards the asynchronous RM Ack HTTP 200 M1 HTTP 200 RM Ack1 (MessageID-preserving Forward) 1-way from A to B, robust 1-way/push: A-Int 1-way/push: Int-B Int forwards the HTTP status code / SOAP fault M1 HTTP 500 / Fault PUSH Scenarios (forward M1, wait for the status code / Fault and forward it) (status codes / Faults are only for each leg) (forward the RM Ack)
MSH A MSH intermediary MSH B 1-way from B to A, pulled Two “synchronized pulls” 1-way/pull: A-Int, synchronized with: 1-way/pull: Int-B PullRequest (MessageID-preserving Forward) PULL Scenarios M1 PullRequest (forward the PullRequest, wait for the pulled msge) 1-way from B to A, pulled / decoupled Two non-synchronized pulls, only connected by an MPC in intermediary 1-way/pull: A-Int, decoupled from: 1-way/pull: Int-B PullRequest Whatever message in the Intermediary MPC M1 PullRequest (PullRequest is NOT forwarded) PullRequest Whatever message, here M1 (M1 posted in the Intermediary MPC) Reliable variant : Replace “M1” by “M1 + RM Ack” Optional RM Ack for M1 is pushed from A to B Reliable variant : No end-to-end reliability, but for each leg Intermediary must have RM capability
MSH Sender/ receiver MSH Sender/ receiver MSH Sender/ receiver MSH Sender/ receiver Non-addressable endpoint Pull + send The Interconnected Hubs model MSH Intermediary MSH Intermediary MSH Intermediary MSH Intermediary MSH Sender MSH Receiver I-Cloud
MSH Sender/ receiver MSH Sender/ receiver MSH Sender/ receiver MSH Sender/ receiver Non-addressable endpoint Pull The Hub-and-spoke model MSH Intermediary MSH Sender MSH Receiver
MSH Sender/ receiver MSH Sender/ receiver Non-addressable Endpoint MSH Pull MSH gateway Intermediary MSH gateway Intermediary Push Intermediary-cloud MSH Router Intermediary MSH Router Intermediary Push addressable Endpoint MSH
Sender/ receiver MSH Sender/ receiver Non-addressable endpoint Pull MSH gateway Intermediary MSH gateway Intermediary Push Intermediary-cloud MSH Intermediary MSH Sender/ receiver MSH Sender/ receiver MSH Sender/ receiver MSH Sender/ receiver MSH Sender/ receiver MSH Sender/ receiver -Message profile (toParty, Service, Action….) -MEP Control Info o MPC id o MEP (Push / Pull) o security info (e.g. for Pull authorization) Configuration of Intermediaries -Message profile (toParty, Service, Action….) - MPC id - MEP (Push / Pull) - level of RM - level of Security Set of partial PModes for Communication with endpoint MSHs Routing function Routing function Routing function Set of “end-to-end” PModes for each endpoint MSH -Message profile (toParty, Service, Action….) -MEP Control Info o MPC id o MEP (Push / Pull) o security info (e.g. for Pull authorization) Set of partial PModes for Communication with endpoint MSHs -Message profile (toParty, Service, Action….) - MPC id - MEP (Push / Pull) - level of RM - level of Security Set of “end-to-end” PModes for each endpoint MSH
Enpoint MSH 1 HTTP 200 “Gateway” intermediary MSH “Gateway” intermediary MSH Enpoint MSH 1 Submit msg RM CreateSeq “Router” MSH intermediaries RM CreateSeq + ebms hdr RM CreateSeq RM CSR + ebms hdr RM CSR + ebms hdr RM CSR PullRequest Push option Pull option End-to-end RM Sequence establishment: “demand-driven” option PullRequest RM CreateSeq RM CSR Push option Pull option
Enpoint MSH A HTTP 200 “Gateway” intermediary MSH 1 “Gateway” intermediary MSH 2 Enpoint MSH B Submit User msg User Message “Router” MSH intermediaries User Message Signal (Receipt or Error) Signal + “dummy” eb header element PullRequest Push option Pull option Asynchronous Routing of ebMS Signals (Errors, Receipts), Option 1 PullRequest User Message Signal (Receipt or Error) Push option Pull option Signal + “dummy” eb header element Signal (Receipt or Error) After removal of routing eb header Signal (Receipt or Error) After removal of routing eb header I-Cloud Routing Functions: 1. ebMS header data for User msgs 2. ebMS header data for Signal msgs (reverse)
Enpoint MSH A HTTP 200 “Gateway” intermediary MSH 1 “Gateway” intermediary MSH 2 Enpoint MSH B Submit User msg User Message with wsa headers User Message Signal (Receipt or Error) PullRequest Push option Pull option Asynchronous Routing of ebMS Signals (Errors, Receipts), Option 2 PullRequest User Message Signal (Receipt or Error) Push option Pull option Signal (Receipt or Error) After removal of wsa headers Signal (Receipt or Error) After removal of wsa headers Gateway inserts a wsa:ReplyTo header, and :endpointmsh” ref. parameter User msg : Gateway removes Wsa headers. Signal msg : Gateway adds Wsa:To header. Signal msg : Gateway removes Wsa headers I-Cloud Routing Functions: 1. ebMS header data 2. Intermediary URL (wsa:To)
Enpoint MSH A HTTP 200 Hub intermediary MSH Enpoint MSH B Submit User msg User Message M1 Signal (Receipt or Error) PullRequest Push option Pull option Asynchronous Routing of ebMS Signals by a Hub PullRequest User Message M1 Signal (Receipt or Error) Push option Pull option Signal (Receipt or Error) Hub determines the routing and communication parameters for M1 (and related Signals) based on PMode data
Enpoint MSH A HTTP 200 Hub intermediary MSH Enpoint MSH B Submit User msg User Message M1 Signal (Receipt or Error) PullRequest Push option Pull option Asynchronous Routing of Synchronous ebMS Signals & Responses PullRequest User Message M1 Signal (Receipt or Error) Push option Pull option Signal (Receipt or Error) Hub has routing capability for the Request user message, Based on eb header
Enpoint MSH A HTTP 200 Hub intermediary MSH Enpoint MSH B Submit User msg User Message M1 Signal message (Receipt or Error) or User message PullRequest Push option Pull option Asynchronous Routing of ebMS Signals & ebMS User Responses Hub has routing capability for the Request UM (user message M1) based on eb header. Hub keeps association eb:MessageId. Signal message (Receipt or Error) or User message PullRequest User Message M1 Pull option Signal message (Receipt or Error) or User message Push option Hub relates Response message to previous eb:MessageId (M1) based on RefToMessageId. Hub knows association MSH A URL or MPC in case of pulling.
MSH Sender/ receiver MSH Sender/ receiver Non-addressable Endpoint MSH Pull MSH [gateway] Intermediary Push Intermediary-cloud Push addressable Endpoint MSH [gateway] Intermediary
Endpoint MSH RM bridge MSH Intermediary Intermediary-cloud MSH Intermediary Endpoint MSH RM sequence #1RM sequence #2
Enpoint MSH A “RM bridge” intermediary MSH Last intermediary MSH Enpoint MSH B Submit User msg User Message A (over RM Seq #1) wsrm:CreateSequence wsrm:CSR #2 PullRequest (Error channel) Pull option Two-tiered Reliable Multihop Eb:deliveryFailure for UM B wsrm:CreateSequence + UM header wsrm:CSR #2 + UM header User Message A (over RM Seq #2) wsrm:CreateSequence wsrm:CSR #1 User Message A (RM Seq #2) wsrm:Ack #2 wsrm:Ack #1 wsrm:Ack #2 User Message B (over RM Seq #2) User Message B (over RM Seq #1) wsrm:Ack #1
Enpoint MSH A First intermediary MSH Last intermediary MSH Enpoint MSH B wsrm:CS + wsa:Ref Par wsrm:CSR + wsa: Ref Params (from CS AcksTo) NOTE: sent over back-channel in case of Pushed CS Pull option Multi-hop RM Sequence Establishment wsrm:CreateSequence + wsa:Ref Par wsrm:CreateSequence + wsa Ref “routing” Parameters wsrm:CSR + wsa:To (from CS AcksTo) wsrm:CSR + wsa:RefPar (from CS AcksTo) wsrm:CSR + wsa:RefPar (from CS AcksTo) Push option wsrm:CSR + wsa:RefPar (from CS AcksTo) wsrm:CS + wsa:Ref Par + EBMS:0006 warning Eb:PullRequest (mpc) Push option Pull option wsrm:CS Ref Params include MPC. Last Intm. assigns the wsrm:CS to a Pull channel for this MPC. Eb:PullRequest (mpc) I-Cloud Case of Direct Addressing (wsa:To)
Enpoint MSH A First intermediary MSH Last intermediary MSH Enpoint MSH B wsrm:SequenceAck + wsa:To (from CS AcksTo) NOTE: sent over back-channel in case of Pushed User message Pull option Multi-hop RM Acknowledgments eb:UserMessage (over RM Seq) wsrm:SequenceAck + wsa:To (from CS AcksTo) wsrm:SequenceAck + eb:routinginfo (from CS AcksTo) wsrm:SequenceAck + eb:routinginfo Push option wsrm:SequenceAck + eb:routinginfo eb:PullRequest + wsrm:SequenceAckt Push option Pull option eb:PullRequest (mpc) I-Cloud Case of Direct Addressing (wsa:To) eb:UserMessage
Enpoint MSH A First intermediary MSH Last intermediary MSH Enpoint MSH B Multi-hop User Messages eb:UserMessageeb:PullRequest Push option Pull option eb:UserMessage NOTE: routing based on eb:UserMessage content eb:UserMessage I-Cloud
Path origin MSH First intermediary MSH Multi-hop control model eb:UserMessage I-Cloud Path destination MSH eb:UserMessage Last intermediary MSH Transfer controlled by PMode Transfer controlled by PMode Transfer controlled by Routing Function Edge hop (1 st hop) Edge hop (last hop) I-Cloud hops
MSH 1 One-Way Multi-hop MEPs : Sender-pushing Edge Bindings Push eb:UserMessage I-Cloud MSH 2 Push eb:UserMessage Multihop One-way Case 1 (first-and-last-push) One-Way / Push One-Way / Push eb:UserMessage Pulled eb:UserMessage eb:PullRequest Multihop One-way Case 2 (first-push-last-pull) One-Way / Push One-Way / Pull
MSH 1 I-Cloud MSH 2 Pulled eb:UserMessage eb:PullRequest Multihop One-way Case 3a (first-and-last-pull) One-Way / Pull Pulled eb:UserMessage eb:PullRequest One-Way / Pull Pulled eb:UserMessage eb:PullRequest One-Way / Pull Pulled eb:UserMessage eb:PullRequest One-Way / Pull Routed PullRequest push pull One-Way Multi-hop MEPs : Sender-pulling Edge Bindings (1) Routing possibly involving Pushes and Pulls Multihop One-way Case 3b (first-and-last-pull)
MSH 1 I-Cloud MSH 2 Multihop One-way Case 4 (first-pull-last-push) Pulled eb:UserMessage eb:PullRequest One-Way / Pull Routing possibly involving Pushes and Pulls push pull One-Way Multi-hop MEPs : Sender-pulling Edge Bindings (2) Push eb:UserMessage One-Way / Push
MSH 1 I-Cloud MSH 2 Push (response) eb:UserMessage Push eb:UserMessage eb:PullRequest Pulled eb:UserMessage eb:PullRequest Pulled eb:UserMessage Two-Way / Push- and-Pull Multihop Two-way Case 2 (Request-push-last-pull And Reply-push-last-pull) Two-Way / Pull- and-Push Push eb:UserMessage Push eb:UserMessage Push (response) eb:UserMessage Push (response) eb:UserMessage Two-Way / Push-and-Push Two-Way / Push-and-Push Multihop Two-way Case 1 (Request-push-last-push And Reply-push-last-push) Two-Way Multi-hop MEPs : Asynchronous Edge Bindings
MSH 1 I-Cloud MSH 2 Multihop Two-way Case 4 (first-sync-last-sync) (Sync response) eb:UserMessage Push eb:UserMessage eb:PullRequest Pulled eb:UserMessage Push eb:UserMessage Multihop Two-way Case 3 (Request-push-last-sync And Reply-last-pull) Two-Way / Push- and-Pull Two-Way / Sync (Sync response) eb:UserMessage Push eb:UserMessage Two-Way / Sync (Sync response) eb:UserMessage Push eb:UserMessage Two-Way / Sync Two-Way Multi-hop MEPs : Synchronous Edge Bindings
Sending Enpoint MSH First intermediary MSH Last intermediary MSH General Multi-hop MEP Model eb:UserMessage eb:PullRequest Push option Pull option eb:UserMessage I-Cloud Receiving Enpoint MSH
MSH 1 Push Multi-hop MEPs Push eb:UserMessage I-Cloud MSH 2 Push eb:UserMessage Push eb:UserMessage Push eb:UserMessage Push (response) eb:UserMessage Push (response) eb:UserMessage Multihop One-way (push only) One-Way / Push One-Way / Push Two-Way / Push-and-Push Two-Way / Push-and-Push Multihop Two-way (push only)
MSH 1 Mixed Push and Pull Multi-hop MEPs Push eb:UserMessage I-Cloud MSH 2 Pulled eb:UserMessage Push (response) eb:UserMessage eb:PullRequest Push eb:UserMessage eb:PullRequest Pulled eb:UserMessage eb:PullRequest Pulled eb:UserMessage (Sync response) eb:UserMessage Push eb:UserMessage eb:PullRequest Pulled eb:UserMessage Push eb:UserMessage Multihop One-way (combining push and pull) One-Way / Push One-Way / Pull Two-Way / Push- and-Pull Multihop Two-way (combining push and pull) Two-Way / Pull- and-Push Multihop Two-way (combining Push, sync and pull) Two-Way / Push- and-Pull Two-Way / Sync
Enpoint MSH A First intermediary MSH Last intermediary MSH Enpoint MSH B eb:UserMessage (reply) NOTE: over last-hop back-channel Multi-hop User Message Replies (for Two-way MEPs) eb:UserMessage (request in a Two-way MEP) NOTE: may have wsa:ReplyTo that specifies explicitly the URL of MSH A (in the EPR) eb:UserMessage (reply) + optional wsa:To (from wsa:ReplyTo), eb:UserMessage (reply) eb:PullRequest Push option Pull option eb:PullRequest (mpc) I-Cloud Case of Direct Addressing eb:UserMessage Case of Sync Reply Push option Pull option Case of Push Reply eb:UserMessage (reply)
Enpoint MSH A First intermediary MSH Last intermediary MSH Enpoint MSH B eb:Receipt / eb:Error + eb:routinginfo NOTE: sent over last- hop back-channel Multi-hop Signal Messages as Responses eb:UserMessage NOTE: may have wsa:ReplyTo that either specifies: - Explicitly the URL of MSH A (in the EPR) - The EPR Ref parameters for MSH A (RoutingInput) eb:Receipt or eb:Error Message + optional wsa:To (from wsa:ReplyTo), or with URL from the PMode for this MEP) eb:Receipt / eb:Error + eb:routinginfo (from either wsa:ReplyTo, or from PMode) eb:Receipt / eb:Error + eb:routinginfo eb:Receipt / eb:Error + eb:routinginfo eb:PullRequest Push option Pull option eb:PullRequest (mpc) I-Cloud Case of Direct Addressing eb:UserMessage Case of Sync Reply Push option Pull option Case of Push Reply eb:Receipt / eb:Error + eb:routinginfo eb:UserMessage
Enpoint MSH A “RM bridge” intermediary MSH Last intermediary MSH Enpoint MSH B Submit User msg User Message A (over RM Seq #1) wsrm:CreateSequence wsrm:CSR #2 PullRequest (Error channel) Pull option Response Routing: ebMS Messages (2-way MEPs, Errors, Receipts) Eb:deliveryFailure for UM B wsrm:CreateSequence + UM header wsrm:CSR #2 + UM header User Message A (over RM Seq #2) wsrm:CreateSequence wsrm:CSR #1 User Message A (RM Seq #2) wsrm:Ack #2 wsrm:Ack #1 wsrm:Ack #2 User Message B (over RM Seq #2) User Message B (over RM Seq #1) wsrm:Ack #1
Enpoint MSH A “RM bridge” intermediary MSH Last intermediary MSH Enpoint MSH B Submit User msg User Message A (over RM Seq #1) wsrm:CreateSequence wsrm:CSR #2 PullRequest (Error channel) Pull option Response Routing: non - ebMS Messages (RM Acks, RM lifecycle messages) Eb:deliveryFailure for UM B wsrm:CreateSequence + UM header wsrm:CSR #2 + UM header User Message A (over RM Seq #2) wsrm:CreateSequence wsrm:CSR #1 User Message A (RM Seq #2) wsrm:Ack #2 wsrm:Ack #1 wsrm:Ack #2 User Message B (over RM Seq #2) User Message B (over RM Seq #1) wsrm:Ack #1