Hi JB,

lazily quoting the FAQ:

Q. My process fails with a selectionFailure; What can I do?
A. BPEL expects a single element to be selected when evaluating <to> and <from> expressions, and a selectionFailure fault is thrown if zero or more than one element are selected.

If you get zero element, double-check your namespace prefix and bindings. Also, remember that you must initialize your variables (most often with <literal>'s) before assigning into them, unless your are reassigning the whole variable (e.g. directly into $variable, or $variable.part). To debug assignments, you can set the "org.apache.ode" logging category to DEBUG in order to see the content of variables as the process executes.
-------

In your code snippet the problem is apparently due to an uninitialized variable. The tns:result element must exist before you can assign something to it. Try to add something like this before your copy statement:

<bpws:copy>
    <bpws:from>
      <bpws:literal><tns:result/></bpws:literal>
    </bpws:from>
    <bpws:to part="payload" variable="output"/>
</bpws:copy>

Best regards,
  Tammo

JB wrote:
Hello,
I receive the following error message while running the helloWorld sample:
Assignment Fault: 
{http://docs.oasis-open.org/wsbpel/2.0/process/executable}selectionFailure,lineNo=21,faultExplanation=No
 results for expression: {OXPath10Expression /tns:result}

My BPEL file:
<?xml version="1.0" encoding="UTF-8"?>
<bpws:process exitOnStandardFault="yes" name="HelloWorld"
    suppressJoinFailure="yes"
    targetNamespace="http://eclipse.org/bpel/sample";

    xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable"; 
xmlns:tns="http://eclipse.org/bpel/sample";>
location="HelloWorld.wsdl" namespace="http://eclipse.org/bpel/sample"/>
    <bpws:partnerLinks>
        <bpws:partnerLink myRole="HelloWorldProvider" name="client"
            partnerLinkType="tns:HelloWorld" partnerRole="HelloWorldRequester"/>
    </bpws:partnerLinks>
    <bpws:variables>
        <bpws:variable messageType="tns:HelloWorldRequestMessage" name="input"/>
<bpws:variable messageType="tns:HelloWorldResponseMessage" name="output"/> </bpws:variables>
    <bpws:sequence name="main">
        <bpws:receive createInstance="yes" name="receiveInput"
            operation="initiate" partnerLink="client"
            portType="tns:HelloWorld" variable="input"/>
        <bpws:assign name="Assign" validate="no">
            <bpws:copy>
                <bpws:from><![CDATA[concat('Hello, ', 
$input.payload/tns:input)]]></bpws:from>
                <bpws:to part="payload" variable="output">
                    <bpws:query 
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[/tns:result]]></bpws:query>
                </bpws:to>
            </bpws:copy>
        </bpws:assign>
        <bpws:invoke inputVariable="output" name="callbackClient"
operation="onResult" partnerLink="client" portType="tns:HelloWorldCallback"/> </bpws:sequence>
</bpws:process>

My wsdl file:
<?xml version="1.0"?>
<definitions name="HelloWorld"
        targetNamespace="http://eclipse.org/bpel/sample";
        xmlns:tns="http://eclipse.org/bpel/sample";
        xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype";
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
        xmlns="http://schemas.xmlsoap.org/wsdl/";
        >

<!--

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPE DEFINITION - List of services participating in this BPEL process The default output of the BPEL designer uses strings as input and output to the BPEL Process. But you can define or import any XML Schema type and us them as part of the message types. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <types> <schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://eclipse.org/bpel/sample"; xmlns="http://www.w3.org/2001/XMLSchema";
                >
<element
 name="HelloWorldRequest">
<complexType>
                    <sequence>
                        <element name="input" type="string" />
                    </sequence>
                </complexType>
            </element>
<element name="HelloWorldResponse">
                <complexType>
                    <sequence>
                        <element name="result" type="string"/>
                    </sequence>
                </complexType>
            </element>
</schema>
    </types>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MESSAGE TYPE DEFINITION - Definition of the message types used as part of the port type defintions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <message name="HelloWorldRequestMessage">
        <part name="payload" element="tns:HelloWorldRequest"/>
    </message>
<message name="HelloWorldResponseMessage">
        <part name="payload" element="tns:HelloWorldResponse"/>
    </message>


<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     PORT TYPE DEFINITION - A port type groups a set of operations into
     a logical service unit.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- portType implemented by the HelloWorld BPEL process -->
    <portType name="HelloWorld">
        <operation name="initiate">
            <input message="tns:HelloWorldRequestMessage"/>
        </operation>
</portType>

<!-- portType implemented by the requester of HelloWorld BPEL process for asynchronous callback purposes
         -->
    <portType name="HelloWorldCallback">
        <operation name="onResult">
            <input message="tns:HelloWorldResponseMessage"/>
        </operation>
    </portType>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     BINDING AND SERVICE DEFINITION
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
        <binding name="HelloSoapBinding" type="tns:HelloWorld">
                 http://schemas.xmlsoap.org/soap/http"/>
                <operation name="initiate">
                        <soap:operation soapAction="" style="document"/>
                        <input>
                                 http://eclipse.org/bpel/sample"/>
                        </input>
                        <output>
                         http://eclipse.org/bpel/sample"/>
                        </output>
                </operation>
        </binding>

        <service name="HelloService">
                <port name="HelloPort" binding="tns:HelloSoapBinding">
                         http://localhost:8080/ode/processes/helloWorld"/>
                </port>
        </service>

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     PARTNER LINK TYPE DEFINITION
         the HelloWorld partnerLinkType binds the provider and
         requester portType into an asynchronous conversation.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <plnk:partnerLinkType name="HelloWorld">
        <plnk:role name="HelloWorldProvider" portType="tns:HelloWorld"/>
        <plnk:role name="HelloWorldRequester" 
portType="tns:HelloWorldCallback"/>
</plnk:partnerLinkType> </definitions>

deploy.xml

xmlns:pns="http://eclipse.org/bpel/sample"; xmlns:wns="http://eclipse.org/bpel/sample";>
        
        <process name="pns:HelloWorld">
                <active>true</active>
                <provide partnerLink="client">
                        <service
 name="wns:HelloService" port="HelloPort"/>
                </provide>
                <invoke partnerLink="client">
                        <service
 name="wns:HelloService" port="HelloPort"/>
                </invoke>
        </process>
</deploy>

Thanks for help,
J.B.









Machen Sie Yahoo! zu Ihrer Startseite. Los geht's: http://de.yahoo.com/set

Reply via email to