Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[bpel-dev] Question of BPEL Validator

Hi,

    I have the following BPEL Definitions. It is right, because it is deployed and tested. However, the validator reports an error. Please give me suggestions on how to fix this. Thanks.

<process name="logistic" targetNamespace="http://de.fhg.ipsi.oasys.businessScenario.sample"
    suppressJoinFailure="yes" xmlns:tns="http://de.fhg.ipsi.oasys.businessScenario.sample"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
    <import importType="http://schemas.xmlsoap.org/wsdl/"
        namespace="http://de.fhg.ipsi.oasys.businessScenario.sample" location="procurement.wsdl" />
    <partnerLinks>
        <partnerLink name="logistics" partnerLinkType="tns:accLogistics"
            myRole="logistics" partnerRole="accounting" initializePartnerRole="yes" />
    </partnerLinks>
    <variables>
        <variable name="getStatus" messageType="tns:getStatus" />
        <variable name="status" messageType="tns:status" />
        <variable name="terminate" messageType="tns:terminate" />
        <variable name="order" messageType="tns:order" />
        <variable name="orderConf" messageType="tns:order" />
        <variable name="i" type="xsd:int" />
        <variable name="step" type="xsd:int" />
    </variables><!--
    <faultHandlers>
        <catchAll>
            <assign>
                <copy>
                    <from>-1</from>
                    <to>$i</to>
                </copy>
            </assign>
        </catchAll>
    </faultHandlers> -->
    <pick createInstance="yes" name="startProcess">
        <onMessage name="deliver" partnerLink="logistics" portType="tns:logistics"
            operation="deliverOp" variable="order">
            <if name="notOutOfStock">
                <condition>1=1</condition>
                <sequence>
                    <assign>
                        <bpel:copy>
                            <bpel:from variable="order" part="parameters" />
                            <bpel:to variable="orderConf" part="parameters" />
                        </bpel:copy>
                        <copy>
                            <from>0</from>
                            <to>$i</to>
                        </copy>
                        <copy>
                            <from>1</from>
                            <to>$step</to>
                        </copy>
                        <copy>
                            <from>
                                <literal>company</literal>
                            </from>
                            <to>$orderConf.parameters/tns:buyer/tns:name</to>
                        </copy>
                    </assign>
                    <invoke name="deliver_conf" partnerLink="logistics"
                        portType="tns:accLogistics" operation="deliver_confOp"
                        inputVariable="orderConf">
                    </invoke>
                    <assign>
                        <copy>
                            <from> $i + $step </from>
                            <to>$i</to>
                        </copy>
                    </assign>
                    <!-- <while name="parcelTracking"> <condition>$i &lt; 10</condition> -->
                    <pick>
                        <onMessage name="getStatus" partnerLink="logistics"
                            portType="tns:logistics" operation="getStatusOpL" variable="getStatus">
                            <sequence>
                                <assign>
                                    <bpel:copy>
                                        <bpel:from>
                                            <bpel:literal xml:space="preserve">
                                                    <tns:statusElement
                                                xmlns:tns="http://de.fhg.ipsi.oasys.businessScenario.sample"
                                                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                                                        <tns:trackNum>0</tns:trackNum>
                                                        <tns:orderNum>0</tns:orderNum>
                                                        <tns:status>tns:status</tns:status>
                                                    </tns:statusElement>
                                                </bpel:literal>
                                        </bpel:from>
                                        <bpel:to variable="status" part="parameters"></bpel:to>
                                    </bpel:copy>
                                    <copy>
                                        <from>$getStatus.parameters/tns:orderNum</from>
                                        <to>$status.parameters/tns:orderNum</to>
                                    </copy>
                                    <copy>
                                        <from>$getStatus.parameters/tns:trackNum</from>
                                        <to>$status.parameters/tns:trackNum</to>
                                    </copy>
                                    <copy>
                                        <from>
                                            <literal>status from logis service</literal>
                                        </from>
                                        <to>$status.parameters/tns:status</to>
                                    </copy>
                                    <copy>
                                        <from> $i + $step </from>
                                        <to>$i</to>
                                    </copy>
                                </assign>
                                <wait>
                                    <for>'PT30S'</for>
                                </wait>
                                <reply name="status" partnerLink="logistics" portType="tns:logistics"
                                    operation="getStatusOpL" variable="status" />
                                <assign>
                                    <copy>
                                        <from> $i + $step </from>
                                        <to>$i</to>
                                    </copy>
                                </assign>
                            </sequence>
                        </onMessage>
                        <onMessage partnerLink="logistics" portType="tns:logistics"
                            operation="terminateOpL" variable="terminate">
                            <exit />
                        </onMessage>
                    </pick>
                    <!-- </while> -->
                </sequence>
            </if>
        </onMessage>
    </pick>
