IMS Logo

IMS General Web Services WSDL Binding Guidelines

Version 1.0 Final Specification

Copyright © 2005 IMS Global Learning Consortium, Inc. All Rights Reserved.
The IMS Logo is a registered trademark of IMS/GLC
Document Name: IMS General Web Services WSDL Binding Guidelines
Revision: 19 December 2005


Date Issued:
19 December 2005
Latest version:
http://www.imsglobal.org/gws/gwsv1p0/imsgws_wsdlBindv1p0.html
Register comments or implementations:
http://www.imsglobal.org/developers/ims/imsforum/categories.cfm?catid=20

IPR and Distribution Notices

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.

IMS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on IMS's procedures with respect to rights in IMS specifications can be found at the IMS Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.

Copyright © IMS Global Learning Consortium 2006. All Rights Reserved.

If you wish to distribute this document or use this document to implement a product or service, you must complete a valid license registration with IMS and receive an email from IMS granting the license. To register, follow the instructions on the IMS website: http://www.imsglobal.org/specificationdownload.cfm.

This document may be copied and furnished to others by Licensee organizations registered on the IMS website provided that the above copyright notice and this paragraph are included on all such copies. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to IMS, except as needed for the purpose of developing IMS specifications, under the auspices of a chartered IMS work group.

Use of this specification to develop products or services is governed by the license with IMS found on the IMS website: http://www.imsglobal.org/gws/gwsv1p0/gwsv1p0speclicense.html.

The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.

THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.

Executive Summary

The 'IMS General Web Services WSDL Binding Guideline' document outlines a process for creating web service bindings using the IMS General Web Services Base Profile, Abstract Framework and business domain knowledge intrinsic to the Information Model of a particular Specification. The 'General Web Services WSDL Binding Guideline' contains a description of how a project teams should use the Unified Modelling Language (UML) and Extensible Mark-up Language (XML) style-sheet language auto-generation tools to specify a Web Service protocol and binding as appropriate.

For the auto-generation approach to work the IMS specification must be represented with UML. IMS has created a Web Services description Profile that defines how UML is to be used to describe a web service-based specification. A specification becomes a collection of UML packages. UML packages are used to ensure that the different ways in which UML models are visually presented by different UML tools do not result in tool interoperability issues. Three types of package stereotypes are used:

The IMS General Web Services Basic Profile introduced the approach of separate bindings for different communications models. Therefore, three sets of transformation rules are required, one for each of the communication models that are to be supported by the bindings, namely (at the current time only the Synchronous binding is described herein):

  1. Synchronous - the initiator is blocked until the respondent replies;
  2. Asynchronous - the initiator is not blocked and so there can be more than one outstanding request;
  3. Polled - once the initiator has sent the request the respondent will not reply until it is polled by the initiator.

This Guideline contains a description of how the IMS Binding Auto-generation Tool-kit (I-BAT) is used to create the WSDL/XSD files from the XMI-based description of the specification. The I-BAT is used to create WSDL/XSD bindings that are categorized as:

  1. Single file WSDL/XSD representation - the WSDL and XSD descriptions are contained in a single file;
  2. Split file representation - the WSDL and XSD descriptions are contained in separate files, i.e., one file for the WSDL and a second file for the XSD;
  3. Split service representation - the WSDL and XSD descriptions are contained in separate files, i.e., two files for the WSDL (one for the abstract description and the other for the service specific description) and a third file for the XSD;
  4. Multiple file representation - the WSDL descriptions are contained in two files (one for the abstract description and the other for the service specific description) and the XSD is spread over several linked files.

The WSDL/XSD files created are designed to comply with the Web Service Interoperability (WS-I) Consortium Base Profile v1.1. A clear statement of the relationship between the WS-I Base Profile and the IMS General Web Service Basic Profile is described in the IMS GWS Base Profile V1.0 Specification. Furthermore information on how the equivalent WSDL/XSD bindings are created to support the IMS General Web Services extension profiles, e.g., Addressing, Security, Attachments, etc. are supplied in the corresponding profile specifications. This guideline also presents recommendations on how to extend the specification by changing the UML description and re-applying the auto-generation file, and the areas for further work.

Table of Contents


Executive Summary

1. Introduction
     1.1 Scope and Context
     1.2 Structure of this Document
     1.3 Nomenclature
     1.4 References

2. Web Services Description Language Files
     2.1 WSDL Document Structure
     2.2 WSDL Schema
           2.2.1 Top-level Structure (<definitions>)
           2.2.2 <import> Element Structure
           2.2.3 <types> Element Structure
           2.2.4 <message> Element Structure
           2.2.5 <portType> Element Structure
           2.2.6 <binding> Element Structure
           2.2.7 <service> Element Structure
     2.3 Basic WSDL File Content
           2.3.1 Single File Representation
           2.3.2 Split File Representation
           2.3.3 Service Split File Representation
           2.3.4 Multiple File Representation
           2.3.5 Structure Relationships and Naming Conventions
     2.4 WS-I Basic Profile

3. WSDL Files for the Set of Communications Models
     3.1 Synchronous Communications Transformation Algorithms
           3.1.1 Single File Representation
           3.1.2 Split File Representation
           3.1.3 Service Split File Representation
           3.1.4 Multiple File Representation
     3.2 Asynchronous Communications Transformation Algorithms
     3.3 Polled Communications Transformation Algorithms

4. Creating a WSDL Binding

5. Base Profile WSDL Auto-generation
     5.1 WSDL Auto-generation for Synchronous Communications
           5.1.1 Single File Representation
           5.1.2 Split File Representation
           5.1.3 Service Split File Representation
           5.1.4 Multiple File Representation
     5.2 WSDL Auto-generation for Asynchronous Communications
     5.3 WSDL Auto-generation for Polled Communications

6. Extending the Binding
     6.1 Changing the Binding
     6.2 Adding New Services
     6.3 Adding New Behaviors
     6.4 Adding New Data Structures
           6.4.1 Adding New 'DataModel' Packages
           6.4.2 Using the DataModel Extension Classes
     6.5 Extending the SOAP headers

7. Claiming Conformance to the Specification
     7.1 WS-I Conformance Claim Attachment
     7.2 Creating Conformance Claims to IMS Profiles

