ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Will Darby <wda...@cedarpointcom.com>
Subject RE: Synchronous invoke suppressing soap fault
Date Wed, 08 Dec 2010 15:39:45 GMT
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:tvanlessen@gmail.com] 
Sent: Wednesday, December 08, 2010 9:51 AM
To: user@ode.apache.org
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

Mime
View raw message