testfaulthandlers.bpel

来自「bpel执行引擎用来执行bpel业务流程」· BPEL 代码 · 共 235 行

BPEL
235
字号
<!--
	~ 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>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?