0

Im triying to implement a simple BPEL process that should be able to accept as an input an element defined in an external XSD.

Im using Eclipse Oxigen.2 Release (4.7.2) and the Eclipse BPEL designer 1.05 Final, also i'm running the BPEL process in Apache ODE Server 1.3.7.

To achieve this im importing the XSD in the BPEL generated WSDL, but when i include this tag the apache ODE Console doesnt show the process if i quit the import tag the process is showed in the console and runs correctly.

As BPEL2.0 is based in WSDL1.1 i was following the WSDL1.1 specification in the Authoring Style part, but it seems to be an error in the example, because they use the wsdl:import to import a XSD. Trying to import the XSD in this way raise a validation error in eclipse.

I found this answer that points to this link that states the error in WSDL1.1 specification:

Some examples in WSDL 1.1 incorrectly show the WSDL import statement being used to import XML Schema definitions. The Profile clarifies use of the import mechanisms to keep them consistent and confined to their respective domains. Imported schema documents are also constrained by XML version and encoding requirements consistent to those of the importing WSDL documents.

R2001 A DESCRIPTION MUST only use the WSDL "import" statement to import another WSDL description.

R2803 In a DESCRIPTION, the namespace attribute of the wsdl:import MUST NOT be a relative URI.

R2002 To import XML Schema Definitions, a DESCRIPTION MUST use the XML Schema "import" statement.

R2003 A DESCRIPTION MUST use the XML Schema "import" statement only within the xsd:schema element of the types section.

R2004 In a DESCRIPTION the schemaLocation attribute of an xsd:import element MUST NOT resolve to any document whose root element is not "schema" from the namespace "http://www.w3.org/2001/XMLSchema".

R2009 An XML Schema directly or indirectly imported by a DESCRIPTION MAY include the Unicode Byte Order Mark (BOM).

R2010 An XML Schema directly or indirectly imported by a DESCRIPTION MUST use either UTF-8 or UTF-16 encoding.

R2011 An XML Schema directly or indirectly imported by a DESCRIPTION MUST use version 1.0 of the eXtensible Markup Language W3C Recommendation.

So with the above information, rigth now i have:

1. XSD Sxhema

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns="urn:oasis:names:specification:ubl:schema:xsd:OrderCancellation-2"
            xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
            xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
            xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:ccts="urn:un:unece:uncefact:documentation:2"
            targetNamespace="urn:oasis:names:specification:ubl:schema:xsd:OrderCancellation-2"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            version="2.1">

   <!-- ===== Imports ===== -->
   <xsd:import namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
               schemaLocation="../common/UBL-CommonAggregateComponents-2.1.xsd"/>
   <xsd:import namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
               schemaLocation="../common/UBL-CommonBasicComponents-2.1.xsd"/>
   <xsd:import namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
               schemaLocation="../common/UBL-CommonExtensionComponents-2.1.xsd"/>

   <!-- ===== Element Declarations ===== -->
   <xsd:element name="OrderCancellation" type="OrderCancellationType">
      <xsd:annotation>
         <xsd:documentation>This element MUST be conveyed as the root element in any instance document based on this Schema expression</xsd:documentation>
      </xsd:annotation>
   </xsd:element>

   <!-- ===== Type Definitions ===== -->

   <xsd:complexType name="OrderCancellationType">
      <xsd:annotation>
         <xsd:documentation>
            <ccts:Component>
               <ccts:ComponentType>ABIE</ccts:ComponentType>
               <ccts:DictionaryEntryName>Order Cancellation. Details</ccts:DictionaryEntryName>
               <ccts:Definition>A document used to cancel an entire Order.</ccts:Definition>
               <ccts:ObjectClass>Order Cancellation</ccts:ObjectClass>
            </ccts:Component>
         </xsd:documentation>
      </xsd:annotation>
      <xsd:sequence>
         <xsd:element ref="cbc:IssueDate" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
               <xsd:documentation>
                  <ccts:Component>
                     <ccts:ComponentType>BBIE</ccts:ComponentType>
                     <ccts:DictionaryEntryName>Order Cancellation. Issue Date. Date</ccts:DictionaryEntryName>
                     <ccts:Definition>The date, assigned by the sender, on which this document was issued.</ccts:Definition>
                     <ccts:Cardinality>1</ccts:Cardinality>
                     <ccts:ObjectClass>Order Cancellation</ccts:ObjectClass>
                     <ccts:PropertyTerm>Issue Date</ccts:PropertyTerm>
                     <ccts:RepresentationTerm>Date</ccts:RepresentationTerm>
                     <ccts:DataType>Date. Type</ccts:DataType>
                  </ccts:Component>
               </xsd:documentation>
            </xsd:annotation>
         </xsd:element>
         <xsd:element ref="cbc:IssueTime" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
                ...
            </xsd:annotation>
         </xsd:element>
         <xsd:element ref="cbc:Note" minOccurs="0" maxOccurs="unbounded">
            <xsd:annotation>
                ...
            </xsd:annotation>
         </xsd:element>
      </xsd:sequence>
   </xsd:complexType>
