IBM Integration Bus, Version 10.0.0.3 Operating Systems: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS


Designing a message map

You can use a message map to graphically transform, route, or update an external system. For best performance and capability, you must design it to include the most appropriate transforms.

Procedure

Consider the following guidance to design a message map:

  1. Design the data model of your input and output message per the solution requirements.

    The function of a message map is driven by the data models that define the input and the output message structures of a map. At run time, the Graphical Data Mapping engine must account for all possible states of the data when executing the transformations you have defined in the map against the data models. You may have control or not over the data models in your solution. If you can influence the data model, these are some of the key points to consider:

    1. Set the cardinality of each element in a data model to specific values whenever possible.

      When you define a logical model, you can configure the cardinality of each element by setting the minoccurs and the maxoccurs properties.

      Avoid, whenever possible, configuring maximum flexibility unless actually required. Only set minoccurs to 0, when an element needs to be optional. Only set maxoccurs above 1 if the element will actually repeat.

    2. Define an element as nillable when you know that the application will need to handle out of bound value in the data.
    3. Enable schema validation when you are developing a map. Disable validation in your test and production systems unless the solution requires validation enabled.

      Validation is the process of checking a message’s structure, and optionally the values within, based on a description called a schema. The Mapping node relies on schema definitions, but it does not enforce them. If the input message does not conform to the schema being used, the output you expect to see might not be produced. During the development of your integration solutions, it is recommended that you enable validation. However, for other environments such as test or production, you should only leave validation on if your solution requires it because of the extra processing involved.

      For more information, see Validating messages.

  2. Identify the type of message map.
    1. Use a message map to graphically transform, route, and enrich a message. You can use a message map to modify data in a database system.

      For more information, see Message maps.

    2. Use a submap to define a set of mapping functions that you can reuse in multiple message maps.

      For more information, see Submaps.

    For example, the Mapping node invokes a map that deals with a message assembly. You can put the mapping for common parts of the message data into a submap to enable reuse.

  3. Identify the input and output components to a message map.
    • You can select an XML schema, DFDL schema, or message set to define the message body.
    • You can choose any of the following message assembly components: the Properties tree, the local environment tree, or the environment tree.
    • You can add database tables.
    You should only include a component when you need to read data or write data:
    • To read elements of an input component, add the component to the input message assembly only. The Graphical Data Mapping editor passes to the output the input component unchanged.
    • To modify elements of an input component, add the component to the input message assembly and to the output message assembly. Then, define transforms between its elements.
    • To initialize an input component, that is, to create a new component in your output message, add the component only to the output message assembly.
    • To add an input component, add the component to the output message assembly and populate at least one field. The Graphical Data Mapping editor creates a new output structure containing the results of your transformations.
    • To delete an input component from the input message, add the component to the output message assembly and do not set any field.

    For more information, see Choosing a mapping action.

  4. For each output element, identify the transform and the input elements required to calculate its value.

    When the transformation of an element from input to output becomes more than just a simple Move, or type conversion (xs:type), you can call on the full set of standard XPath 2.0 operators and functions to manipulate the data as required.

    The Graphical Data Map editor offers the XPath functions as transform types in the pick list as well as in the content assist (Ctrl-space) when you edit expressions and conditions.

  5. Define a conditional expression for each transform to determine at run time whether the transform is applied or not.

    For more information, see Defining an XPath conditional expression for a transform.

  6. Use structural transforms to enhance the readability and maintenance of your map. Use the transforms Local Map or Submap to group transforms that require the same condition to determine whether they are applied in a map at run time.

    At run time, if the condition evaluates to tue, you obtain similar performance results whether all the transforms are in the main map or grouped into nested maps that are associated with structural transforms.

    Other advantages when you use structural transforms are the following:
    1. You can define a conditional expression that determines whether a nested map is applied at run time. For example if a set of child fields should only be mapped dependent on some attribute of the folder, place all the child elements inside an If transform. The nested map is executed when the condition evaluates to true.
    2. When you use a Local Map transform, you can convert the map to a submap if the need for reuse comes at a later stage. You can use an action in the Graphical Data Mapping editor to re-factor the Local Map into a Submap.
    3. You can use the Auto map wizard (automap) to automatically create Move transforms from input to output elements based on some correlation of the names of input and output elements to create mappings.

    For more information, see Using nested maps.

  7. When you need to process data, rather than just move it from source to target, use custom transforms to define specialized transformations.
    1. Custom XPath
    2. Custom Java
    3. Custom ESQL

    From a performance point of view, it is recommended that you use XPath transforms or the Custom XPath transform as your first choice, then Custom Java. You can also use Custom ESQL.


cm28400_.htm | Last updated 2015-11-27 00:02:21