Thanks for the reply.

Just to clarify my understanding, I'd like to explain it a different way.

Before I added the <failureHandler> extension, when my synchronous <invoke> 
operation received a standard SOAP fault, it would be suppressed, meaning that 
my <faultHandlers><catchAll> would not be invoked. Since this was a standard 
SOAP fault, and not a failure condition (as I understand it), I expected the 
<catchAll> handler to be invoked. 
Could it be that the fault reported was not specified in the WSDL for the 
operation?

Thanks again
- Will


-----Original Message-----
From: Tammo van Lessen [mailto:[email protected]] 
Sent: Wednesday, December 08, 2010 9:51 AM
To: [email protected]
Subject: Re: Synchronous invoke suppressing soap fault

Hi Will,

ODE distinguishes between faults and failures. Faults are typically
faults with a business meaning, declared and/or expected exceptions etc.
and are SOAP faults during runtime. Failures are things unexpected
things that happen on a transport/runtime level, like timeouts, network
fragmentation etc. When such a failure occurs, the connected activity
goes into a failed stated. This means the process instance is suspended
until the activity is recovered. This can be done via the Process
Management API (retry, cancel, fault). The failureHandling extension can
be used to avoid this by setting a recovery default. In your example,
you're translating a failure into a fault. This fault can then be
handled by BPEL's fault handler. So if I understood your question
correctly, this is the intended behavior.

HTH,
  Tammo

On 08.12.2010 15:21, Will Darby wrote:
> Hello,
> 
> I ran into issues detecting faults raised during synchronous invoke 
> operations.
> 
> Specifically,  during the BPEL script below if I get a
> 
> <soapenv:Fault  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
> 
> It is suppressed by the invoke operation, which eventually times out. I can 
> work around this by adding:
> <ext:failureHandling xmlns:ext="http://ode.apache.org/activityRecovery";>
>    <ext:faultOnFailure>true</ext:faultOnFailure>
> </ext:failureHandling>
> 
> But the documentation indicates that this is not required. I looked through 
> Jira, but didn't see this issue reported. Is this expected behavior or should 
> I write up the issue?
> 
> <bpel:faultHandlers>
>   <bpel:catch faultName="sfWsdl:CreateException"
>                          faultVariable="createEx" 
> faultMessageType="sfWsdl:ExceptionMsg">
>     <bpel:sequence>
>       ...
>     </bpel:sequence>
>   </bpel:catch>
>  <bpel:catchAll>
>      ...
>    </bpel:catchAll>
> </bpel:faultHandlers>
> 
> <bpel:sequence>
>   <bpel:invoke name="sendFusionCreateRqst"
>                        partnerLink="SafariFusionOssLink"
>                        portType="sfWsdl:FusionOssPort"
>                        operation="create"
>                        inputVariable="sndCreateRqst"
>                        outputVariable="sndEditResp"/>
> </bpel:sequence>
> 
> Thanks
> - Will Darby
> 
> 

-- 
Tammo van Lessen - http://www.taval.de

Reply via email to