on 07-20-2009 9:20 PM
Hi,
I've read many messages on this forum regarding BPM error handling but am still a little confused.
In my scenario the BPM is quite simple. All it does is Call web service (synchrous) then transform and then call another web service synchronous.
Now , If any call to the two web services fails , I would like to be able to restart the two calls... now if they fail again, I would like to be able to restart the two calls again... until they work. But each time the restart would be done manualy in the BPM monitoring transactions.
The way I understand the error handling
if I put my synchronous send steps and transformations in a step and catch the exception they throw , I can send myself an alert and then throw another exception which I dont handle. This way , since that exception is not handled , it will set the process in error and I can restart the process later.
However , how can I set it up so that when I restart the bpm , both calls are done again and the same exception handling happens.
Now , when I restart, it seems only what comes after the block and the exception is executed. If I put the sync send calls in the exception handling branch, that will allow me to run the send steps once after an exception...
Thanks.
Hi,
thanks for all your replies.
So , I've got it working... my conclusion is as follows. If you catch the exceptions in your BPM (that is , you create your own and set it in the step as an exception) , then the queue will not be stopped. Even if you throw your own exception.
The only exceptions that stop the queue are the ones thrown by default by PI...
If you ask me , this is really lacking in PI. We should be able to throw catch the exception , do some handling , and then throw another exception which blocks the Q.
Thanks again.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
>>>All it does is Call web service (synchrous) then transform and then call another web service synchronous.
sorry in case you use sync communication you cannot restart anything - so no need to do anything else
Regards,
Michal Krawczyk
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
Is it at least possible to block the integration process when one instance of it is in error ?
Suppose first call fails and I throw an unhandled exception, then could all other calls be stoped until the blocked one is resumed ?
If you can't do this, what would be the purpose of having a Q ? I mean if I do 2 calls and they are put into the queue but the first one fails and the system just runs the second... then the queue is pretty useless ?
Thanks
Even if I don't throw the exception and its a System error on the synchonous call, the BPM is in error but the next call will
go through...
I don't know what the point of EOIO was in that case ?
Even having an Exception branch is enough....you need not compulsorily have anything in it.....so when an exception occurs in your Sync step the control goes to the Exception Branch of the Block....but since there is no step defined in the branch nothing happens.....and the Control then passes to the next branch as in a normal flow.....
Since the Exception branch is defined the BPM will not wait/ stop/ error-out if any thing goes wrong in the Sync Send step.....it will continue....this is the normal behavior....an error entry will however be shown...if you want that your process stops if the Sync Send fails then have a Control Step (Action--> Cancel Process) in the Exception Branch
Regards,
Abhishek.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
7 | |
7 | |
6 | |
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.