Standards for Technology in Automotive Retail

 
 Home -  News Feed 

4.5. Generic WSDL Example

How is the generic transport implemented by STAR? As has been outlined in Chapter 2, Common Components, the generic transport will implement the Manifest, and Content elements in the Soap Header and Body respectively.

Figure 4.2. Generic Transport

Generic Transport

As is depicted in the figure below, the WSDL implements the ProcessMessage, PutMessage, and PullMessage methods and operations. The following examples will use the ProcessMessage method to indicate the structure of the SOAP Body. A sample Generic Transport WSDL can be found with the STAR Schema Repository.

Figure 4.3. Generic Payload Element Definition

Generic Payload Element Definition

The generic transport will use one common payload element definition.This is the Payload type. The payLoad type contains the definition for the content elements.

Figure 4.4. Generic Element

Generic Element

The Generic content element refers to a complex Type definition that defines an xsd:any as the content for the element. What this says, is that any type of XML or Text can be put here. It is not locked to a particular type of data to be sent or received. Information about the content is located in the Manifest elements and linked by an id. There may be unlimited number of content elements sent in the payload, and each links back to a particular manifest element.

The receiving web service would process the Manifest to determine what it actually received, and do any appropriate routing or processing of the payload contained within it.

Example 4.1. Sample Generic Message

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                      xmlns:starws="http://www.starstandard.org/webservices/2009/transport">
   <soapenv:Header>
      <starws:payloadManifest>
         <!--Zero or more repetitions:-->
         <starws:manifest contentID="?" namespaceURI="?" element="?" relatedID="?" 
                    version="?"/>
      </starws:payloadManifest>
   </soapenv:Header>
   <soapenv:Body>
      <starws:ProcessMessage>
         <starws:payload>
            <!--Zero or more repetitions:-->
            <starws:content id="?">
               <!--You may enter ANY elements at this point-->
            </starws:content>
         </starws:payload>
      </starws:ProcessMessage>
  </soapenv:Body>
</soapenv:Envelope>