| <!-- |
| ~ 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 name="HelloXQueryWorld" |
| targetNamespace="http://ode/bpel/unit-test" |
| xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable" |
| xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" |
| xmlns:tns="http://ode/bpel/unit-test" |
| xmlns:xsd="http://www.w3.org/2001/XMLSchema" |
| xmlns:types="http://ode/bpel/types" |
| xmlns:test="http://ode/bpel/unit-test.wsdl" |
| xmlns:wsa="http://www.w3.org/2005/08/addressing" |
| xmlns:ode="http://www.apache.org/ode/type/extension" |
| queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" |
| expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"> |
| |
| <import location="HelloXQueryWorld.wsdl" |
| namespace="http://ode/bpel/unit-test.wsdl" |
| importType="http://schemas.xmlsoap.org/wsdl/"/> |
| |
| <partnerLinks> |
| <partnerLink name="HelloXQueryPartnerLink" |
| partnerLinkType="test:HelloXQueryPartnerLinkType" |
| myRole="me" /> |
| </partnerLinks> |
| |
| <variables> |
| <variable name="myVar" messageType="test:HelloXQueryMessage"/> |
| <variable name="tab" element="xsd:any"/> |
| <variable name="tabel" type="xsd:string"/> |
| <variable name="otherVar" type="xsd:string"/> |
| <variable name="tempVar" element="test:content"/> |
| <variable name="stringVar" type="xsd:string"/> |
| <variable name="boolVar" type="xsd:boolean"/> |
| <variable name="i" type="xsd:int"/> |
| <variable name="myVar2" messageType="test:HelloXQueryMessage"/> |
| <variable name="date1" type="xsd:date"/> |
| <variable name="dateTime1" type="xsd:dateTime"/> |
| </variables> |
| |
| <sequence> |
| <ext:failureHandling xmlns:ext="http://ode.apache.org/activityRecovery"> |
| <ext:faultOnFailure>true</ext:faultOnFailure> |
| <ext:retryFor>5</ext:retryFor> |
| <ext:retryDelay>60</ext:retryDelay> |
| </ext:failureHandling> |
| <receive |
| name="start" |
| partnerLink="HelloXQueryPartnerLink" |
| portType="test:HelloXQueryPortType" |
| operation="HelloXQuery" |
| variable="myVar" |
| createInstance="yes"/> |
| |
| <bpws:assign> |
| <copy> |
| <from><literal><tns:tab><tns:a>1</tns:a><tns:a>2</tns:a></tns:tab></literal></from> |
| <to variable="tab"/> |
| </copy> |
| <copy> |
| <from>$tab/tns:a[2]</from> |
| <to variable="tabel"/> |
| </copy> |
| </bpws:assign> |
| |
| <if> |
| <condition>$tabel != '2'</condition> |
| <throw faultName="error"/> |
| </if> |
| |
| <bpws:assign> |
| <copy> |
| <from>''</from> |
| <to variable="date1"/> |
| </copy> |
| </bpws:assign> |
| <if> |
| <condition>not(empty($date1))</condition> |
| <throw faultName="error"/> |
| </if> |
| |
| <bpws:assign> |
| <copy> |
| <from>'2009-01-01'</from> |
| <to variable="date1"/> |
| </copy> |
| <copy> |
| <from>'2009-01-02T12:32:32'</from> |
| <to variable="dateTime1"/> |
| </copy> |
| <copy> |
| <bpws:from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"> |
| <![CDATA[ |
| <test:test1 xmlns:test="http://test.org"> |
| <test:test2>{ if (string-length(xsd:string($date1)) != 0) then $date1 else $dateTime1 }</test:test2> |
| </test:test1> |
| ]]> |
| </bpws:from> |
| <to variable="myVar2" part="TestPart"/> |
| </copy> |
| </bpws:assign> |
| <if> |
| <condition>not($myVar2.TestPart/*/text() eq '2009-01-01')</condition> |
| <throw faultName="error"/> |
| </if> |
| |
| <assign name="assign1"> |
| <copy> |
| <from variable="myVar" part="TestPart"/> |
| <to variable="otherVar"/> |
| </copy> |
| <copy> |
| <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"><![CDATA[<test:content>Hello</test:content>]]></from> |
| <to variable="tempVar"/> |
| </copy> |
| <copy> |
| <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"><![CDATA[ |
| <sref:service-ref xmlns:sref="http://docs.oasis-open.org/wsbpel/2.0/serviceref"> |
| <wsa:EndpointReference xmlns:pp="http://some-namespace" xmlns:wsa="http://www.w3.org/2005/08/addressing"> |
| <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address> |
| <wsa:Metadata> |
| <Service EndpointName="MyEndpoint">pp:SomeProxy</Service> |
| </wsa:Metadata> |
| </wsa:EndpointReference> |
| </sref:service-ref> |
| ]]> |
| </from> |
| <to variable="tempVar"/> |
| </copy> |
| <copy> |
| <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"> |
| typeswitch ($myVar.TestPart) |
| case $a as xs:string return "test" |
| default return "default" |
| </from> |
| <to variable="otherVar"/> |
| </copy> |
| <copy> |
| <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"><![CDATA[ |
| typeswitch ($myVar.TestPart) |
| case $a as text() return <test:content/> |
| default return <test:content/> |
| ]]> |
| </from> |
| <to variable="otherVar"/> |
| </copy> |
| <!-- this copy will fail since saxon is not schema-aware |
| <copy> |
| <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"> |
| typeswitch ($myVar.TestPart) |
| case $a as element(*, test:content) return "test" |
| default return "default" |
| </from> |
| <to variable="otherVar"/> |
| </copy> |
| --> |
| <copy> |
| <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"> |
| for $loopOnce in (1) |
| return |
| concat(bpws:getVariableProperty("myVar", "test:content"), "XQuery World") |
| </from> |
| <to variable="myVar" part="TestPart"/> |
| </copy> |
| </assign> |
| <if> |
| <condition>not($tempVar/wsa:EndpointReference/wsa:Metadata/Service/@EndpointName eq "MyEndpoint")</condition> |
| <throw faultName="selectionFailure"/> |
| </if> |
| <assign> |
| <copy> |
| <from>0</from> |
| <to variable="i"/> |
| </copy> |
| </assign> |
| <while> |
| <condition>$i < 2</condition> |
| <sequence> |
| <if> |
| <condition>$i = 0</condition> |
| <assign> |
| <copy> |
| <from>"false"</from> |
| <to variable="stringVar"/> |
| </copy> |
| <copy> |
| <from>false()</from> |
| <to variable="boolVar"/> |
| </copy> |
| </assign> |
| <else> |
| <assign> |
| <copy> |
| <from>"true"</from> |
| <to variable="stringVar"/> |
| </copy> |
| <copy> |
| <from>true()</from> |
| <to variable="boolVar"/> |
| </copy> |
| </assign> |
| </else> |
| </if> |
| <!-- |
| <assign> |
| <copy> |
| <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"> |
| if (boolean($stringVar)) then "trueValue" else "falseValue" |
| </from> |
| <to variable="otherVar"/> |
| </copy> |
| </assign> |
| <if> |
| <condition>not($otherVar = concat($stringVar, "Value"))</condition> |
| <throw faultName="selectionFailure"/> |
| </if> |
| --> |
| |
| <assign> |
| <copy> |
| <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"> |
| if ($boolVar) then "trueValue" else "falseValue" |
| </from> |
| <to variable="otherVar"/> |
| </copy> |
| </assign> |
| <if> |
| <condition>not($otherVar = concat($stringVar, "Value"))</condition> |
| <throw faultName="selectionFailure"/> |
| </if> |
| |
| <!-- validate that you can invoke XSLT stylesheets from withing XQuery --> |
| <if> |
| <condition expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0">not(string-length(string(bpws:doXslTransform('HelloXQueryWorld.xsl', $myVar.TestPart))) > 0)</condition> |
| <throw faultName="selectionFailure"/> |
| </if> |
| |
| <assign> |
| <copy> |
| <from>$i + 1</from> |
| <to variable="i"/> |
| </copy> |
| </assign> |
| </sequence> |
| </while> |
| <scope> |
| <faultHandlers> |
| <catch faultName="subLanguageExecutionFault"> |
| <empty/> |
| </catch> |
| </faultHandlers> |
| <assign> |
| <copy> |
| <from variable="myVar" part="TestPart"> |
| <query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0"> |
| let $j := 10 div 0 |
| return concat("abc", $j) |
| </query> |
| </from> |
| <to variable="myVar" part="TestPart"/> |
| </copy> |
| </assign> |
| </scope> |
| <scope> |
| <variables> |
| <variable name="nodeVar" type="xsd:anyType"/> |
| <variable name="textVar" type="xsd:string"/> |
| </variables> |
| <sequence> |
| <assign> |
| <copy> |
| <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"> |
| <![CDATA[ '<a><b>some-b-text</b></a>' ]]> |
| </from> |
| <to>$textVar</to> |
| </copy> |
| <copy> |
| <from xmlns:saxon="http://saxon.sf.net/" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0">saxon:parse(xsd:string($textVar))</from> |
| <to variable="nodeVar"/> |
| </copy> |
| </assign> |
| <if> |
| <condition>$nodeVar/b/text() != 'some-b-text'</condition> |
| <throw faultName="error"/> |
| </if> |
| </sequence> |
| </scope> |
| <reply name="end" |
| partnerLink="HelloXQueryPartnerLink" |
| portType="test:HelloXQueryPortType" |
| operation="HelloXQuery" |
| variable="myVar"/> |
| </sequence> |
| |
| </process> |