Polling a Web Service from PO without a trigger
In one of our project we had a requirement where PO needs to poll a WebService through SOAP and we needed to pass the data to a receiver. In this particular case, we may need to use AXIS framework to poll the service because in normal SOAP sender channel we do not have an option to poll a service to get the data, instead some other process/service have to call to trigger the interface.
One of the possible solution use to use NWBPM/BPM but we wanted to avoid BPM and also was not sure how the AXIS framework will work. So what could be done?
Solution: Here we have used SYNC/ASYNC bridge with a little trick. We have created 2 ICO where first ICO will picking a dummy file to trigger the process in a regular interval and with the receiver SOAP channel of the first ICO we are going to poll the Webservice. However once we get the response from the Webservice in the Receiver SOAP channel of the first ICO, we use the RequestResponseBean and ResponseOneWayBean to pass the response to the 2nd ICO which will pass the response to the actual receiver.
Below are the Design and Config:(I have kept the screens for the objects only which can create confusion)
External Definition of the Service we need to poll:
Asynchronous Outbound Service Interface for the Dummy file:(Used in 1st ICO)
Asynchronous Inbound Service Interface for the SOAP service which we need to poll:(Used in 1st ICO)
Please note that though this service a SYNC one but we need to declare an ASYNC interface as we will pass the response to another interface.
Asynchronous Outbound Service Interface for the SOAP service from which we will get response after polling:(Used in 2nd ICO)
Asynchronous Inbound Service Interface for the ultimate receiver:(Used in 2nd ICO)
We also need 2 Operational Mapping and 2 Message Mapping. 1st set will be used for dummy File to the SOAP service structure. 2nd set will be used to map the response from SOAP service to the ultimate receiver structure.
Here the sender channel used to pick the dummy file. Remember to keep the channel in test mode so that the same file picked up again and again to trigger the whole process.
On the receiver channel, we need to connect it to the service we want to poll and pass the response to the 2nd ICO.
Please note that no module config required for this Sender SOAP channel. It is used to receive the response from the SOAP receiver channel used in 1st ICO.
The rest of the configuration is usual. And that is it. Once you start the sender channel of first ICO, PO will poll the SOAP service on a regular interval and will pass the response to the ultimate receiver.