Bridging the Sync-Async bridge with Fork (XI)
Here is the solution that will overcome the limitation of ccBPM(XI), bridging the Sync-Async bridge and fork together. I am currently involved in an exercise of Wipro which showcases the adapter and ccBPM capabilities of SAP XI3.0 using a business case. As a part of exercise,we came across an instance where the XML file pushed by the Webdynpro onto the XI in the previous page has to be fetched and displayed on the next page. Let me explain the instance briefly, we create an advance shipment notice (ASN) from Webdynpro by pushing the data into XI as a file. At later point of the time when the user wants to view the ASN, HTTP trigger is sent to the XI and the ASN file has to be picked up and shown on the WebDynpro.
It looked simple initially but later I found out that there are shady areas which have to be worked upon.
1.There is no receiving system as the file already exists on the XI, it has to just map the file as the response message of the HTTP request.
2. File adapter will poll the file and picks up irrespective of whether the HTTP trigger is sent to XI or not.
3. File message and HTTP message should be bonded with each other and an action can be taken by XI only after receiving both the messages.
How do we do it? An immediate solution which struck me is to use ccBPM as the mediator!! But that did not solve the problem and put me into shady areas again!!
1. A fork step has to be used for holding the process until the messages FileASN and HttpASN arrive.
2. To encounter the synchronous http trigger from WebDynpro, a Sync-Async bridge has to be opened as the receive step is always asynchronous.
Fork and Sync-Async bridge are again mutually exclusive steps. How do we bridge them? Since they are mutually exclusive, use two business processes.Yes!! This time it was full proof. I got the best solution
Integration Process (Design Time)
Two business processes Trigger_BPM and Sync_Async bridge in the integration repository are created. Trigger_BPM will have the fork step and sends the file message asynchronously to the Sync_Async bridge which the maps the file message as response to the synchronous HTTP request from Webdynpro and closes the bridge.
I did the necessary configurations in the integration directory and it worked fine. Blog might be useful to counter similar instances in the real time.