</process>

the Related WSDL is the following.


<wsdl:definitions xmlns:tns="http://de.fhg.ipsi.oasys.businessScenario.sample"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
    targetNamespace="http://de.fhg.ipsi.oasys.businessScenario.sample"
    name="accountingS">
    <wsdl:types>
        <xsd:schema attributeFormDefault="qualified"
            elementFormDefault="qualified" targetNamespace="http://de.fhg.ipsi.oasys.businessScenario.sample"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <xsd:complexType name="orderType">
                <xsd:sequence>
                    <xsd:element name="buyer" type="tns:company" />
                    <xsd:element name="accounting" type="tns:company" />
                    <xsd:element name="logistic" type="tns:company" />
                    <xsd:element name="orderDate" type="xsd:dateTime" />
                    <xsd:element name="preferredDeliveryDate" type="xsd:dateTime" />
                    <xsd:element name="estimatedDeliveryDate" type="xsd:dateTime" />
                    <xsd:element name="orderLines" type="tns:orderLineType" />
                    <xsd:element name="trackNum" type="xsd:int" />
                    <xsd:element name="orderNum" type="xsd:int" />
                </xsd:sequence>
            </xsd:complexType>
            <xsd:element name="orderElement" type="tns:orderType" />
            <xsd:element name="orderDeliElement" type="tns:orderType" />
            <xsd:complexType name="company">
                <xsd:sequence>
                    <xsd:element name="name" type="xsd:string" />
                    <xsd:element name="street" type="xsd:string" />
                    <xsd:element name="city" type="xsd:string" />
                    <xsd:element name="zipCode" type="xsd:int" />
                    <xsd:element name="phone" type="xsd:string" />
                    <xsd:element name="urlString" type="xsd:string" />
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="orderLineType">
                <xsd:sequence>
                    <xsd:element name="orderLineNum" type="xsd:int" />
                    <xsd:element name="item" type="tns:itemType" />
                    <xsd:element name="amount" type="xsd:double" />
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="itemType">
                <xsd:sequence>
                    <xsd:element name="itemNum" type="xsd:int" />
                    <xsd:element name="itemDescription" type="xsd:string" />
                    <xsd:element name="itemUnit" type="xsd:string" />
                    <xsd:element name="pricePerUnit" type="xsd:double" />
                    <xsd:element name="volume" type="xsd:double" />
                    <xsd:element name="volumeUnit" type="xsd:string" />
                    <xsd:element name="weight" type="xsd:double" />
                    <xsd:element name="weightUnit" type="xsd:string" />
                </xsd:sequence>
            </xsd:complexType>
            <xsd:complexType name="getStatus">
                <xsd:sequence>
                    <xsd:element name="trackNum" type="xsd:int" />
                    <xsd:element name="orderNum" type="xsd:int" />
                </xsd:sequence>
            </xsd:complexType>
            <xsd:element name="getStatusElement" type="tns:getStatus" />
            <xsd:complexType name="status">
                <xsd:sequence>
                    <xsd:element name="trackNum" type="xsd:int" />
                    <xsd:element name="orderNum" type="xsd:int" />
                    <xsd:element name="status" type="xsd:string" />
                </xsd:sequence>
            </xsd:complexType>
            <xsd:element name="statElement" type="tns:status" />
            <xsd:complexType name="terminate">
                <xsd:sequence>
                    <xsd:element name="trackNum" type="xsd:int" />
                    <xsd:element name="orderNum" type="xsd:int" />
                </xsd:sequence>
            </xsd:complexType>
            <xsd:element name="terminateElement" type="tns:terminate" />

            <!-- For available testing service -->
            <xsd:element name="urlElement">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="urlString" type="xsd:string" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="statusElement">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="statusString" type="xsd:string" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="faultElement">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="faultName" type="xsd:string" />
                        <xsd:element name="detail" type="xsd:string" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:schema>
    </wsdl:types>
    <wsdl:message name="order">
        <wsdl:part name="parameters" element="tns:orderElement" />
    </wsdl:message>
    <wsdl:message name="delivery">
        <wsdl:part name="parameters" element="tns:orderDeliElement" />
    </wsdl:message>
    <wsdl:message name="outOfStock">
        <wsdl:part name="parameters" element="tns:orderElement" />
    </wsdl:message>
    <wsdl:message name="getStatus">
        <wsdl:part name="parameters" element="tns:getStatusElement" />
    </wsdl:message>
    <wsdl:message name="status">
        <wsdl:part name="parameters" element="tns:statElement" />
    </wsdl:message>
    <wsdl:message name="deliver_conf">
        <wsdl:part name="parameters" element="tns:orderElement" />
    </wsdl:message>
    <wsdl:message name="terminate">
        <wsdl:part name="parameters" element="tns:terminateElement" />
    </wsdl:message>


    <!-- Messages Definitions for Availability Testing Service -->
    <wsdl:message name="urlMsg">
        <wsdl:part element="tns:urlElement" name="parameters" />
    </wsdl:message>
    <wsdl:message name="statusMsg">
        <wsdl:part element="tns:statusElement" name="parameters" />
    </wsdl:message>
    <wsdl:message name="faultMessage">
        <wsdl:part element="tns:faultElement" name="parameters" />
    </wsdl:message>


    <wsdl:portType name="init">
        <wsdl:operation name="receiveOP">
            <wsdl:input message="tns:order" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:portType name="buyer">
        <wsdl:operation name="deliveryOp">
            <wsdl:input message="tns:order" />
        </wsdl:operation>
        <wsdl:operation name="statusOp">
            <wsdl:input message="tns:status" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:portType name="accBuyer">
        <wsdl:operation name="orderOp">
            <wsdl:input message="tns:order" />
        </wsdl:operation>
        <wsdl:operation name="getStatusOp">
            <wsdl:input message="tns:getStatus" />
        </wsdl:operation>
        <wsdl:operation name="terminateOp">
            <wsdl:input message="tns:terminate" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:portType name="accLogistics">
        <wsdl:operation name="outOfStockOp">
            <wsdl:input message="tns:delivery" />
        </wsdl:operation>
        <wsdl:operation name="deliver_confOp">
            <!-- <input message="tns:deliver_conf" /> -->
            <wsdl:input message="tns:order" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:portType name="logistics">
        <wsdl:operation name="getStatusOpL">
            <wsdl:input message="tns:getStatus" />
            <wsdl:output message="tns:status" />
        </wsdl:operation>
        <wsdl:operation name="deliverOp">
            <wsdl:input message="tns:order" />
        </wsdl:operation>
        <wsdl:operation name="terminateOpL">
            <wsdl:input message="tns:terminate" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="initBinding" type="tns:init">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
            style="document" />
        <wsdl:operation name="receiveOP">
            <soap:operation soapAction="" style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:binding name="buyerBinding" type="tns:buyer">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
            style="document" />
        <wsdl:operation name="deliveryOp">
            <soap:operation soapAction="" style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
        <wsdl:operation name="statusOp">
            <soap:operation soapAction="" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:binding name="accBuyerBinding" type="tns:accBuyer">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
            style="document" />
        <wsdl:operation name="orderOp">
            <soap:operation soapAction="" style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
        <wsdl:operation name="getStatusOp">
            <soap:operation soapAction="" style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
        <wsdl:operation name="terminateOp">
            <soap:operation soapAction="" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:binding name="accLogisticsBinding" type="tns:accLogistics">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
            style="document" />
        <wsdl:operation name="outOfStockOp">
            <soap:operation soapAction="" style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
        <wsdl:operation name="deliver_confOp">
            <soap:operation soapAction="" style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:binding name="logisticsBinding" type="tns:logistics">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
            style="document" />
        <wsdl:operation name="getStatusOpL">
            <soap:operation soapAction="" style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="deliverOp">
            <soap:operation soapAction="" style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
        <wsdl:operation name="terminateOpL">
            <soap:operation soapAction="" style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="init">
        <wsdl:port name="initPort" binding="tns:initBinding">
            <soap:address location="http://192.168.1.100:8080/ode/processes/init" />
        </wsdl:port>
    </wsdl:service>
    <wsdl:service name="buyer">
        <wsdl:port name="buyerPort" binding="tns:buyerBinding">
            <soap:address location="http://192.168.1.100:8080/ode/processes/buyer" />
        </wsdl:port>
    </wsdl:service>
    <wsdl:service name="accountingBuyer">
        <wsdl:port name="accBuyerPort" binding="tns:accBuyerBinding">
            <soap:address
                location="http://192.168.1.100:8080/ode/processes/accountingBuyer" />
        </wsdl:port>
    </wsdl:service>
    <wsdl:service name="accountingLogis">
        <wsdl:port name="accLogisticsPort" binding="tns:accLogisticsBinding">
            <soap:address
                location="http://192.168.1.100:8080/ode/processes/accountingLogis" />
        </wsdl:port>
    </wsdl:service>
    <wsdl:service name="logistics">
        <wsdl:port name="logisticsPort" binding="tns:logisticsBinding">
            <soap:address location="http://192.168.1.102:8080/ode/processes/logistics" />
        </wsdl:port>
    </wsdl:service>


    <!-- Porttype and Binding Information for availability testing service -->
    <wsdl:portType name="AvailTestServicePT">
        <wsdl:operation name="TestAvail">
            <wsdl:input message="tns:urlMsg" />
            <wsdl:output message="tns:statusMsg" />
            <wsdl:fault message="tns:faultMessage" name="fault" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="AvailTestServiceSOAP" type="tns:AvailTestServicePT">
        <soap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="TestAvail">
            <soap:operation
                soapAction="http://de.fhg.ipsi.oasys.businessScenario.sample/TestAvail" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
            <wsdl:fault name="fault">
                <soap:fault name="fault" use="literal" />
            </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="AvailTestService">
        <wsdl:port binding="tns:AvailTestServiceSOAP" name="AvailTestServiceSOAP">
            <soap:address
                location="http://192.168.1.101:8080/AvailTestService/services/AvailTestServiceSOAP" />
        </wsdl:port>
    </wsdl:service>

    <plnk:partnerLinkType name="init">
        <plnk:role name="initBuyer" portType="tns:init" />
    </plnk:partnerLinkType>
    <plnk:partnerLinkType name="accBuyer">
        <plnk:role name="accounting" portType="tns:accBuyer" />
        <plnk:role name="buyer" portType="tns:buyer" />
    </plnk:partnerLinkType>
    <plnk:partnerLinkType name="accLogistics">
        <plnk:role name="accounting" portType="tns:accLogistics" />
        <plnk:role name="logistics" portType="tns:logistics" />
    </plnk:partnerLinkType>

    <!-- Partner Link Type Definition for Availability Testing Service -->
    <plnk:partnerLinkType name="availTestLT">
        <plnk:role name="availTestServiceProvider" portType="tns:AvailTestServicePT"/>
    </plnk:partnerLinkType>
</wsdl:definitions>


Back to the top