ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tammo van Lessen <tvanles...@gmail.com>
Subject Re: Synchronous invoke suppressing soap fault
Date Wed, 08 Dec 2010 14:51:29 GMT
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.


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

View raw message