1. I have integrated two webservices say O - outbound webservice and I - Inbound webservice in siebel 8.1. Integrated with external application ExApp.
2. User need to click on submit button , then few fields from UI will be sent to external application using outbound webservice. When siebel sends request, in response it receives acknowledgement only with few fields as WSMsgHeader.
3. The actual response to the request is sent later on Inbound webservice by external application.
4. As soon as the response is recieved, it should be shown to the user.
5. In case response is not recieved in 3 mins then, show time out msg to user.
6. For user the transaction is still synchronous and will be waiting for response on form applet.
6. P.S. MsgIds are present to track request and its response
Now we are struggling to design this in Siebel.
1. How can I wait for a specific response?
2. As soon as a specific response is recieved for a sent request, how to update UI at very same time?
3. How to understand that no response recieved?
4. In any case the wait time has to be minimum.
Please note, continuously querying table for response is not a acceptable design for us because it will have performance issue.
I think below solution will solve your problem. You have to create 2 workflows,
Step1: Call that Web service
Step2: In the response operation, add one more step which will update one new flag for "RESPONSE_RECEIVED" (This will indicate whether WS has got the response or not)
Step3: Update UI for response received.
Step1: Call WF1 in async mode
Step2: Wait for 3 min (Workflow utilities wait step)
Step3(Decision step): Check the "RESPONSE_RECEIVED" flag. If it is unset, means response not yet received show time out and if it is set, means already got the response do nothing.