8. Recommended Tools
     8.1 UML and Auto-generation of the Bindings
     8.2 Generating Code Stubs using Java
     8.3 Generating Code Stubs Using the Microsoft .NET Framework
           8.3.1 Code Generation using WSDL.EXE
           8.3.2 The .NET Tools

9. Further Work

Appendix A - The Binding Support XSD Files
     A1 - Status Information
     A2 - Message Header Structures for Synchronous Models
     A3 - Message Header Structures for Asynchronous Models
     A4 - Message Header Structures for Polled Models

About This Document
     List of Contributors

Revision History

Index

1. Introduction

1.1 Scope and Context

The objective of the General Web Services Web Services Description Language (WSDL) Binding Guidelines activity is to provide a framework for guiding project teams looking to use web services as part of IMS/GLC specification development. The General Web Services WSDL Binding Guidelines provide a methodology that meets the following criteria:

The General Web Services WSDL Binding Guidelines (GWSWBG) outlines a process for creating web service bindings using the IMS General Web Services Base Profile, IMS Abstract Framework and business knowledge intrinsic to the Information Model of a particular Specification. The GWSWBG includes guidelines that instruct project groups in how to use the recommended tools in gathering information, processing information, and specifying Web Services protocols and binding as appropriate. The methodology includes information and graphics describing the role and relationship of the General Web Services methodology to the IMS/GLC Specifications. The creation of the WSDL binding files is based upon representation of the specification in the UML. The XML Metadata Interchange (XMI) representation of UML is then used to enable the auto-generation. The automated conversion is supplied by applying one or more specially developed Extensible Stylesheet Language Transformations (XSLTs) to the XMI to create the corresponding set of WSDL and Extensible Schema Definition (XSD) files.

This document should be read in conjunction with the General Web Services Base Profile document [GWS, 05b] and the set if extension profiles [GWS, 05c], [GWS, 05d] and [GWS, 05d] and the IMS Binding Auto-generation Toolkit (I-BAT) Manual [GWS, 05e]. The terms of reference for the creation of both documents are defined in the original project charter [GWS, 03].

1.2 Structure of this Document

The structure of this document is:

2. Web Services Description Language Files
An overview of the structure of WSDL files;
3. WSDL Files for the Set of Communications Models
A description of the transformation algorithms to be applied to the UML representation to create the corresponding WSDL/XSD files;
4. Creating a WSDL Binding
An explanation of how the WSDL files are created from the Information Model description;
5. Base Profile WSDL Auto-generation
A description of how a WSDL/XSD binding based upon the IMS GWS Base Profile is created;
6. Extending the Binding
Discusses the ways in which the binding can be extended including extensibility as discussed in the WS-I Basic Profile v1.1;
7. Claiming Conformance to the Specification
A discussion of how an implementation can prove that it conforms to the specification. This also addresses the WS-I approach of embedded conformance statements in the binding;
8. Recommended Tools
The tools that are recommended to support the creation of a web service binding including the messaging questionnaire;
9. Further Work
A summary of the further work that should be undertaken, particularly to ensure full compatibility with the recommendations in the WS-I Basic Profile v1.1;
Appendix A - The Binding Support XSD Files
A description of the structure and contents of the common XSD files (the Common Data Model and the Message Binding Schema) that support the transformation rules.

1.3 Nomenclature

a-API
Abstract Application Programming Interface
API
Application Programming Interface
CORBA
Common Object Request Broker Architecture
CRUD
Create, Read, Update and Delete
DCOM
Distributed Component Object Model
FTP
File Transfer Protocol
GUID
Global Unique Identifier
GWSBP
General Web Services Base Profile
GWSWBG
General Web Services WSDL Binding Guidelines
HTTP
Hypertext Transfer Protocol
HTTPS
Secure Hypertext Transfer Protocol
IAF
IMS Abstract Framework
I-BAT
IMS Binding Auto-generation Toolkit
IIOP
Internet Inter-ORB Protocol
IMS/GLC
IMS Global Learning Consortium
MOM
Middleware Oriented Messaging
MSIL
Microsoft Intermediate Language
OSID
Open Services Interface Definition (from the Open Knowledge Initiative)
POS
Point of Service
QoS
Quality of Service
RFC
Request For Comments
SMTP
Simple Message Transfer Protocol
SQL
Server Query Language
SSL
Secure Sockets Layer
TLS
Transport Layer Security
UDDI
Universal Description Discovery & Integration
UML
Unified Modelling Language
URI
Universal Resource Identifier
URL
Universal Resource Locator
VLE
Virtual Learning Environment
W3C
World Wide Web Consortium
WMI
Windows Management Instrumentation
WSDL
Web Services Description Language
XMI
XML Metadata Interface
XML
Extensible Mark-up Language
XSD
Extensible Schema Definition
XSL
Extensible Stylesheet Language
XSLT
Extensible Stylesheet Language Transformations

1.4 References

