<!-- | |
~ Licensed to the Apache Software Foundation (ASF) under one | |
~ or more contributor license agreements. See the NOTICE file | |
~ distributed with this work for additional information | |
~ regarding copyright ownership. The ASF licenses this file | |
~ to you under the Apache License, Version 2.0 (the | |
~ "License"); you may not use this file except in compliance | |
~ with the License. You may obtain a copy of the License at | |
~ | |
~ http://www.apache.org/licenses/LICENSE-2.0 | |
~ | |
~ Unless required by applicable law or agreed to in writing, | |
~ software distributed under the License is distributed on an | |
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
~ KIND, either express or implied. See the License for the | |
~ specific language governing permissions and limitations | |
~ under the License. | |
--> | |
<process xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://docs.oasis-open.org/wsbpel/2.0/process/executable ../../../../../../../bpel-schemas/src/main/resources/wsbpel_executable.xsd" | |
xmlns:tns="http://ode/bpel/unit-test/testFaultHandlers" | |
xmlns:wns="http://ode/bpel/unit-test/testFaultHandlers.wsdl" | |
xmlns:prb="http://ode/bpel/unit-test/ProbeService.wsdl" | |
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" | |
name="TestFaultHandlersProcess" | |
targetNamespace="http://ode/bpel/unit-test/testFaultHandlers" | |
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" | |
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" | |
suppressJoinFailure="yes"> | |
<import location="testFaultHandlers.wsdl" | |
namespace="http://ode/bpel/unit-test/testFaultHandlers.wsdl" | |
importType="http://schemas.xmlsoap.org/wsdl/" /> | |
<import location="../ProbeService/probeService.wsdl" | |
namespace="http://ode/bpel/unit-test/ProbeService.wsdl" | |
importType="http://schemas.xmlsoap.org/wsdl/"/> | |
<!-- Unit test fault handlers --> | |
<!-- throw --> | |
<!-- catch --> | |
<!-- catchAll --> | |
<partnerLinks> | |
<partnerLink name="request" partnerLinkType="wns:testFaultHandlersRequest" myRole="testFaultHandlersService"/> | |
<partnerLink name="probe" partnerLinkType="wns:probeRequest" partnerRole="probeService" initializePartnerRole="yes"/> | |
</partnerLinks> | |
<variables> | |
<variable name="request" | |
messageType="wns:requestMessage"/> | |
<variable name="probeInput" | |
messageType="prb:probeMessage"/> | |
<variable name="reply" | |
messageType="wns:replyMessage"/> | |
</variables> | |
<faultHandlers> | |
<catchAll> | |
<sequence> | |
<assign> | |
<copy> | |
<from> | |
<literal><![CDATA[caught fault with catchAll]]></literal> | |
</from> | |
<to variable="probeInput" part="probeName"/> | |
</copy> | |
</assign> | |
<invoke name="allFaultProbe" partnerLink="probe" | |
portType="prb:probeMessagePT" | |
operation="probe" | |
inputVariable="probeInput" | |
outputVariable="probeInput"> | |
</invoke> | |
<!-- copy internal accumulators to the reply message --> | |
<assign name="allFaultAssign"> | |
<copy> | |
<from variable="probeInput" part="probeName"/> | |
<to variable="reply" part="replyID"/> | |
</copy> | |
<copy> | |
<from variable="probeInput" part="probeData"/> | |
<to variable="reply" part="replyText"/> | |
</copy> | |
</assign> | |
<reply name="allFaultReply" partnerLink="request" portType="wns:testFaultHandlersPT" | |
operation="request" variable="reply"> | |
</reply> | |
</sequence> | |
</catchAll> | |
</faultHandlers> | |
<sequence> | |
<receive name="receive1" partnerLink="request" | |
portType="wns:testFaultHandlersPT" | |
operation="request" variable="request" | |
createInstance="yes"> | |
</receive> | |
<!-- Copy input variables to internal accumulators --> | |
<assign name="assign1"> | |
<copy> | |
<from variable="request" part="requestID"/> | |
<to variable="probeInput" part="probeName"/> | |
</copy> | |
<copy> | |
<from variable="request" part="requestText"/> | |
<to variable="probeInput" part="probeData"/> | |
</copy> | |
</assign> | |
<scope name="scopeOne"> | |
<faultHandlers> | |
<catch faultName="tns:testFault"> | |
<sequence> | |
<assign> | |
<copy> | |
<from> | |
<literal><![CDATA[caught testFault]]></literal> | |
</from> | |
<to variable="probeInput" part="probeName"/> | |
</copy> | |
</assign> | |
<invoke name="testFaultProbe" partnerLink="probe" | |
portType="prb:probeMessagePT" | |
operation="probe" | |
inputVariable="probeInput" | |
outputVariable="probeInput"> | |
</invoke> | |
<!-- copy internal accumulators to the reply message --> | |
<assign name="testFaultAssign"> | |
<copy> | |
<from variable="probeInput" part="probeName"/> | |
<to variable="reply" part="replyID"/> | |
</copy> | |
<copy> | |
<from variable="probeInput" part="probeData"/> | |
<to variable="reply" part="replyText"/> | |
</copy> | |
</assign> | |
</sequence> | |
</catch> | |
</faultHandlers> | |
<if> | |
<!-- throws a named fault --> | |
<condition>$request.faultIndicator1 = 'yes'</condition> | |
<sequence> | |
<assign> | |
<copy> | |
<from> | |
<literal><![CDATA[throw testFault]]></literal> | |
</from> | |
<to variable="probeInput" part="probeName"/> | |
</copy> | |
</assign> | |
<invoke name="probe1" partnerLink="probe" | |
portType="prb:probeMessagePT" | |
operation="probe" | |
inputVariable="probeInput" | |
outputVariable="probeInput"> | |
</invoke> | |
<throw faultName="tns:testFault"/> | |
</sequence> | |
<!-- throws an unknown fault --> | |
<elseif> | |
<condition>$request.faultIndicator2 = 'yes'</condition> | |
<sequence> | |
<assign> | |
<copy> | |
<from> | |
<literal><![CDATA[throw unknown fault]]></literal> | |
</from> | |
<to variable="probeInput" part="probeName"/> | |
</copy> | |
</assign> | |
<invoke name="probe1" partnerLink="probe" | |
portType="prb:probeMessagePT" | |
operation="probe" | |
inputVariable="probeInput" | |
outputVariable="probeInput"> | |
</invoke> | |
<throw faultName="tns:unknownFault"/> | |
</sequence> | |
</elseif> | |
</if> | |
</scope> | |
<assign> | |
<copy> | |
<from> | |
<literal><![CDATA[process complete]]></literal> | |
</from> | |
<to variable="probeInput" part="probeName"/> | |
</copy> | |
</assign> | |
<invoke name="probe2" partnerLink="probe" | |
portType="prb:probeMessagePT" | |
operation="probe" | |
inputVariable="probeInput" | |
outputVariable="probeInput"> | |
</invoke> | |
<!-- copy internal accumulators to the reply message --> | |
<assign name="assign2"> | |
<copy> | |
<from variable="probeInput" part="probeName"/> | |
<to variable="reply" part="replyID"/> | |
</copy> | |
<copy> | |
<from variable="probeInput" part="probeData"/> | |
<to variable="reply" part="replyText"/> | |
</copy> | |
</assign> | |
<reply name="reply" partnerLink="request" portType="wns:testFaultHandlersPT" | |
operation="request" variable="reply"> | |
</reply> | |
</sequence> | |
</process> |