Start of Content Area

Function documentation Import for WSDL Documents in RPC-Style Format  Locate the document in its SAP Library structure

Use

The ES Builder enables you to import WSDL documents so that you can use the message definitions they contain. Provided certain preconditions are met, you can use the imported message definitions as external messages in other ES Builder editors, and in proxy generation.

Link to external website

For technical reasons, proxy generation and the respective editors in the ES Builder do not support the entire language range of XML schema and WSDL. For an overview of which language elements are supported see in SAP Developer Network (SDN) at https://www.sdn.sap.com/irj/sdn SOA Middleware  Repository-Based Modeling and Design. In the Knowledge Center on the Repository-Based Modeling and Design page, choose Enterprise Services Repository & Registry and on the subsequent page select the Supported XML Schema and WSDL document.

The ES Builder expects external messages in document-style format. However, you can still import WSDL documents in rpc-style format. The ES Builder converts such documents into an equivalent WSDL document in document-styleformat.

Prerequisites

      Although it does not conform to the standard, a WSDL document can contain operations with message definitions in both document-style format and in rpc-style format. In this case, before importing the WSDL document, you must first split it into two documents: one that only contains definitions in document-style format, and one that only contains definitions in rpc-style format.

      The WSDL document in rpc-style format must also not use any soapenc:Array types; these are often used in SOAP code in documents with this format. soapenc:Array uses the tag <xsd:any>, which the Integration Builder editors or proxy generation either ignore or do not support.

Link to external website

You can replace soapenc:Array types with an equivalent <sequence>; see the WS-I  example under http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16556272.

      You have created an external definition in the ES Builder.

Features

When you import a WSDL document in rpc-style format, the ES Builder performs several conversions. In the following, a source document refers to the WSDL document in rpc-style format to be imported, and the target document refers to the WSDL document in document-styleformat to be created during the import. Once the document has been imported, the source document is displayed on the Imported Documents tab page, and the target document is displayed on the WSDL tab page.

There are two kinds of definitions in a WSDL document: an abstract description (contains the elements <wsdl:types>, <wsdl:message> and <wsdl:portType>), and a concrete description (contains the elements <wsdl:binding> and <wsdl:service>). Only the abstract description is required in the ES Repository. Therefore, the import function concentrates on this part.

Conversion of Namespaces

In the case of WSDL documents in rpc-style format, in the concrete description of the WSDL document, the same operations can have different SOAP bindings. In this case, each SOAP binding can have a different namespace; this determines the namespace of the root element of the message. See also: http://www.w3.org/TR/wsdl#_soap:body

To simplify the process of importing the source document, the ES Builder ignores the part with the concrete description and consequently the namespace of the SOAP binding. Instead, the ES Builder proceeds as follows with regard to the namespace:

      The target namespace of the WSDL schema (from <wsdl:definitions>) is used as the target namespace for the root element of messages during import.

      The target namespaces of the schemata for the WSDL types (from <wsdl:types>) do not change during import.

      If the target namespace for the root element of the messages is identical to the target namespace of another schema, both schemata are included in a common schema for the target document.

Conversion of Names

There are naming conventions for WSDL documents in rpc-style; these are used to avoid naming conflicts. For example, the name of the root element of the input message of an operation must have the same name as the operation. To ensure that these naming conventions also apply for imported WSDL documents, the ES Builder checks all <wsdl:portType> definitions and all operations of these definitions in the source document and adjusts the names of the root element for messages that do not satisfy the naming conventions.

The name of the root element of a message is defined in the tag <wsdl:part> by using the attribute element. In the table below, the name of the message refers to the name of the root element:

Naming Conversions for Message Definitions

 

Message Type

Conversion During Import

Input Message

If the target document does not contain a message with the name of the last operation read, the ES Builder creates a new message and a new element with the message definition.

Output Message

If the target document does not contain a message with the same name as the last operation read, and it does not have the suffix 'response', the ES Builder creates a new message and a new element with the message definition.

Fault Message

If the target document does not contain a fault message with the same name as the last fault message read, the ES Builder copies the fault message and the message definition to the target document.

Activities

To import the parameter-oriented WSDL document, during the import, in the drop-down list box Messages, select the entry Except rpc-style (see also: External Definitions).

 

 

 

 

 

 

End of Content Area