on 07-21-2009 8:02 PM
Hi,
I have a BPM which makes 2 succesive calls to web service (synchronous).
If there is a problem in the calls to any of the 2 web services, I want to raise an error and stop all other calls to this BPM to go through.
Right now, if I make 1 call and the BPM is in error. When I make the second call, it still goes and tries to execute.
The problem is , the sequence of calls must be maintained so , if the first call fails , the second should wait until the first is resolved.
Is this possible ?
Thanks.
Hey
Can't you set quality of service as EOIO on sender side and change that to BE in BPM (to make call synchronous)
Thanks
Aamir
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Guys,
conclusion to all of this... is ...
Its really possible to do it in BPM but its a little tricky.
Here's a guide to the solution in case someone needs it.
You have a fork.
1 branch does an infinite loop of receiving messages and adds them to a multiline container element
the other branch processes the elements in the multiline container element.
The steps of the second branch must be set in a block which has "for each" set. This way the processing of each request is sequencial.
You must also put another loop arround all of it so you don't loose any messages.
An image would be worth a 1000 words here but I guess this would be a good start for those who need it.
Thanks again.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
If there is a problem in the calls to any of the 2 web services, I want to raise an error and stop all other calls to this BPM
to go through.
Can do this using the Sync Step in a block and then define an Exception Branch and then in this exception branch use a Control Step (Action-> Throw Alert).....then have another Control Step (Action> Cancel Process)....both Control Steps in the Exception Branch....
Now for the catch:
The problem is , the sequence of calls must be maintained so , if the first call fails , the second should wait until the first is resolved.
As Michal said this is not possible.....you cannot (rather no one can) design the BPM to wait for resolution of Step1 and then again excute the Step1 and then execute Step2.....this is the functionality of the BPM.....
Regards,
Abhishek.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hi,
>>>Is this possible ?
in short terms - no, not with a BPM
but as you know everything is possible just not in the easy way
you could do a SOAP call to XI with EOIO and from there to java proxy
which would make 2 WS calls
then the next SOAP call to XI would wait until the first one would get completed
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 Michal,
I don't understand the advantage to use the proxy...
Right now, I have an ECC system call BPM with EOIO ... the BPM does the 2 calls.
I would expect the fact that I set it with EOIO to block the next calls if one of the previous calls failed but this is not what happens... why is this ? Isn't this what EOIO means ? If it executes the second call even though the first failed... there is no more order ...
Thanks.
Its really not that simple...
but what I'm just trying to understand is what does the EOIO do if it doesn't stop next calls when a previous one fails.
Ok, it maintains receive and start sequence for the BPM but once your in the BPM... what I understand is ... the sequence is not really maintained.
I guess this also means that if 2 calls to the BPM are made one after the other . BPM for call 1 will start before BPM for call 2 but after that , the steps of BPM 2 could happen before BPM 1... this is not really strong . Is there no way to actually sequence the calls.
User | Count |
---|---|
95 | |
11 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.