Configuring the message map to include the SOAP message
In IBM® Integration Bus, a SOAP message is described by a generic model that includes the SOAP Envelope and optionally Attachments. You define your SOAP message parts in a message map by using the Cast function.
About this task
A SOAP message consists of an Envelope and optionally Attachments. The envelope contains a SOAP header and a SOAP body. A SOAP body can include SOAP faults.
In IBM Integration Bus, when you use SOAP nodes, a SOAP message is described by a generic model. For more information, see SOAP tree overview.
In addition to the standard SOAP parts, the SOAP message generic model includes a Context part that includes contextual information about the current SOAP message being processed. This is the only part in a message map whose structure is included automatically. You must define the other SOAP message parts manually by using the Cast function.
The following table compares the SOAP message structure with the IBM Integration Bus SOAP message generic model:
|Standard SOAP message parts||Status||IBM Integration Bus SOAP message parts||IBM Integration Bus Status|
|SOAP header (part of the SOAP envelope)||Optional||Header (part of the SOAP_Domain_Msg)||Optional|
|SOAP body (part of the SOAP envelope)||Required||Body (part of the SOAP_Domain_Msg)||Required|
|SOAP faults (part of the SOAP body)||Optional||Fault (part of the Body)||Optional|
|SOAP Attachments||Optional||Attachment (part of the SOAP_Domain_Msg)||Optional|
In this scenario, you will learn how to configure your message map to map the standard SOAP message parts which make up the SOAP_Domain_Msg.
Complete the following steps to configure the SOAP_Domain_Msg when the Mapping node is connected directly from a SOAPInput node with no SOAPExtract node:
- Define a Move transform between the input Context object and the output Context object.
- Define a Move transform between
the input Header object and the output Header object.
The following figure shows the message map after you define a Move transform to copy the Header.
The SOAP Header element contains application-specific information, including attributes that define how you should process the SOAP message.
- Define the transformation for the Body object.
You define SOAP body parts by using the Cast function. You can cast attributes and other body parts. Then, define transforms between the input elements and the output elements in each body part that you have added.
Complete the following steps to define the SOAP body parts and their transformations:
- Cast the SOAP body xsd:any element into a specific type. For more information, see Casting the SOAP body into a specific type.
- Cast a SOAP body base type element to a derived type
element. A derived type element is also known as an extension type
element. For more information, see Configuring derived types in the SOAP body.
In a message map, you cast a base type to a derived type or extension type so that you can define transformations between subtypes of a data type. For example, addresses are represented differently for different countries. You might want to map addresses from different countries into a common complex structure for addresses.
- Create and configure the If, Else if, and Else transform to control the flow of the mapping between elements defined as a specific or a derived type in the input and output message assembly by setting conditions. For more information, see Configuring an If, Else if, and Else transform in a message map.
- Define a Move transform between the input Attachment object and the output Attachment object.
Your have configured a message map that transforms a SOAP message.
You now have a message map that transforms address data, based on the country of the address. The message map contains a nested map that uses the If, Else if, and Else transform that you defined.
The following figure shows the message map after you complete the previous steps:
What to do next
You have successfully completed the scenario. Your map is now ready to use.