In WebSphere® Message Broker,
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 envelop contains a SOAP header
and a SOAP body. A SOAP body can include SOAP faults.
In WebSphere Message Broker,
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 WebSphere Message Broker SOAP
message generic model:
Table 1. Comparison between the SOAP
message structure and the WebSphere Message Broker SOAP
message representationStandard SOAP message parts |
Status |
WebSphere Message Broker SOAP
message parts |
WebSphere Message Broker Status |
|
|
Context |
Required |
SOAP header (part of the SOAP envelop) |
Optional |
Header (part of the SOAP_Domain_Msg) |
Optional |
SOAP body (part of the SOAP envelop) |
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 learn how to configure your message
map to map the standard SOAP message parts which make up the SOAP_Domain_Msg.
Procedure
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.
Results
Your have configured a message map that transforms a SOAP
message.
When you use an
If, Else if, and Else transform
between your
SOAP_Domain_Msg input object and
SOAP_Domain_Msg output
object, you must manually configure each element in the
SOAP_Domain_Msg.
You must map each element in the
SOAP_Domain_Msg input
object to the corresponding output object so that you do not loose
the information of the element.
Note: Elements that are part of the
input object and do not have a transform defined to an output object
are deleted from the output structure and their value is lost.
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.