Apparently not. This is now fixed in svn. -mbs
On 6/5/07, Michael Horwitz <[EMAIL PROTECTED]> wrote:
Does Ode not support the catch clause below an invoke as specified here: http://docs.oasis-open.org/wsbpel/2.0/wsbpel-specification-draft.html#_Toc143402873 ? Mike On 6/5/07, Alex Boisvert <[EMAIL PROTECTED]> wrote: > > Hi Michael, > > According to the BPEL spec, your <bpel:catch> must be placed under the > <bpel:faultHandlers> element. So the real issue here is insufficient > validation to warn you against placing a <bpel:catch> directly within a > scope... > > alex > > > On 6/5/07, Michael Horwitz <[EMAIL PROTECTED]> wrote: > > > > Hi, > > > > I am trying to write a process to deploy on Ode 1.0 running inside > > ServiceMix. All was going fine until I tried to add a catch clause to an > > invoke in the process. The process compiles fine, just the catch clause > > gets > > ignored and the fault is thrown out of the service. If I copy and paste > > the > > catch clause to the <faultHandlers> section on the process, then all > works > > as expected. > > > > First the snippet from the wsdl service declaring the fault: > > > > <wsdl:portType name="marketbus"> > > <wsdl:operation name="getRecord"> > > <wsdl:input message="tns:getRecordRequest"/> > > <wsdl:output message="tns:getRecordResponse"/> > > <wsdl:fault name="noRecordFault" > > message="tns:noSuchRecordFault"></wsdl:fault> > > </wsdl:operation> > > </wsdl:portType> > > > > Now the snippet from the bpel service: > > > > <bpws:invoke inputVariable="recordRequest" name="invokeMarketBus" > > operation="getRecord" outputVariable="recordResponse" > > partnerLink="marketbusClient" portType="ns1:marketbus"> > > <bpws:catch faultName="ns1:noRecordFault"> > > <bpws:sequence name="HiddenSequence"> > > <bpws:assign name="buildFaultMessage" validate="no"> > > <bpws:copy> > > <bpws:from> > > <bpws:literal>No such message.</bpws:literal> > > </bpws:from> > > <bpws:to>$echoRequest.payload</bpws:to> > > </bpws:copy> > > </bpws:assign> > > <bpws:invoke inputVariable="echoRequest" name="invokeEchoService" > > operation="echoMessage" partnerLink="echoClient" > > portType="ns1:EchoPortType"/> > > </bpws:sequence> > > </bpws:catch> > > </bpws:invoke> > > > > And the debug output from the Ode engine (snippet): > > > > DEBUG - BpelProcess - InvokeResponse event for iid 20 > > DEBUG - BpelRuntimeContextImpl - Invoking message response for > > mexid > > 4611686018427387948 and channel 20 > > DEBUG - JacobVPU - injecting > > BpelRuntimeContextImpl$4(...) > > DEBUG - BpelRuntimeContextImpl - Triggering response > > DEBUG - SCOPE - ({OScope 'invokeMarketBus' > > id=50},TerminationChannel#14,ParentScopeChannel#16): has > > a fault handler for {http://abnamro.com/sc}noRecordFault: {OCatch > > faultName=null, faultVariable=null} > > DEBUG - SCOPE - ({OCatch faultName=null, > > faultVariable=null},TerminationChannel:FH#21,ParentScopeCha > > nnel:FH#22): has no fault handler for { > http://abnamro.com/sc}noRecordFault > > ; > > scope will propagate FAULT! > > DEBUG - SCOPE - ({OScope > > '__PROCESS_SCOPE:algotf-bpe' > > id=3},TerminationChannel#1,ParentScopeChannel# > > 2): has no fault handler for {http://abnamro.com/sc}noRecordFault; scope > > will propagate FAULT! > > DEBUG - BpelProcess - ProcessImpl completed with > fault > > '{ > > http://abnamro.com/sc}noRecordFault' > > DEBUG - ProcessDaoImpl - Removing completed process > > instance > > 20 from in-memory store. > > DEBUG - OdeService - Consuming MEX tracker > > ID:gbws-00065343-3167-1181051426187-7:20 > > WARN - OdeService - Ignoring unknown async reply: > > {MyRoleMex#4611686018427387947 [Client ID:gbws-0006534 > > 3-3167-1181051426187-7:20] calling { > > http://abnamro.com/sc/algotf}WorkflowService.processNewRecord(...)} > > DEBUG - QuartzSchedulerImpl - Commiting transaction. > > > > Exactly the same catch statement (copied and pasted) works as expected > if > > placed in the <faultHandlers> section of the process. > > > > I am reasonably new to BPEL, so may have missed something? > > > > Thanks > > > > Mike Horwitz > > >
