You will need to create a set of utility services that allow you to invoke an IS service on its own thread using the Service.doThreadedInvoke() method.
Then create a simple Flow that contains only your pub.client:soapHTTP (or soapRPC) call and returns its results to the calling service using the pub.sync:notify service. In addition to whatever is needed to invoke your web service, your new Flow also need to accept a “key” parameter that it can use in the pub.sync:notify to pass results back to the parent thread.
The parent Flow will call the utility service to invoke your new child Flow on its own thread. It will then use the pub.sync:wait to wait for results for a predetermined period of time. If the timeout limit passes, it will throw an exception containing the string “wait timed out”. You can check the lastError/error variable for this string to handle a timeout differently from other exceptions.
Of course, you should work with the service provider to agree upon the quality of service they will provide. In support of any service level agreement that you negotiate, you should log any event in which the provided service does not meet expectations.
Mark
#webMethods#API-Management#soa