Hi,

please see http://ode.apache.org/faq.html#FAQ-LanguageRelatedBPELQuestions and look for "My process fails with a selectionFailure; What can I do?". A variable must be initialized prior to accessing a child node directly via XPath. So adding a <copy><from><literal><testXsd:param><testWsdl:zahl/><testXsd:param><literal><from><to>$DataTOin.in</to></copy>
should actually do the job.

Best,
  Tammo

Christoph M. Pflügler wrote:
Hi there,

I'm actually facing problems when using XPath expressions in my BPEL process. I always get the fault message below. I was trying around for quite a while now and I am not able to solve the problem. I was able to access the message parts, but nothing below them (eg. DataTOin.in worked, while $DataTOin.in/param did not). The example is oriented at chapter 8.2 (Usage of Query and Expression Languages) of the BPEL standard (statusMessage, statusContainer etc.). Is there anybody who knows how to solve this kind of problem?

Any help would be greatly appreciated!!

Regards,
Christoph


#######################################
fault message
#######################################

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
 <soapenv:Body>
   <soapenv:Fault>
     <faultcode>soapenv:Server</faultcode>
<faultstring xmlns:axis2ns7="http://docs.oasis-open.org/wsbpel/2.0/process/executable";>axis2ns7:selectionFailure</faultstring>
     <detail/>
   </soapenv:Fault>
 </soapenv:Body>
</soapenv:Envelope>


#######################################
relevant snippet of BPEL process
#######################################

<assign name="assign1">
         <copy>
               <!-- I tried this without the namespaces, too -->
<from xmlns:testXsd="http://ifs/xsd";>$DataTOin.in/testXsd:param/testWsdl:zahl</from> <to xmlns:testXsd="http://ifs/xsd";>$DataTOout.out/testXsd:param/testWsdl:zahl</to>
         </copy>
   </assign>

##########################################
The relevant snippet from ode.log is:
##########################################


