0 Replies Latest reply on Mar 2, 2010 10:06 AM by Christy Christy

    [org.jbpm.bpel.sublang.xpath.XPathEvaluator] cannot create element for step with non-numeric predicate: [(DefaultNameStep): arg0]

    Christy Christy Novice

      Hi to everybody!

      Please help me!

      Here is my simple bpel process:

      <process name="HelloWorld" targetNamespace="http://nmsp" xmlns:tns="http://nmsp"
          xmlns:buoysnmsp="http://buoys.ws.esimo/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
          <import importType="http://schemas.xmlsoap.org/wsdl/" location="hello.wsdl"
              namespace="http://nmsp"/>
          <partnerLinks>
              <partnerLink myRole="Greeter" name="caller" partnerLinkType="tns:Greeter-Caller"> </partnerLink>
              <partnerLink partnerRole="BuoysRole" name="BuoysWSJaxWsService"
                  partnerLinkType="tns:BuoysLink"> </partnerLink>
          </partnerLinks>

          <variables>
              <variable messageType="tns:nameMessage" name="request"> </variable>
              <variable type="xsd: int" name="n"> </variable>
              <variable messageType="tns:greetingMessage" name="response"> </variable>      
              <variable messageType="buoysnmsp:BuoysWSJaxWs_getIntArr" name="BuoysWSJaxWs_getIntArr"> </variable>
              <variable messageType="buoysnmsp:BuoysWSJaxWs_getIntArrResponse" name="BuoysWSJaxWs_getIntArrResponse"> </variable>
          </variables>
          <correlationSets>
              <correlationSet name="trip" properties="tns:tripLocator"/>
          </correlationSets>
          <sequence name="MainSeq">          
              <receive createInstance="yes" name="ReceiveName" operation="sayHello" partnerLink="caller"
                  portType="tns:Greeter" variable="request"> </receive>
              <assign>
                  <copy>
                      <from>1</from>
                      <to variable="n"/>
                      </copy>
                      <copy>
                          <from>$request.name/leafElement[$n]</from>
                          <to>$BuoysWSJaxWs_getIntArr.getIntArr/arg0[$n]</to>
                      </copy>
                  <!--</copy>-->
              </assign>  
          
              <invoke name="InvokeBuoys" operation="getIntArr" partnerLink="BuoysWSJaxWsService"
                  portType="buoysnmsp:BuoysWSJaxWs" inputVariable="BuoysWSJaxWs_getIntArr"
                  outputVariable="BuoysWSJaxWs_getIntArrResponse">
                  <correlations>
                      <correlation set="trip" initiate="yes" pattern="in"/>
                  </correlations>
              </invoke>
              <assign>
                  <copy>
                      <from>$BuoysWSJaxWs_getIntArrResponse.getIntArrResponse</from>
                      <to>$response.greeting</to>
                  </copy>           
              </assign>
             
              <reply name="SendGreeting" operation="sayHello" partnerLink="caller" portType="tns:Greeter"
                  variable="response"> </reply>
             
          </sequence>
      </process>

       

      This is its wsdl:

      <definitions targetNamespace="http://nmsp"
          xmlns:tns="http://nmsp" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:buoysnmsp="http://buoys.ws.esimo/"
          xmlns:bpel="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
          xmlns:plt="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
          xmlns="http://schemas.xmlsoap.org/wsdl/">
          <import namespace="http://buoys.ws.esimo/" location="BuoysWSJaxWsService.wsdl" />
          <types>       
              <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  targetNamespace="http://nmsp">
            
                  <xsd:element name="newElement" type = "tns:newElement" />     
                 
                      <xsd:complexType name="newElement">
                          <xsd:sequence>                       
                              <xsd:element name="leafElement" type = "xsd:double" maxOccurs="unbounded"/>                              
                          </xsd:sequence>
                      </xsd:complexType>
                  
                 
              </xsd:schema>       
          </types>
          <message name="greetingMessage">
              <part name="greeting" element="tns:newElement" />
          </message>
          <message name="nameMessage">
              <part name="name"  element="tns:newElement" />
          </message>
          <portType name="Greeter">
              <operation name="sayHello">
                  <input message="tns:nameMessage" />
                  <output message="tns:greetingMessage" />
              </operation>
          </portType>
          <plt:partnerLinkType name="Greeter-Caller">       
              <plt:role name="Greeter" portType="tns:Greeter">           
              </plt:role>
          </plt:partnerLinkType>
          <plt:partnerLinkType name="BuoysLink">       
              <plt:role name="BuoysRole" portType="buoysnmsp:BuoysWSJaxWs">           
              </plt:role>
          </plt:partnerLinkType>
          <bpel:property name="tripLocator" type="xsd:int" />
          <bpel:propertyAlias propertyName="tns:tripLocator" messageType="buoysnmsp:BuoysWSJaxWs_getIntArr"
          part="getIntArr" />
          <bpel:propertyAlias propertyName="tns:tripLocator" messageType="buoysnmsp:BuoysWSJaxWs_getIntArrResponse"
          part="getIntArrResponse" />
          </definitions>

      When I try to invoke it I get the error:

      ERROR [org.jbpm.bpel.sublang.xpath.XPathEvaluator] cannot create element for step with non-numeric predicate: [(DefaultNameStep): arg0]

      Why? what is wrong?

      P.S. it is interasting that if I change "to" in <copy>
                          <from>$request.name/leafElement[$n]</from>
                          <to>$BuoysWSJaxWs_getIntArr.getIntArr/arg0[$n]</to>
                      </copy>
      to <copy>
                          <from>$request.name/leafElement[$n]</from>
                          <to>$BuoysWSJaxWs_getIntArr.getIntArr/arg0[1]</to>
                      </copy>

      everything works fine. Where is my mistake?

      Thank you!