[AbsASCs, 03]
IMS Abstract Framework: Applications, Services & Components v1.0, Ed. C.Smythe, IMS/GLC, July 2003.
[AbsGloss, 03]
IMS Abstract Framework: Glossary v1.0, Ed. C.Smythe, IMS/GLC, July 2003.
[AbsWhite, 03]
IMS Abstract Framework: White Paper v1.0, Ed. C.Smythe, IMS/GLC, July 2003.
[APG, 04a]
IMS Application Profile Guidelines Whitepaper: Part 1 Management Overview, K.Riley and P.Hope, Version 1.0, IMS Publication, May 2004.
[APG, 04b]
IMS Application Profile Guidelines Whitepaper: Part 2 Technical Manual, K.Riley and P.Hope, Version 1.0, IMS Publication, May 2004.
[Cockburn, 01]
Writing Effective Use-case, A.Cockburn, Addison-Wesley, 2001, ISBN 0-201-70225-8.
[GWS, 03]
General Web Services Project Team Charter, C.Schroeder, R.Kleinman and S.Griffin, IMS/GLC, June 2003.
[GWS, 05a]
IMS General Web Services UML to WSDL Binding Auto-generation Guidelines Public Draft, C.Schroeder, S.Raju and C.Smythe, V1.0 IMS/GLC, January 2005.
[GWS, 05b]
IMS General Web Services Base Profile Final Release, C.Schroeder, J.Simon and C.Smythe, V1.0 IMS/GLC, December 2005.
[GWS, 05c]
IMS General Web Services Addressing Profile Final Release, C.Schroeder, J.Simon and C.Smythe, V1.0 IMS/GLC, December 2005.
[GWS, 05d]
IMS General Web Services Attachments Profile Final Release, C.Schroeder, J.Simon and C.Smythe, V1.0 IMS/GLC, December 2005.
[GWS, 05e]
IMS General Web Services Security Profile Final Release, C.Schroeder, J.Simon and C.Smythe, V1.0 IMS/GLC, December 2005.
[GWS, 05f]
IMS Binding Auto-generation Toolkit Manual, C.Smythe, V1.0 IMS/GLC, December 2005.
[SOAP, 01a]
SOAP Messages with Attachments, W3C, W3C Note 11, December 2000.
[SOAP, 03a]
SOAP Version 1.2 Part 1: Messaging Framework, W3C, W3C Final Specification, June 2003.
[SOAP, 03b]
SOAP Version 1.2 Part 2: Adjuncts, W3C, W3C Final Specification, June 2003.
[SpecDev, 03]
IMS Specification Development Methods & Best Practices v1.0, C.Smythe, IMS/GLC, Sept. 2003.
[UML, 04]
The Unified Modeling Language Reference Manual, J.Rumbaugh, I.Jacobson and G.Booch, 2nd Ed, Addison-Wesley, ISBN 0-321-24562-8.
[WSDL, 01]
Web Services Description Language, http://www.w3.org/TR/2001/NOTE-wsdl-20010315, Version 1.1, W3C, W3C Note, March 2001.
[WSDL, 04]
Web Services Description Language, Version 2.0, W3C, W3C Working Draft 3, August 2004.
[WSI, 03]
Web Services Interoperability Basic Profile Version 1.0, Eds K.Ballinger, D.Ehnebuske, M.Gudgin, M.Nottingham and P.Yendluri Web Services-Interoperability Organization, June 2003.
[WSI, 04a]
Web Services Interoperability Basic Profile Version 1.1, Eds K.Ballinger, D.Ehnebuske, C.Ferris, M.Gudgin, C.K.Liu, M.Nottingham and P.Yendluri, Web Services-Interoperability Organization, August 2004.
[WSI, 04b]
WS-I Attachments Profile Version 1.0, Eds C.Ferris, A.Karmarkar and C.K.Liu, Web Services-Interoperability Organization, August 2004.
[WSI, 04c]
WS-I Conformance Claim Attachment Mechanisms Version 1.0, Eds M.Nottingham and C. von Riegen, Web Services-Interoperability Organization, November 2004.
[WSI, 04d]
WS-I Simple SOAP Binding Profile Version 1.1, Ed M.Nottingham, Web Services-Interoperability Organization, August 2004.

2. Web Services Description Language Files

2.1 WSDL Document Structure

The structure of a WSDLv1.11 document is shown in Figure 2.1.

WSDL document structure.
Figure 2.1 WSDL document structure.

A WSDL document defines services as collections of network endpoints, or ports. In WSDL, the abstract definition of endpoints and messages is separated from their concrete network deployment or data format bindings. This allows the reuse of abstract definitions: messages, which are abstract descriptions of the data being exchanged, and port types that are abstract collections of operations. The concrete protocol and data format specifications for a particular port type constitute a reusable binding. A port is defined by associating a network address with a reusable binding and a collection of ports defines a service. Hence, a WSDL document uses the following elements in the definition of network services:

It should be noted that WSDLv1.1 supports the following simple message choreographies:

More complex choreographies have to be constructed using multiple WSDL file-sets with the choreography between the file-sets imposed by an implementation.

2.2 WSDL Schema

2.2.1 Top-level Structure (<definitions>)

The top level XSD for the WSDL schema is shown in Figure 2.2.

Top-level XSD for WSDL schema
Figure 2.2 Top-level XSD for WSDL schema.

There are three approaches to the creation of the WSDL description:

  1. Single file - the creation of a single WSDL file that contains all of the WSDL and XSD definitions;
  2. Split files - the creation of a single WSDL file and single XSD file. The XSD is linked to the WSDL file by the usage of an <xsd:import> statement in the <wsdl:type> element in the WSDL file;
  3. Service split files - the creation of a service specific WSDL file, an abstract definitions WSDL file and a single XSD file. The WSDL files are linked using the <wsdl:import> statement in the service specific WSDL file. The XSD file is linked using the <xsd:import> statement in the <wsdl:type> element in the abstract definitions WSDL file;
  4. Multiple files - the creation of a service specific WSDL file, an abstract definitions WSDL file and one or more XSD files. The WSDL files are linked using the <wsdl:import> statement in the service specific WSDL file. The root XSD file is linked using the <xsd:import> statement in the <wsdl:type> element in the abstract definitions WSDL file.

2.2.2 <import> Element Structure

The <import> schema structure is shown in Figure 2.3. The <import> is used to enable a WSDL description to be defined in several linked physical files. IMS will use the <import> element to link the abstract definition file to the specific service file, i.e., the specific service file imports the abstract definitions file.

<import> element structur
Figure 2.3 <import> element structure.

2.2.3 <types> Element Structure

The <type> schema structure is shown in Figure 2.4. The <type> Element is used within the single WSDL or abstract definitions file to link to the associated XSD files. These XSD files will contain the XML definitions of the SOAP structures.

<types> element structure
Figure 2.4 <types> element structure.

2.2.4 <message> Element Structure

The <message> schema structure is shown in Figure 2.5. This element is used within the single WSDL or the abstract definitions file to define the set of messages that are used to exchange the information for a particular operation. The <part> elements are used to define the message header and body parts.

<message> element structure
Figure 2.5 <message> element structure.

2.2.5 <portType> Element Structure

The <portType> schema structure is shown in Figure 2.6. The <portType> element is used within the abstract definitions file to identify the messages used to represent an operation. In a single abstract definition structure an operation can have at most one input message (from the client to the server) and one output message (from the server to the client).

<portType> element structure
Figure 2.6 <portType> element structure.