2008-05-30 15:17:57,171 : DEBUG - GeronimoLog.debug(66) | Process store event: {ProcessStoreEvent#UNDEPLOYED:{http://initial/testbpel}xpathTest-141} 2008-05-30 15:17:57,171 : DEBUG - GeronimoLog.debug(66) | Deactivating process {http://initial/testbpel}xpathTest-141 2008-05-30 15:17:57,171 : DEBUG - GeronimoLog.debug(66) | Destroying service {http://ifs}bpelService port testPort 2008-05-30 15:17:57,171 : INFO - GeronimoLog.info(79) | Unregistered process {http://initial/testbpel}xpathTest-141. 2008-05-30 15:17:57,218 : DEBUG - GeronimoLog.debug(66) | Process store event: {ProcessStoreEvent#DEPLOYED:{http://initial/testbpel}xpathTest-142} 2008-05-30 15:17:57,234 : DEBUG - GeronimoLog.debug(66) | Ignoring store event: {ProcessStoreEvent#DEPLOYED:{http://initial/testbpel}xpathTest-142} 2008-05-30 15:17:57,234 : DEBUG - GeronimoLog.debug(66) | Process store event: {ProcessStoreEvent#ACTVIATED:{http://initial/testbpel}xpathTest-142} 2008-05-30 15:17:57,234 : DEBUG - GeronimoLog.debug(66) | register: {http://initial/testbpel}xpathTest-142 2008-05-30 15:17:57,234 : DEBUG - GeronimoLog.debug(66) | Registering process {http://initial/testbpel}xpathTest-142 with server. 2008-05-30 15:17:57,234 : DEBUG - GeronimoLog.debug(66) | Register process: serviceId={http://ifs}bpelService:testPort, process=BpelProcess[{http://initial/testbpel}xpathTest-142] 2008-05-30 15:17:57,234 : DEBUG - GeronimoLog.debug(66) | Activating {http://initial/testbpel}xpathTest-142 2008-05-30 15:17:57,234 : DEBUG - GeronimoLog.debug(66) | Destroying service {http://ifs}bpelService port testPort 2008-05-30 15:17:57,234 : DEBUG - GeronimoLog.debug(66) | Couldn't find service {http://ifs}bpelService port testPort to destroy. 2008-05-30 15:17:57,234 : DEBUG - GeronimoLog.debug(66) | Create AxisService: service={http://ifs}bpelService port=testPort WSDL=bpelTest.wsdl BPEL=bpelTest.bpel 2008-05-30 15:17:57,250 : DEBUG - GeronimoLog.debug(66) | Get import: import=dto.xsd parent=file:/C:/Programme/apache-tomcat-6.0.16/webapps/ode/WEB-INF/processes/xpathTester/bpelTest.wsdl 2008-05-30 15:17:57,250 : DEBUG - GeronimoLog.debug(66) | resolveEntity: targetNamespace=http://ifs/xsd schemaLocation=dto.xsd baseUri=file:/C:/Programme/apache-tomcat-6.0.16/webapps/ode/WEB-INF/processes/xpathTester/bpelTest.wsdl 2008-05-30 15:17:57,250 : DEBUG - GeronimoLog.debug(66) | Looking for Axis2 service configuration file: file:/C:/Programme/apache-tomcat-6.0.16/webapps/ode/WEB-INF/processes/xpathTester/bpelService.axis2 2008-05-30 15:17:57,250 : DEBUG - GeronimoLog.debug(66) | Axis2 service configuration not found: file:/C:/Programme/apache-tomcat-6.0.16/webapps/ode/WEB-INF/processes/xpathTester/bpelService.axis2 2008-05-30 15:17:57,250 : DEBUG - GeronimoLog.debug(66) | Setting service with empty namespace replication 2008-05-30 15:17:57,250 : DEBUG - GeronimoLog.debug(66) | Created Axis2 service {http://ifs}bpelService 2008-05-30 15:17:57,250 : DEBUG - GeronimoLog.debug(66) | Activated {http://initial/testbpel}xpathTest-142 myrole testing: EPR is [EMAIL PROTECTED] 2008-05-30 15:17:57,265 : DEBUG - GeronimoLog.debug(66) | Activated {http://initial/testbpel}xpathTest-142 2008-05-30 15:17:57,265 : DEBUG - GeronimoLog.debug(66) | Rehydrating process {http://initial/testbpel}xpathTest-142 2008-05-30 15:17:57,296 : DEBUG - GeronimoLog.debug(66) | Creating process DAO for {http://initial/testbpel}xpathTest-142 (guid=hqejbhcnphr3bc6es3hv5a) 2008-05-30 15:17:57,296 : INFO - GeronimoLog.info(79) | Registered process {http://initial/testbpel}xpathTest-142. 2008-05-30 15:17:57,296 : INFO - GeronimoLog.info(79) | Deployment of artifact xpathTester successful: [{http://initial/testbpel}xpathTest-142] 2008-05-30 15:18:24,718 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-120; rescheduling job hqejbhcnphr3bc6es3hv4r for 30.05.08 15:19 2008-05-30 15:18:24,828 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-113; rescheduling job hqejbhcnphr3bc6es3hv4s for 30.05.08 15:19 2008-05-30 15:18:24,875 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-104; rescheduling job hqejbhcnphr3bc6es3hv4t for 30.05.08 15:19 2008-05-30 15:18:24,890 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-118; rescheduling job hqejbhcnphr3bc6es3hv4u for 30.05.08 15:19 2008-05-30 15:18:25,000 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-104; rescheduling job hqejbhcnphr3bc6es3hv4w for 30.05.08 15:19 2008-05-30 15:18:25,000 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-115; rescheduling job hqejbhcnphr3bc6es3hv4v for 30.05.08 15:19 2008-05-30 15:18:25,000 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-115; rescheduling job hqejbhcnphr3bc6es3hv4x for 30.05.08 15:19 2008-05-30 15:18:25,046 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-82; rescheduling job hqejbhcnphr3bc6es3hv50 for 30.05.08 15:19 2008-05-30 15:18:25,093 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-106; rescheduling job hqejbhcnphr3bc6es3hv52 for 30.05.08 15:19 2008-05-30 15:18:25,093 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-80; rescheduling job hqejbhcnphr3bc6es3hv51 for 30.05.08 15:19 2008-05-30 15:18:25,093 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-118; rescheduling job hqejbhcnphr3bc6es3hv53 for 30.05.08 15:19 2008-05-30 15:18:25,140 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-108; rescheduling job hqejbhcnphr3bc6es3hv54 for 30.05.08 15:19 2008-05-30 15:18:25,156 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-118; rescheduling job hqejbhcnphr3bc6es3hv56 for 30.05.08 15:19 2008-05-30 15:18:25,156 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-122; rescheduling job hqejbhcnphr3bc6es3hv55 for 30.05.08 15:19 2008-05-30 15:18:25,187 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-115; rescheduling job hqejbhcnphr3bc6es3hv57 for 30.05.08 15:19 2008-05-30 15:18:25,187 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-115; rescheduling job hqejbhcnphr3bc6es3hv59 for 30.05.08 15:19 2008-05-30 15:18:25,187 : INFO - GeronimoLog.info(79) | Received a scheduled job event for inactive process {orchestration:test:party2:bpel}party2-124; rescheduling job hqejbhcnphr3bc6es3hv58 for 30.05.08 15:19 2008-05-30 15:18:57,015 : DEBUG - GeronimoLog.debug(66) | The system is checking for the operation using the following WSAAction: urn:testIt 2008-05-30 15:18:57,015 : DEBUG - GeronimoLog.debug(66) | Checking for Operation using SOAP message body's first child's local name : doIt 2008-05-30 15:18:57,015 : DEBUG - GeronimoLog.debug(66) | Received request message for xpath.{http://ifs}testIt 2008-05-30 15:18:57,015 : DEBUG - GeronimoLog.debug(66) | Starting transaction. 2008-05-30 15:18:57,015 : DEBUG - GeronimoLog.debug(66) | Routed: svcQname {http://ifs}bpelService --> BpelProcess[{http://initial/testbpel}xpathTest-142] 2008-05-30 15:18:57,015 : DEBUG - GeronimoLog.debug(66) | ODE routed to operation Operation: name=testIt
style=REQUEST_RESPONSE,1
Input: name=null
Message: name={http://ifs}testItMsgIN
Part: name=in
elementName={http://ifs}doIt
Output: name=null
Message: name={http://ifs}testItMsgOUT
Part: name=out
elementName={http://ifs}doItResponse from service {http://ifs}bpelService
2008-05-30 15:18:57,031 : DEBUG - GeronimoLog.debug(66) | Invoking ODE using MEX {MyRoleMex#hqejbhcnphr3bc6es3hv5t [Client hqejbhcnphr3bc6es3hv5s] calling {http://ifs}bpelService.testIt(...)} 2008-05-30 15:18:57,031 : DEBUG - GeronimoLog.debug(66) | Message content: <?xml version="1.0" encoding="UTF-8"?> <message><in><doIt xmlns="http://ifs"; xmlns:ns2="http://ifs"; xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
           <param>
<s1 xmlns="http://ifs/xsd"; xmlns:ns1="http://ifs/xsd";>Hallo, Hallo!!</s1> <zahl xmlns="http://ifs/xsd"; xmlns:ns1="http://ifs/xsd";>200</zahl>
           </param>
        </doIt></in></message>
2008-05-30 15:18:57,031 : DEBUG - GeronimoLog.debug(66) | Routed: svcQname {http://ifs}bpelService --> BpelProcess[{http://initial/testbpel}xpathTest-142] 2008-05-30 15:18:57,031 : DEBUG - GeronimoLog.debug(66) | invoke() EPR= null ==> BpelProcess[{http://initial/testbpel}xpathTest-142] 2008-05-30 15:18:57,031 : DEBUG - GeronimoLog.debug(66) | Commiting ODE MEX {MyRoleMex#hqejbhcnphr3bc6es3hv5t [Client hqejbhcnphr3bc6es3hv5s] calling {http://ifs}bpelService.testIt(...)} 2008-05-30 15:18:57,031 : DEBUG - GeronimoLog.debug(66) | Commiting transaction. 2008-05-30 15:18:57,031 : DEBUG - GeronimoLog.debug(66) | >> handleWorkEvent(jobData={mexid=hqejbhcnphr3bc6es3hv5t, pid={http://initial/testbpel}xpathTest-142, type=INVOKE_INTERNAL}) 2008-05-30 15:18:57,031 : DEBUG - GeronimoLog.debug(66) | InvokeInternal event for mexid hqejbhcnphr3bc6es3hv5t 2008-05-30 15:18:57,062 : DEBUG - GeronimoLog.debug(66) | GET MEX property org.apache.ode.bpel.myRoleSessionId = null 2008-05-30 15:18:57,062 : DEBUG - GeronimoLog.debug(66) | GET MEX property org.apache.ode.bpel.myRoleSessionId = null 2008-05-30 15:18:57,062 : DEBUG - GeronimoLog.debug(66) | GET MEX property org.apache.ode.bpel.partnerRoleSessionId = null 2008-05-30 15:18:57,062 : DEBUG - GeronimoLog.debug(66) | INPUTMSG: 12.testIt: MSG RCVD keys=[] mySessionId=null partnerSessionId=null 2008-05-30 15:18:57,062 : DEBUG - GeronimoLog.debug(66) | INPUTMSG: 12.testIt: routing failed, CREATING NEW INSTANCE 2008-05-30 15:18:57,062 : DEBUG - GeronimoLog.debug(66) | BpelRuntimeContextImpl created for instance 12007. INDEXED STATE={} 2008-05-30 15:18:57,078 : DEBUG - GeronimoLog.debug(66) | SELECT: PickResponseChannel#9: USING CORRELATOR 12.testIt 2008-05-30 15:18:57,078 : DEBUG - GeronimoLog.debug(66) | SELECT: PickResponseChannel#9: CHECKING for NEW INSTANCE match 2008-05-30 15:18:57,078 : DEBUG - GeronimoLog.debug(66) | INPUTMSGMATCH: Changing process instance state from ready to active 2008-05-30 15:18:57,078 : DEBUG - GeronimoLog.debug(66) | SELECT: PickResponseChannel#9: FOUND match for NEW instance mexRef={MyRoleMex#hqejbhcnphr3bc6es3hv5t [Client hqejbhcnphr3bc6es3hv5s] calling {http://ifs}bpelService.testIt(...)} 2008-05-30 15:18:57,093 : ERROR - GeronimoLog.error(104) | Assignment Fault: {http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=27,faultExplanation=R-Value expression "{OXPath10Expression $DataTOin.in/testXsd:param/testWsdl:zahl}" did not select any nodes. 2008-05-30 15:18:57,093 : DEBUG - GeronimoLog.debug(66) | ProcessImpl completed with fault '{http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure' 2008-05-30 15:18:57,093 : DEBUG - GeronimoLog.debug(66) | Processing an async reply from service {http://ifs}bpelService 2008-05-30 15:18:57,171 : DEBUG - GeronimoLog.debug(66) | Received myrole mex response callback 2008-05-30 15:18:57,171 : DEBUG - GeronimoLog.debug(66) | Handling response for MEX {MyRoleMex#hqejbhcnphr3bc6es3hv5t [Client hqejbhcnphr3bc6es3hv5s] calling {http://ifs}bpelService.testIt(...)} 2008-05-30 15:18:57,171 : DEBUG - GeronimoLog.debug(66) | Starting transaction. 2008-05-30 15:18:57,218 : DEBUG - GeronimoLog.debug(66) | Fault response message: {http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure 2008-05-30 15:18:57,218 : DEBUG - GeronimoLog.debug(66) | Returning fault: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring xmlns:axis2ns7="http://docs.oasis-open.org/wsbpel/2.0/process/executable";>axis2ns7:selectionFailure</faultstring><detail /></soapenv:Fault></soapenv:Body></soapenv:Envelope> 2008-05-30 15:18:57,218 : DEBUG - GeronimoLog.debug(66) | Releasing mex hqejbhcnphr3bc6es3hv5t 2008-05-30 15:18:57,218 : DEBUG - GeronimoLog.debug(66) | Comitting transaction. 2008-05-30 15:18:57,218 : DEBUG - GeronimoLog.debug(66) | Reply for xpath.{http://ifs}testIt 2008-05-30 15:18:57,218 : DEBUG - GeronimoLog.debug(66) | Reply message <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring xmlns:axis2ns7="http://docs.oasis-open.org/wsbpel/2.0/process/executable";>axis2ns7:selectionFailure</faultstring><detail /></soapenv:Fault></soapenv:Body></soapenv:Envelope>



#######################################
complete BPEL process
#######################################

<process name="xpathTest"
targetNamespace="http://initial/testbpel";
xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable";
xmlns:testWsdl="http://ifs";>


<import location="bpelTest.wsdl"
    namespace="http://ifs";
    importType="http://schemas.xmlsoap.org/wsdl/"; />

<partnerLinks>
<partnerLink name="testing" partnerLinkType="testWsdl:testingLT" myRole="testService" />
</partnerLinks>


<variables>
   <variable name="DataTOin" messageType="testWsdl:testItMsgIN" />
<variable name="DataTOout" messageType="testWsdl:testItMsgOUT" /> </variables>


<sequence>
<receive partnerLink="testing" portType="testWsdl:testingPT" operation="testIt" variable="DataTOin" createInstance="yes">
   </receive>
     <assign name="assign1">
         <copy>
               <!-- I tried this without the namespaces, too -->
<from xmlns:testXsd="http://ifs/xsd";>$DataTOin.in/testXsd:param/testWsdl:zahl</from> <to xmlns:testXsd="http://ifs/xsd";>$DataTOout.out/testXsd:param/testWsdl:zahl</to>
         </copy>
   </assign>
<reply partnerLink="testing" portType="testWsdl:testingPT" operation="testIt" variable="DataTOout">
   </reply>
</sequence>

</process>

#######################################
complete WSDL
#######################################

<wsdl:definitions
xmlns:pos="http://ifs";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl";
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
xmlns:xs="http://www.w3.org/2001/XMLSchema";
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/";
xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype";
xmlns:ns0="http://ifs/xsd";
targetNamespace="http://ifs";>

<wsdl:types>
     <xs:schema xmlns:ns="http://ifs"; attributeFormDefault="qualified"
                elementFormDefault="qualified"
                targetNamespace="http://ifs";>
        <xs:import namespace="http://ifs/xsd";
                   schemaLocation="dto.xsd" />
        <xs:element name="doIt">
           <xs:complexType>
              <xs:sequence>
<xs:element minOccurs="0" name="param" nillable="true" type="ns0:DTO"/>
              </xs:sequence>
           </xs:complexType>
        </xs:element>
        <xs:element name="doItResponse">
           <xs:complexType>
              <xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true" type="ns0:DTO"/>
              </xs:sequence>
           </xs:complexType>
        </xs:element>
     </xs:schema>
  </wsdl:types>


<wsdl:message name="testItMsgIN">
   <wsdl:part name="in" element="pos:doIt"/>
</wsdl:message>

<wsdl:message name="testItMsgOUT">
   <wsdl:part name="out" element="pos:doItResponse"/>
</wsdl:message>



<wsdl:portType name="testingPT">
   <wsdl:operation name="testIt">
       <wsdl:input message="pos:testItMsgIN" />
       <wsdl:output message="pos:testItMsgOUT" />
   </wsdl:operation>
</wsdl:portType>



<wsdl:binding name="bpelTestBinding" type="pos:testingPT">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
       <wsdl:operation name="testIt">
           <soap:operation soapAction="" style="document"/>
           <wsdl:input>
               <soap:body
                   namespace="http://ifs";
                   use="literal"/>
           </wsdl:input>
           <wsdl:output>
               <soap:body
                   namespace="http://ifs";
                   use="literal"/>
           </wsdl:output>
       </wsdl:operation>
   </wsdl:binding>
   <wsdl:service name="bpelService">
       <wsdl:port name="testPort" binding="pos:bpelTestBinding">
<soap:address location="http://localhost:8080/ode/processes/xpath"/>
       </wsdl:port>
   </wsdl:service>





<plnk:partnerLinkType name="testingLT">
   <plnk:role name="testService" portType="pos:testingPT" />
</plnk:partnerLinkType>


</wsdl:definitions>


#######################################
dto.xsd
#######################################

<xs:schema xmlns:ax21="http://ifs/xsd";
       attributeFormDefault="qualified"
       elementFormDefault="qualified"
       targetNamespace="http://ifs/xsd";
       xmlns:xs="http://www.w3.org/2001/XMLSchema";>
        <xs:complexType name="DTO">
           <xs:sequence>
<xs:element minOccurs="0" name="s1" nillable="true" type="xs:string"/>
              <xs:element minOccurs="0" name="zahl" type="xs:int"/>
           </xs:sequence>
        </xs:complexType>
</xs:schema>

#######################################
request SOAP message
#######################################

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
     <soapenv:Body>
        <ns2:doIt xmlns:ns2="http://ifs";>
           <ns2:param>
              <ns1:s1 xmlns:ns1="http://ifs/xsd";>Hallo, Hallo!!</ns1:s1>
              <ns1:zahl xmlns:ns1="http://ifs/xsd";>200</ns1:zahl>
           </ns2:param>
        </ns2:doIt>
     </soapenv:Body>
  </soapenv:Envelope>

Reply via email to