</xsd:schema>

2. Generated WSDL of BPEL Process

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<definitions 
    xmlns="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:tns="http://br.ufsc.das.ubl"
    xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:OrderCancellation-2" 
    xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" 
    xmlns:wsdl="http://service.endpoint.br.ufsc.das/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    name="OrderingUBL" 
    targetNamespace="http://br.ufsc.das.ubl">

<!--
  Added XSD namespace 

xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:OrderCancellation-2" 
-->

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     TYPE DEFINITION - List of types participating in this BPEL process 
     The BPEL Designer will generate default request and response types
     but you can define or import any XML Schema type and use them as part 
     of the message types.
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    
    <plnk:partnerLinkType name="IntegratorEndPoint_PLT">
        <plnk:role name="IntegratorEndPoint_Role" portType="wsdl:IntegrationEndPointImpl"/>
    </plnk:partnerLinkType>

    <import location="file:/C:/my/path/IntegrationEndpoint.wsdl" namespace="http://service.endpoint.br.ufsc.das/"/>

    <types>
        <schema xmlns="http://www.w3.org/2001/XMLSchema" 
                attributeFormDefault="unqualified" 
                elementFormDefault="qualified" 
                targetNamespace="http://br.ufsc.das.ubl">

            <!--Importing the XSD file-->
            <import 
                namespace="urn:oasis:names:specification:ubl:schema:xsd:OrderCancellation-2" 
                schemaLocation="file:/C:/UBL-2.1/xsd/maindoc/UBL-OrderCancellation-2.xsd" />

            <element name="OrderingUBLRequest">
                <complexType>
                    <sequence>
                        <!-- Defining the Type of element OrderingUBLRequest 
                             to be the element in the imported XSD 
                        -->
                        <element name="input" type="ubl:OrderCancellationType" /> 
                    </sequence>
                </complexType>
            </element>

            <element name="OrderingUBLResponse">
                <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="OrderingUBLRequestMessage">
        <part element="tns:OrderingUBLRequest" name="payload"/>
    </message>

    <message name="OrderingUBLResponseMessage">
        <part element="tns:OrderingUBLResponse" name="payload"/>
    </message>

    <!--
        .
        . All the other WSDL tags
        .
    -->
</definitions>

QUESTION

Am I missing something importing the XSD in the WSDL BPEL file and run it in Apache ODE?

JuanDM
  • 1,250
  • 10
  • 24
  • 1
    Did you check for errrors/warnings in the ODE logs? Try deploying the process manually by running ODE outside of eclipse environment, in case you are running ODE within eclipse. – Sathwik Jan 17 '18 at 09:22
  • Can you add the sample process to github and share it for investigation? – Sathwik Jan 17 '18 at 09:24
  • @Sathwik I'm running ODE from eclipse, i will try your suggestions! If the error persist i will provide the github repository – JuanDM Jan 17 '18 at 13:24
  • @Sathwik thank you for point me in the right direction, the problem was a special character in the XSD file path used in the import tag! – JuanDM Jan 17 '18 at 19:38

0 Answers0