2.2.6 <binding> Element Structure

The <binding> schema structure is shown in Figure 2.7. The <binding> element is used within the single WSDL or the specific service file to bind the abstract message definitions to a particular transport mechanism. In the case of the IMS GWS the transport system is SOAPv1.1/HTTPv1.1; no other bindings are supported.

<binding> element structure
Figure 2.7 <binding> element structure.

2.2.7 <service> Element Structure

The <service> element is used within the single WSDL or the specific service file to represent a collection of port elements, where each port represents the availability of binding at a particular endpoint. The 'binding' attribute of the port element ties it to the corresponding binding element (see sub-section 2.2.6).

<service> element structure
Figure 2.8 <service> element structure.

2.3 Basic WSDL File Content

2.3.1 Single File Representation

This is a single file containing the WSDL and XSD information. The basic structure of an integrated WSDL document is:

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
<?xml version = "1.0" encoding = "UTF-8"?>
<wsdl:definitions name = "??" targetNamespace = "??">
<wsdl:types>
<xsd:schema>
...
</xsd:schema>
</wsdl:types>
<wsdl:message name = "??">
<wsdl:part name = "??" element = "??"/>
</wsdl:message>
...
<wsdl:message name = "??">
<wsdl:part name = "??" element = "??"/>
</wsdl:message>
<wsdl:portType name = "??">
<wsdl:operation name = "??">
<wsdl:input message = "??"/>
<wsdl:output message = "??"/>
<wsdl:fault message = "??" name = "??"/>
</wsdl:operation>
...
<wsdl:operation name = "??">
<wsdl:input message = "??"/>
<wsdl:output message = "??"/>
<wsdl:fault message = "??" name = "??"/>
</wsdl:operation>
</wsdl:portType>
...
<wsdl:portType name = "??">
...
</wsdl:portType>
<wsdl:binding name = "??" type= "??">
<wsdl:operation name = "??">
<wsdl:input/>
<wsdl:output/>
<wsdl:fault name = "??"/>
</wsdl:operation>
<wsdl:operation name = "??">
<wsdl:input/>
<wsdl:output/>
<wsdl:fault name = "??"/>
</wsdl:operation>
</wsdl:binding>
...
<wsdl:binding name = "??" type= "??">
...
</wsdl:binding>
<wsdl:service name = "??">
<wsdl:port name="??" binding= "??"/>
...
<wsdl:port name="??" binding= "??"/>
</wsdl:service>
...
<wsdl:service name = "??">
...
</wsdl:service>
</wsdl:definitions>

2.3.2 Split File Representation

This is the separation of the WSDL and XSD into two separate files. The basic structure of the WSDL document is:

0001
0002
0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 0040 0042 0043 0044 0045 0046 0047 0048 0049 0050 0051 0052 0053 0054 0055 0056 0057 0058
<?xml version = "1.0" encoding = "UTF-8"?>
<wsdl:definitions name = "??" targetNamespace = "??">
<wsdl:types> <xsd:schema> <xsd:import namespace = "??" schemaLocation = "??"/> </xsd:schema> </wsdl:types> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> ... <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:portType name = "??"> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> ... <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> </wsdl:portType> ... <wsdl:portType name = "??"> ... </wsdl:portType> <wsdl:binding name = "??" type= "??"> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> </wsdl:binding> ... <wsdl:binding name = "??" type= "??"> ... </wsdl:binding> <wsdl:service name = "??"> <wsdl:port name="??" binding= "??"/> ... <wsdl:port name="??" binding= "??"/> </wsdl:service> ... <wsdl:service name = "??"> ... </wsdl:service> </wsdl:definitions>

The associated XSD file structure that is linked using the <xsd:import> statement (line 5 - in the shaded region) in the WSDL file is:

0001
0002
0003
0004
<?xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema>
...
</xsd:schema>

2.3.3 Service Split File Representation

This is the separation of the WSDL into two files (abstract definitions and service specific files) and the XSD as a single file. For the IMS GWS the recommended composition for the Abstract Definitions File is:

code

0001
0002
0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032
<?xml version = "1.0" encoding = "UTF-8"?>
<wsdl:definitions name = "??" targetNamespace = "??">
<wsdl:types> <xsd:schema> <xsd:import namespace = "??" schemaLocation = "??"/> </xsd:schema> </wsdl:types> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> ... <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:portType name = "??"> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> ... <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> </wsdl:portType> ... <wsdl:portType name = "??"> ... </wsdl:portType> </wsdl:definitions>

