⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testcompensationhandlers.bpel

📁 bpel执行引擎用来执行bpel业务流程
💻 BPEL
字号:
<!--	~ 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/testCompensationHandlers" xmlns:prb="http://ode/bpel/unit-test/ProbeService.wsdl" xmlns:wns="http://ode/bpel/unit-test/testCompensationHandlers.wsdl" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" name="TestCompensationHandlersProcess" targetNamespace="http://ode/bpel/unit-test/testCompensationHandlers" 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="testCompensationHandlers.wsdl"		namespace="http://ode/bpel/unit-test/testCompensationHandlers.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 compensation handlers	-->
<!--	compensate 						-->
<!--	compensationHandler 			-->
<!--	scope 							-->

  <partnerLinks>
  	<partnerLink name="request" partnerLinkType="wns:testCompensationHandlersRequest" myRole="testCompensationHandlersService"/>
  	<partnerLink name="probe" partnerLinkType="wns:probeRequest" partnerRole="probeService" initializePartnerRole="yes"/>
  </partnerLinks>

  <variables>
    <variable name="probeInput" 
               messageType="prb:probeMessage"/>
    <variable name="reply" 
               messageType="wns:replyMessage"/>
  </variables>

  <sequence>

	<scope name="ScopeOne">

  	<variables>
    		<variable name="request" 
               messageType="wns:requestMessage"/>
  	</variables>

  	<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>
			</sequence>
		</catch>

		<catchAll>
			<compensateScope target="ScopeTwo"/>		</catchAll>
		

  	</faultHandlers>

	 <sequence>
	  <scope name="ScopeTwo">

	  <compensationHandler>
	  		<sequence>
	  			   	  <assign>
	      				<copy>	      					<from>	      						<literal><![CDATA[fire compensation handler]]></literal>	      					</from>
	        				<to variable="probeInput" part="probeName"/>
	      				</copy>
	  				  </assign> 
	    				<invoke name="compProbe" partnerLink="probe" 
	            			portType="prb:probeMessagePT" 
	            			operation="probe"
	            			inputVariable="probeInput"  
	            			outputVariable="probeInput">
	    				</invoke>
    

    	   </sequence>
	  </compensationHandler>

	  <sequence>	    
	    <receive name="receive1" partnerLink="request"
	    	portType="wns:testCompensationHandlersPT" 
	             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>   
	

	  </sequence>
      </scope>

		<!-- Note: the probeInput variable is updated after scope one has closed -->
		<!-- therefore it should not show up in the log message for the compensation probe -->
	  	<assign>
	    	<copy>	    		<from>	    			<literal><![CDATA[begin fault test]]></literal>	    		</from>
	    		<to variable="probeInput" part="probeName"/>
	    	</copy>
	  	</assign> 

	    <invoke name="probe2" partnerLink="probe"
	            portType="prb:probeMessagePT" 
	            operation="probe"
	            inputVariable="probeInput"  
	            outputVariable="probeInput">
	    </invoke>

	  <if>	  	<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>
	  	<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>


	</sequence>
	</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:testCompensationHandlersPT" 
	           operation="request" variable="reply"> 
	  </reply>

  
  </sequence>
</process>

⌨️ 快捷键说明

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