Input and output messages to a message map

In a message map, you must define a model for the input message and an output message. You can choose from a predefined message format, or you can use an XML, DFDL, or JSON schema message model, to define the structure of the data and provide information about the data type. Alternatively, you can define it dynamically in the map by using the Add User-Defined function.

When a message arrives to IBM® App Connect Enterprise, a parser is called. Each parser is suited for a particular type of message, and is known as a message domain. A parser converts the bit stream of an input message to an internal format. A parser is also called when a logical tree that represents an output message is converted into a bit stream.

Note: The data structure that you define in a message map for an input or an output message is the IBM App Connect Enterprise internal representation of the message.

Message domains

The following message domains are supported in a message map:
  • DFDL
  • XMLNSC
  • SOAP
  • DataObject
  • BLOB
  • JSON
  • MRM

Message assembly

In a message map, the source message assembly describes the input message and the target message assembly describes the output message.

A message assembly includes the properties tree, any relevant headers, the local environment tree, the Environment tree, and the message body.
  • When you create a top-level message map, only the Properties folder is initially included. A Move transformation from the input Properties folder to the output Properties folder is created by default where all input values are copied to the corresponding output values unchanged.
  • The structure of the Properties folder, the transport headers, and the local environment tree are predefined in IBM App Connect Enterprise.
  • You can define the local environment tree Variables folder structure by using the Cast function. You can also define elements of the Variables folder by using the Add User-Defined function.
  • You can define one or more elements under the Variables folder of the Environment tree. You can use the function to model Environment elements. Elements that are not defined in the map are maintained unchanged.
  • The input message body is defined by associating an input message model such as a DFDL schema, a JSON schema, or an XML schema. You can also define the input message body by using the Add User Defined function, for example, to define the structure of a JSON message.
  • The output message body is defined by associating an output message model such as a DFDL schema, a JSON schema, or an XML schema. You can also define the output message body by using the Add User Defined function, for example, to define the message body structure of a JSON message.

The Output domain property target message assembly is set to define the message domain in which an output message is to be built, based on the message type that you selected for the map output. You can change it if necessary.

The message map uses the schema types of the output elements to create and set the elements of the output message tree.

Message models

The following message models are supported in a message map:
  • Predefined message model
  • XML schema-based message model
  • DFDL schema-based message model for text and binary formats
  • JSON schema-based model, from a REST API swagger document, or a JSON schema in a shared library
  • Schemaless message model, that is, a message model of a message that has a well-defined format but no schema definition available as an xsd file.
You can select any of the following supplied message models as your input or output message format:
  • SOAP_Domain_Msg {}: Use this message model to handle messages in the SOAP domain; it allows you to add mapping casts to define the content of the SOAP body and header by using a schema model.
  • JSON Object Message: Use this message model for JSON object data in the JSON domain, by using the Add User Defined function.
  • JSON Array Message: Use this message model for JSON array data in the JSON domain, by using the Add User Defined function.
  • BLOB {}: Use this message model to handle messages in the BLOB domain, or when you do not need to process any message body data.