on 08-27-2010 1:01 PM
Hi experts,
Business scenario - Pull the data from Data base using a Stored Procedure(this marks the records once it is successful) and call web service using this data. If web service call is success, push the response received from web service to Data Base. If call to web service fails, still push the data which was pulled initially from database back to same location in database.
Iam using BPM for this.
Block1 - get the data into BPM from Database (async), had an exception branch to check its success status and raise alert incase of failure.
if Block 1 is good.
Transform the data to Web service input format
Block2 - send the call to webservice Synchronous send step(request and response are defined as abstract asynchronous), had an exception branch to check if call is good or not, if the call is unsuccessful, write the data back to database
If block 2 is good,
Block3 - Response(abstract asynchronous ) recieved from webservice is transformed to Data base format and written to Data base using JDBC receiver adapter.
I would like to know if this design is good, can I use options like Async \ synch bridge here.
Please let me know your thoughts.
I recommend using an asyc process. When webservice call fails, you can fix the issue and resend.
What prupose should it have to recover the db? The message will processed again and fail again.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
> Coming to asynchronous call, do you mean I need use asynchronous send step to call web service and receive the response from web service in another asynchronous receiver step.
This is correct.
If you cannot change the webservice, you can this with a BPM, but the error handling in BPM should have reprocess options.
A sync interface is more likely to fail than an async interface.
I have an asynchronous send step now followed by receive step, but in receive step it is asking me Use Correlations.
I have defined a Correlation for the request and response. I have an element as common and getting filled in both revues and response. So I have selected that as Correlation Container element, under involved messages - selected request and response messages, under Properties I have selected the element name, using XPATH.
Now When I want to select this correlation in asynchronous send step and receive step, it shows in my drop down , when I select and save it , it is vanishing. I could not see the correlation I selected , it shows empty.
Did I miss anything.
Stefan,
I thought you suggested to call web service asynchronously using a async send step followed by asynch receive step.
If I stick to my original approach -> receive (async) - send (sync) web service call - send (async), as I said earlier when web service is down, eventhough I have exception branch for synchronous send step, exception was not caught as Iam getting Application error back and message is not restartable.
Another Info.. Iam using AXIS adapter to call web service, the reason we are using Data Power between XI and external web service. Communication between XI and Data Power needs to be two way SSL.
thank you for all your views.
Stefan suggested initially to call the web service asynchronously and receive the response from web service in another receive step . When I do that receive step is asking me to have a correlation, eventhough I created a correlation it is vanishing when I save it.
May be I could not understand it correctly.
are these steps are good.
BPM process -
Block 1 - ( to ge the data from data base) Asyn Receive step ,
Block2 - Asynch Send step (to call web service), Aynch receive step(to receive the response from web service ), exception branch (for web service call failures)
Block3 - send step to send the response received from web service to Data base.
when web service is down, eventhough I have exception branch for synchronous send step, exception was not caught as Iam getting Application error back and message is not restartable.
You can use this parameter in SOAP receiver channel to grab the SOAP fault message :-
"XMBWS.NoSOAPIgnoreStatusCode" = true in receiver SOAP channel -> Module tab -> module configuration -> module key = soap.
No matter what, you can't re-start a failed sync message from PI (if the failure is due to the application / system error).
User | Count |
---|---|
81 | |
25 | |
12 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.