ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bill McCusker <wmccus...@parasoft.com>
Subject Re: Problem in compensation instances group
Date Tue, 10 Feb 2009 19:01:53 GMT
 From inspecting the bpel process the reason not all scopes are 
compensated when the throw is inside the while loops is because an 
exception is now being thrown from inside a scope intended to be 
compensated. According to section 12.4.3 in the BPEL 2.0 specification a 
compensation handler is only available when a scope completes 
successfully. This is why moving the throw out of the loops results in 
expected compensation since all of scopes now complete successfully.

Bill McCusker

Chris Ma wrote:
> I upload the BPEL  http://www.nabble.com/file/p21928772/instance_group.txt
> program . Thanks a lot..
>
> Chris Ma
>
>
>
> mriou wrote:
>   
>> On Sun, Feb 8, 2009 at 8:05 PM, Chris Ma <cma@ipm.edu.mo> wrote:
>>
>>     
>>> Hi all,
>>>
>>>    I am doing a survey on BPEL's compensation instances group and I found
>>> some strange nature which is not specific in the BPEL specification 2.0,
>>> I
>>> am not sure if it is normal or not in all BPEL server, or anyone has the
>>> practical example to support the strange nature?
>>>
>>> As the following program, a while loop count x from 0 to 5, it contains a
>>> scope, the scope increase X by 1, the compensation of the scope decrease
>>> X
>>> by 1.
>>>
>>> the strange is, if a throw inside the while loop is called(e.g. throw_1),
>>> the last compensation instance is executed. X will finally be 2. on the
>>> other hand, if a throw outside the while loop is called(throw_2), all
>>> compensation instances are invoked and X will finally be 0. It is strange
>>> that the throw_1 can not call all the compenstion instances...Please
>>> comment. Thanks!
>>>
>>>       
>> Interesting. Do you have the BPEL process implementing this? I like
>> pseudo-code but to comment on such a specific behavior, I'd like to see
>> the
>> exact code.
>>
>> Thanks,
>> Matthieu
>>
>>
>>     
>>> X=0
>>> While X < 5
>>>
>>>   { A  ?  C  , F }  where A has activity X= X + 1, C is compensation X=X
>>> -1, F is the fault handler.
>>>
>>>   if x >2 then (throw_1-> compensate)
>>>
>>> loop
>>>
>>> (throw_2 -> compensate)
>>>
>>>
>>> Chris Ma.
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Problem-in-compensation-instances-group-tp21906836p21906836.html
>>> Sent from the Apache Ode User mailing list archive at Nabble.com.
>>>
>>>
>>>       
>>     
>
>   


Mime
View raw message