For the IMS GWS the recommended composition for the Specific Service File is (the link to the abstract definitions file is achieved using the '<wsdl:import> statement in line 3 - see the shaded region):

0001
0002
0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029
<?xml version = "1.0" encoding = "UTF-8"?>
<wsdl:definitions name = "??" targetNamespace = "??">
<wsdl:import namespace = "??" location = "??"/> <wsdl:binding name = "??" type= "??"> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> </wsdl:binding> ... <wsdl:binding name = "??" type= "??"> ... </wsdl:binding> <wsdl:service name = "??"> <wsdl:port name="??" binding= "??"/> ... <wsdl:port name="??" binding= "??"/> </wsdl:service> ... <wsdl:service name = "??"> ... </wsdl:service> </wsdl:definitions>

Each of the associated XSD file structures that are linked using the <xsd:import> statement (lines 5 to 7 - see the shaded region) in the abstract data definitions WSDL file have the structure:

0001
0002
0003
0004
<?xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema>
...
</xsd:schema>

2.3.4 Multiple File Representation

This is the separation of the WSDL into two files (abstract definitions and service specific files) and one or more XSD files as required. For the IMS GWS the recommended composition for the Abstract Definitions File is:

0001
0002
0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034
<?xml version = "1.0" encoding = "UTF-8"?>
<wsdl:definitions name = "??" targetNamespace = "??">
<wsdl:types> <xsd:schema> <xsd:import namespace = "??" schemaLocation = "??"/> ... <xsd:import namespace = "??" schemaLocation = "??"/> </xsd:schema> </wsdl:types> <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> ... <wsdl:message name = "??"> <wsdl:part name = "??" element = "??"/> </wsdl:message> <wsdl:portType name = "??"> <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> ... <wsdl:operation name = "??"> <wsdl:input message = "??"/> <wsdl:output message = "??"/> <wsdl:fault message = "??" name = "??"/> </wsdl:operation> </wsdl:portType> ... <wsdl:portType name = "??"> ... </wsdl:portType> </wsdl:definitions>

For the IMS GWS the recommended composition for the Specific Service File is (the link to the abstract definitions file is achieved using the <wsdl:import> statement in line 3 - see the shaded region):

0001
0002
0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029
<?xml version = "1.0" encoding = "UTF-8"?>
<wsdl:definitions name = "??" targetNamespace = "??">
<wsdl:import namespace = "??" location = "??"/> <wsdl:binding name = "??" type= "??"> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> <wsdl:operation name = "??"> <wsdl:input/> <wsdl:output/> <wsdl:fault name = "??"/> </wsdl:operation> </wsdl:binding> ... <wsdl:binding name = "??" type= "??"> ... </wsdl:binding> <wsdl:service name = "??"> <wsdl:port name="??" binding= "??"/> ... <wsdl:port name="??" binding= "??"/> </wsdl:service> ... <wsdl:service name = "??"> ... </wsdl:service> </wsdl:definitions>

Each of the associated XSD file structures that are linked using the <xsd:import> statement (lines 5 to 7 - see the shaded region) in the abstract data definitions WSDL file have the structure:

0001
0002
0003
0004
<?xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema>
...
</xsd:schema>

2.3.5 Structure Relationships and Naming Conventions

The Types, Message, Operation, Port Type, Binding, Port and Service elements in the set of WSDL files have strict relationships. To make these relationships we propose a naming convention. The default target namespace is allocated a prefix of 'tns:'. The naming conventions introduced here are further refined in Section 5.

2.3.5.1 Service Definitions

Several services can be defined. Each Service will be given a unique name and will have the string 'Service' at the end. An example of the WSDL is:

0001
0002
0003
0004
0005
0006
<wsdl:definitions>
...
<wsdl:service name = "PackagingService">
...
</wsdl:service>
</wsdl:definitions>

2.3.5.2 Port Definitions

Several ports can be defined for each service. The Port associates a binding with a network address. Ports that are bound to the same Port Type are treated as alternatives, i.e., two ports could be defined for the same Port Type but one port would use a SOAP binding and the other a HTTP-Post binding. Each Port will have a unique name and will have the string 'Port' at the end. The binding identified in the <wsdl:port> declaration must be defined elsewhere in the WSDL using the <wsdl:binding> element. An example of the WSDL is:

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
<wsdl:definitions>
...
<wsdl:service name = "PackagingService">
<wsdl:port name = "Packaging1SoapPort" binding = "tns:OpSet1SoapBinding">
...
</wsdl:port>
<wsdl:port name = "Packaging2SoapPort" binding = "tns:OpSet2SoapBinding">
...
</wsdl:port>
<wsdl:port name = "PackagingPostPort" binding = "tns:OpSet1PostBinding">
...
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

2.3.5.3 Binding Definitions

Every Port Type must have at least one binding. The binding defines the concrete protocol and data format for a particular Port Type. Each binding must have a unique name and will have the string 'Binding' at the end. The Port Type identified in the <wsdl:binding> element must be defined elsewhere n the WSDL using the <wsdl:portType> element. An example of the WSDL is:

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
<wsdl:definitions>
...
<wsdl:binding name = "OpSet1SoapBinding" type "tns:OpSet1PortType>
...
</wsdl:binding>
<wsdl:binding name = "OpSet2SoapBinding" type "tns:OpSet2PortType>
...
</wsdl:binding>
<wsdl:binding name = "OpSet1PostBinding" type "tns:OpSet1PortType>
...
</wsdl:binding>
...
</wsdl:definitions>

Note that for every binding name there must be an associated port usage (note the shaded words in the 'Port Definitions' and 'Binding Definitions' examples.

2.3.5.4 Port Type Definitions

The Port Type is an abstract set of operations supported by one or more end points. Each Port Type must have a unique name and will have the string 'PortType' at the end. An example of the WSDL is:

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
<wsdl:definitions>
...
<wsdl:portType name = "OpSet1PortType">
...
</wsdl: portType >
<wsdl:portType name = "OpSet2PortType">
...
</wsdl:portType>
...
</wsdl:definitions>

Note that every Port Type must be used in a binding. The relationship between the 'Port Type Definitions' and the 'Binding Definitions' is shown by the underlined phrases in the corresponding examples.

2.3.5.5 Operation Definitions

An operation is an abstract description of an action supported by the service. Operations are associated with a Port Type. Each operation within a Port Type must have a unique name and this name should be representative of the functional nature of the operation. An example of the WSDL is:

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
<wsdl:definitions>
...
<wsdl:portType name = "OpSet1PortType">
<wsdl:operation name = "createObject">
...
</wsdl:operation>
...
<wsdl:operation name = "deleteObject">
...
</wsdl:operation>
</wsdl: portType >
<wsdl:portType name = "OpSet2PortType">
<wsdl:operation name = "compressObjects">
...
</wsdl:operation>
...
<wsdl:operation name = "expandObjects">
...
</wsdl:operation>
</wsdl:portType>
...
</wsdl:definitions>

2.3.5.6 Message Definitions

A message is the abstract construct of the information being communicated. Messages are used to communicate the activity of the corresponding operations. The number of messages per operation depends upon the choreography for the service is 'one-way', 'request-response', solicit-response' or 'notification'. For the 'request-response' choreography the naming convention for the two messages is to take the name of the operation and append the string 'Request' for the message to the endpoint and the string 'Response' for the message from the end point. The example WSDL is:

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
<wsdl:definitions>
...
<wsdl:message name = "createObjectRequest">
...
</wsdl:message>
<wsdl:message name = "createObjectResponse">
...
</message>
<wsdl:message name = "deleteObjectRequest">
...
</wsdl:message>
<wsdl:message name = "deleteObjectResponse">
...
</wsdl:message>
<wsdl:message name = "compressObjectRequest">
...
</wsdl:message>
<wsdl:message name = "compressObjectResponse">
...
</wsdl:message>
<wsdl:message name = "expandObjectRequest">
...
</wsdl:message>
<wsdl:message name = "expandObjectResponse">
...
</wsdl:message>
...
<wsdl:portType name = "OpSet1PortType">
<wsdl:operation name = "createObject">
<wsdl:input message = "tns:createObjectRequest">
<wsdl:output message = "tns:createObjectResponse">
</wsdl:operation>
...
<wsdl:operation name = "deleteObject">
<wsdl:input message = "tns:deleteObjectRequest">
<wsdl:output message = "tns:deleteObjectResponse">
</wsdl:operation>
</wsdl: portType >
<wsdl:portType name = "OpSet2PortType">
<wsdl:operation name = "compressObjects">
<wsdl:input message = "tns:compressObjectRequest">
<wsdl:output message = "tns:compressObjectResponse">
</wsdl:operation>
...
<wsdl:operation name = "expandObjects">
<wsdl:input message = "tns:expandObjectRequest">
<wsdl:output message = "tns:expandObjectResponse">
</operation>
</wsdl:portType>
...
</wsdl:definitions>

Note that the message descriptions are linked to the operation descriptions and every message must be used in at least one operation. In the WSDL example above the naming convention is shown by the shaded and underlined phrases.

2.4 WS-I Basic Profile

The WS-I Basic Profile 1.1 [WSI, 04a] consists of a set of non-proprietary Web services specifications, plus clarifications, refinements, interpretations and amplifications of those specifications which promote interoperability. The Profile was developed according to a set of principles that, together, form the philosophy of the Profile, as it relates to bringing about interoperability. The principles are:

  1. No guarantee of interoperability - it is impossible to completely guarantee the interoperability of a particular service. However, the Profile does address the most common problems that implementation experience has revealed to date;
  2. Application semantics - although communication of application semantics can be facilitated by the technologies that comprise the Profile, assuring the common understanding of those semantics is not addressed by it;
  3. Testability - when possible, the Profile makes statements that are testable. However, such testability is not required. Preferably, testing is achieved in a non-intrusive manner, e.g., examining artifacts "on the wire";
  4. Strength of requirements - the Profile makes strong requirements, e.g., MUST, MUST NOT, wherever feasible; if there are legitimate cases where such a requirement cannot be met, conditional requirements, e.g., SHOULD, SHOULD NOT, are used. Optional and conditional requirements introduce ambiguity and mismatches between implementations;
  5. Restriction vs. relaxation - when amplifying the requirements of referenced specifications, the Profile may restrict them, but does not relax them, e.g., change a MUST to a MAY;
  6. Multiple mechanisms - if a referenced specification allows multiple mechanisms to be used interchangeably, the Profile selects those that are well understood, widely implemented and useful. Extraneous or underspecified mechanisms and extensions introduce complexity and therefore reduce interoperability;
  7. Future compatibility - when possible, the Profile aligns its requirements with in-progress revisions to the specifications it references. This aids implementers by enabling a graceful transition, and assures that WS-I does not 'fork' from these efforts. When the Profile cannot address an issue in a specification it references, this information is communicated to the appropriate body to assure its consideration;
  8. Compatibility with deployed services - backwards compatibility with deployed Web services is not a goal for the Profile, but due consideration is given to it. The Profile does not introduce a change to the requirements of a referenced specification unless doing so addresses specific interoperability issues;
  9. Focus on interoperability - although there are potentially a number of inconsistencies and design flaws in the referenced specifications, the Profile only addresses those that affect interoperability;
  10. Conformance targets - where possible, the Profile places requirements on artifacts, e.g., WSDL descriptions, SOAP messages, rather than the producing or consuming software's behaviors or roles. Artifacts are concrete, making them easier to verify and therefore making conformance easier to understand and less error-prone;
  11. Lower-layer interoperability - the Profile speaks to interoperability at the application layer; it assumes that interoperability of lower-layer protocols, e.g., TCP/IP , Ethernet, is adequate and well understood. Similarly, statements about application-layer substrate protocols (e.g., SSL /TLS , HTTP) are only made when there is an issue affecting Web services, specifically, WS-I does not attempt to assure the interoperability of these protocols as a whole. This assures that WS-I's expertise in and focus on Web services standards is used effectively.

The IMS GWS Base Profile [GWS, 05a] is heavily based upon the WS-I Basic Profile v1.1 [WSI, 04a] and the WS-I simple SOAP binding Profile v1.0 [WSI, 04d]. There are some points where the IMS GWS Base Profile differs from the WS-I equivalent. These differences are identified in Section 3 of [GWS, 05a].

3. WSDL Files for the Set of Communications Models

Three sets of transformation rules are required, one for each of the communication models that are to be supported by the bindings. The three communication models are:

3.1 Synchronous Communications Transformation Algorithms

3.1.1 Single File Representation

The transformation algorithm is used to create the single file WSDL/XSD representation shown in Figure 3.1.

Schematic of the synchronous communications single file binding
Figure 3.1 Schematic of the synchronous communications single file binding.

The binding files described in Figure 3.1 contain:

The name space prefixes used within this binding are listed in Table 3.1.

Table 3.1 Namespace prefixes used for the synchronous communications single file binding.

Namespace Usage
"tns:"
The target namespace identifier.
"xs:"
The XML schema definition namespace.
The reference is to: http://www.w3.org/2001/XMLSchema
"soap11:"
The SOAP references used within the WSDL files.
The reference is to: "wsisoapv1p1.xsd".
"wsdl11:"
The default WSDL files namespace for WSDL v1.1.
The reference is to: "wsiwsdlv1p1.xsd".

3.1.2 Split File Representation

The transformation algorithm is used to create the single WSDL and single XSD files representation shown in Figure 3.2.

Schematic of the synchronous communications split file binding
Figure 3.2 Schematic of the synchronous communications split file binding.

The binding files described in Figure 3.2 contain:

The name space prefixes used within this binding are listed in Table 3.2.

Table 3.2 Namespace prefixes used for the synchronous communications split file binding.

Namespace Usage
"tns:"
The target namespace identifier.
"data:"
The prefix for importing the XSD into the WSDL file.
"xs:"
The XML schema definition namespace.
The reference is to: http://www.w3.org/2001/XMLSchema
"soap11:"
The SOAP references used within the WSDL files.
The reference is to: "wsisoapv1p1.xsd".
"wsdl11:"
The default WSDL files namespace for WSDL v1.1.
The reference is to: "wsiwsdlv1p1.xsd".

3.1.3 Service Split File Representation

The transformation algorithm is used to create the service specific and abstract definition WSDL and single XSD files shown in Figure 3.3.

Schematic of the synchronous communications service split file binding
Figure 3.3 Schematic of the synchronous communications service split file binding.

The binding files described in Figure 3.3 contain:

The name space prefixes used within this binding are listed in Table 3.3.

Table 3.3 Namespace prefixes used for the synchronous communications service split file binding.

Namespace Usage
"tns:"
The target namespace identifier.
"data:"
The prefix for importing the XSD into the abstract definitions WSDL file.
"xs:"
The XML schema definition namespace.
The reference is to: http://www.w3.org/2001/XMLSchema
"abs:"
The abstract definitions file references.
The reference is to: "AbstractSyncv1p0.wsdl"
"soap11:"
The SOAP references used within the WSDL files.
The reference is to: "wsisoapv1p1.xsd".
"wsdl11:"
The default WSDL files namespace for WSDL v1.1.
The reference is to: "wsiwsdlv1p1.xsd".

3.1.4 Multiple File Representation

The transformation algorithm is used to create the multiple WSDL and XSD files shown in Figure 3.4. The binding files described in Figure 3.4 contain:

 

Schematic of the synchronous communications multiple file binding
Figure 3.4 Schematic of the synchronous communications multiple file binding.

The separation of the 'Service Specific' and 'Abstract Definition' files means that a new Service Specific binding can be created without changing the Abstract Definition. The Abstract Definition describes the behaviors in the UML model whereas the Service Specific file is responsible for binding these to the required transport protocol (in this document this is SOAP/http).

The name space prefixes used within these bindings are listed in Table 3.4.

Table 3.4 Namespace prefixes used for the synchronous communications multiple file binding.

Namespace Usage
"tns:"
The target namespace identifier.
'***:'
The set of prefixes that are to be used for the set of XSD data files.
"xs:"
The XML schema definition namespace.
The reference is to: http://www.w3.org/2001/XMLSchema
"msg:"
The message structure definition for the service operations.
The reference is to "MessSchemav1p0.xsd".
"iaf:"
The IMS common data model definitions namespace.
The reference is to: "CommonSchemav1p0.xsd".
"isb:"
The IMS message header binding definitions namespace.
The reference is to: "MessBindSchemav1p0.xsd".
"abs:"
The abstract definitions file references.
The reference is to: "AbstractSyncv1p0.wsdl"
"soap11:"
The SOAP references used within the WSDL files.
The reference is to: "wsisoapv1p1.xsd".
"wsdl11:"
The default WSDL files namespace for WSDL v1.1.
The reference is to: "wsiwsdlv1p1.xsd".

3.2 Asynchronous Communications Transformation Algorithms

At the current time IMS has not authorized the publication of the Asynchronous Communications transformation algorithms as Final Release. This is because there are no validated implementations of this technique and there is work underway in W3C that could result in that IMS approach becoming proprietary. This work remains published as Public Draft material [GWS, 05a].

3.3 Polled Communications Transformation Algorithms

At the current time IMS has not authorized the publication of the Polled Communications transformation algorithms as Final Release. This is because there are no validated implementations of this technique and there is work underway in W3C that could result in that IMS approach becoming proprietary. This work remains published as Public Draft material [GWS, 05a].

4. Creating a WSDL Binding

The process for creating a WSDL binding based upon the IMS GWS Base Profile is:

  1. The Information Model must be defined using the IMS Service UML Profile [GWS, 05f]. This profile describes how UML must be used to create a description of the specification that can be used by the IMS auto-generation tools. Note that the specification is created without explicit identification of the type of communications model to be supported by the binding, i.e., the nature of the communication model supported is defined when the binding is created;
  2. The UML description must be made available as an XMI file, i.e., this is an XML instance that conforms to the XMI specification. At the present time only XMI files that have been created by the Poseidon tool, v2.5 or later, are valid. The Poseidon tool creates a '.zuml' file that must be unzipped and the XMI file within used as input to the I-BAT;
  3. The XMI file is now used as input to the I-BAT. The XSL file 'UMLtoWSDLTransform.xsl' is applied to the XMI file, using an appropriate XSLT tool (Oxygen is the tool recommended by IMS) to generate the WSDL files. The XSL files automatically create the full set of WSDL files using a predetermined naming convention for the corresponding directory structure, the name(s) of the services and the communications model. The generation process also creates a validation report text file that can be used to identify any problems that the I-BAT found while creating the binding files.

The following points should be noted when using the I-BAT:

5. Base Profile WSDL Auto-generation

5.1 WSDL Auto-generation for Synchronous Communications

5.1.1 Single File Representation

The auto-generation files used to create the single file WSDL/XSD representation are shown in Figure 5.1.

Schematic of the synchronous communications single file auto-generation
Figure 5.1 Schematic of the synchronous communications single file auto-generation.

The transformation files are used to:

Details of these XSL files are given in I-BAT [GWS, 05f].

The transformation files use the information supplied in the UML description as described in Table 5.1. In Table 5.1 each attribute has an example value and for each set of values there follows the corresponding WSDL file. All of the attribute values are used in the single WSDL/XSD file.

Table 5.1 Synchronous single file auto-generation attribute usage.

Attribute Original Value
ServiceGroupModel Attributes
Service Group Package Name
ExampleGroup
WSDLv1.1:NameSpaceRoot
http://www.example/services/
WSDLv1.1:TargetNameSpaceLeaf
wsdlfilev1p0
WSDLv1.1:TargetNameSpacePrefix
tns
WSDLv1.1:AbstractFileNameSpaceLeaf
Unused
WSDLv1.1:AbstractFileNameSpacePrefix
Unused
WSDLv1.1:XSDLinkNameSpaceLeaf
Unused
WSDLv1.1:XSDLinkNameSpacePrefix
Unused
WSDLv1.1:MessageHdrNameSpaceLeaf
Unused
WSDLv1.1:MessageHdrNameSpacePrefix
Unused
<wsdl11:definitions name = "ExampleGroupSyncServices" 
targetNamespace = "http://www.example/services/wsdl/sync/wsdlfilev1p0"
xmlns:tns = "http://ww.example/services/wsdl/sync/wsdlfilev1p0"
xmlns:soap11 ="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl11 ="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
xmlns:xsi = "http://www.w3.org/2000/10/XMLSchema-instance">
ServiceModel Attributes
Service Package Name
EgServiceName
SOAPv1.1:AddressLocationRoot
http://www.example.soap/serviceuri/
SOAPv1.1:OperationActionRoot
http://www.example/soap/service/
<wsdl11:service name = "EgServiceNameSyncService">
<wsdl11:port name = "CoreOperationsNameSyncSoapPort" binding = "...">
<soap11:address
location="http://www.example.soap/serviceuri/EgServiceNameSyncServiceSoap/"/>
</wsdl11:port>
</wsdl11:service>
Interface Attributes
Interface Name
CoreOperationsName
createObject
deleteObject
updateObject
readObject
replaceObject
<wsdl11:binding name="CoreOperationsNameSyncSoapBinding" 
type="tns: CoreOperationsNameSyncPortType">
<soap11:binding transport="http://schema.xmlsoap.org/soap/http" style="document"/>
<wsdl11:operation name="createObject">
<soap11:operation soapAction="http://www.example/soap/service/createObject"
style="document"/>
...
</wsdl11:operation>
<wsdl11:operation name="replaceObject">
<soap11:operation soapAction="http://www.example/soap/service/replaceObject"
style="document"/>
...
</wsdl11:operation>
</wsdl11:binding>
<wsdl11:service name = "EgServiceNameSyncService">
<wsdl11:port name = "CoreOperationsNameSyncSoapPort"
binding = "tns:CoreOperationsNameSyncSoapBinding">
<soap11:address
location="http://www.example.soap/serviceuri/EgServiceNameSyncServiceSoap/"/>
</wsdl11:port>
</wsdl11:service>
DataModel Attributes
NameSpaceRoot
Unused
NameSpaceLeaf
Unused
NameSpacePrefix
Unused
SchemaVersion
IMS 1.0
QualifiedElements
Yes
QualifiedAttributes
No
<wsdl11:types>
<xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example/services/wsdl/sync/wsdlfilev1p0"
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
version="IMS 1.0"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
</xs:schema>
</wsdl11:types>

5.1.2 Split File Representation

The auto-generation files used to create the split file WSDL/XSD representation are shown in Figure 5.2.

Schematic of the synchronous communications split file auto-generation
Figure 5.2 Schematic of the synchronous communications split file auto-generation.

The transformation files are used to:

Details of these XSL files are given in I-BAT [GWS, 05f].

The transformation files use the information supplied in the UML description as described in Tables 5.2 and 5.3. In Tables 5.2 and 5.3 each attribute has an example value and for each set of values there follows the corresponding WSDL file. All of the attribute values are used in the split WSDL and XSD files.

Table 5.2 Synchronous WSDL split file auto-generation attribute usage.

Attribute Original Value
ServiceGroupModel Attributes
Service Group Package Name
ExampleGroup
WSDLv1.1:NameSpaceRoot
http://www.example/services/
WSDLv1.1:TargetNameSpaceLeaf
wsdlfilev1p0
WSDLv1.1:TargetNameSpacePrefix
tns
WSDLv1.1:AbstractFileNameSpaceLeaf
Unused
WSDLv1.1:AbstractFileNameSpacePrefix
Unused
WSDLv1.1:XSDLinkNameSpaceLeaf
Unused
WSDLv1.1:XSDLinkNameSpacePrefix
Unused
WSDLv1.1:MessageHdrNameSpaceLeaf
Unused
WSDLv1.1:MessageHdrNameSpacePrefix
Unused
<wsdl:definitions name = "ExampleGroupSyncServices" 
targetNamespace = "http://www.example/services/wsdl/sync/wsdlfilev1p0"
xmlns:tns = "http://ww.example/services/wsdl/sync/wsdlfilev1p0"
xmlns:soap11="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl ="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
xmlns:xsi = "http://www.w3.org/2000/10/XMLSchema-instance">
ServiceModel Attributes
Service Package Name
EgServiceName
SOAPv1.1:AddressLocationRoot
http://www.example.soap/serviceuri/
SOAPv1.1:OperationActionRoot
http://www.example/soap/service/
<wsdl:service name = "EgServiceNameSyncService">
<wsdl:port name = "CoreOperationsNameSyncSoapPort" binding = "...">
<soap11:address
location="http://www.example.soap/serviceuri/EgServiceNameSyncServiceSoap/"/>
</wsdl:port>
</wsdl:service>
Interface Attributes
Interface Name
CoreOperationsName
createObject
deleteObject
updateObject
readObject
replaceObject
<wsdl:binding name="CoreOperationsNameSyncSoapBinding" 
type="tns: CoreOperationsNameSyncPortType">
<soap11:binding transport="http://schema.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="createObject">
<soap11:operation soapAction="http://www.example/soap/service/createObject"
style="document"/>
...
</wsdl:operation>
<wsdl:operation name="replaceObject">
<soap11:operation soapAction="http://www.example/soap/service/replaceObject"
style="document"/>
...
</wsdl:operation>
</wsdl:binding>
<wsdl:service name = "EgServiceNameSyncService">
<wsdl:port name = "CoreOperationsNameSyncSoapPort"
binding = "tns:CoreOperationsNameSyncSoapBinding">
<soap11:address
location="http://www.example.soap/serviceuri/ EgServiceNameSyncServiceSoap/"/>
</wsdl:port>
</wsdl:service>
DataModel Attributes
NameSpaceRoot
http://www.imsglobal.org/xsd/
NameSpaceLeaf
exampleXSD
NameSpacePrefix
Unused
SchemaVersion
IMS 1.0
QualifiedElements
Yes
QualifiedAttributes
No
<wsdl11:types>
<xs:schema>
<xs:import namespace="http://www.imsglobal.org/xsd/exampleXSD"
schemaLocation="http://www.imsglobal.org/xsd/exampleXSD.xsd"/>
</xs:schema>
</wsdl11:types>