This appendix provides information about synchronous request and reply over MLLP.
This appendix includes the following topics:
The sync request reply feature is limited to one App invoking an inbound endpoint at any one time, that is, there are no concurrent invocations.
This topic contains an example of the end to end message flow for synchronous request/reply.
App A ---ORM--> SSHI -> composite -> SSHI ---ORM--> App B App A <--ACK--- SSHI <- composite <- SSHI <--ACK--- App B
Essentially, SOA Suite for healthcare Integration (SSHI) needs to read the ORM from the TCP socket and write the ACK back to the same socket. The difference in this use case is that the ACK is coming from App B. This use case can be solved by turning off Functional Acknowledgement handled automatically. Let the composite handles it. In turn the composite receives the ACK from App B. This use case does not require the composite to have synchronous request/reply setting.
Starting on the top left side:
App A ---ORM--> SSHI -> composite
SSHI receives the ORM, translates it to ORM xml, passes it to the composite with DOCTYPE_NAME, DOCTYPE_REVISION, TO_ENDPOINT/TO_PARTY, FROM_ENDPOINT/FROM_PARTY, MSG_ID information along with others. See http://docs.oracle.com/cd/E28280_01/user.1111/e10229/app_interface.htm#CACBHDJE for a list of these.
In this case, let's say FROM_ENDPOINT=EndpointAppA and MSG_ID=1234. In the composite, it uses this information or the ORM content to transform and route to App B. In doing so, composite will set TO_ENDPOINT=EndpointAppB and MSG_ID=1234__EndpointAppB (append with the original MSG_ID with __EndpointAppB in this example, this will be used for correlation as you can see later) in addition to other parameters in order to send to App B. This completes the top section.
Continuing with the lower right side:
composite <- SSHI <--ACK--- App B
The ACK comes in and it correlates to ORM and this ACK will be passed to the composite because Functional Ack handled automatically is set to No. The ACK will have set FROM_ENDPOINT=EndpointAppB, INREPLY_MSG_ID=1234__EndpointAppB. In the composite, it will have logic to strip away the post fix to get the original message id. It also has either a business rule to match EndpointAppB with EndpointAppA, or it can query the b2b_instancemessage view to find out the original EndpointAppA base on the original message id 1234.
For the finalApp A <--ACK--- SSHI <-
composite segment, TO_ENDPOINT=EndpointAppA and INREPLY_MSG_ID=1234 and other relevant parameters. In this last segment the ACK will correlate back to the original ORM without using any information in the ACK.