blob: bc231427ae3a1d0b1e770cbcffccfa1c86163898 [file] [log] [blame]
<!--
~ 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>