消息映射技巧和限制

这些技巧假设您在消息流中已创建了 mapping 节点、已打开消息映射编辑器并且已选择源消息和目标消息:

源是一个列表,目标是来自源的列表,但在列表顶部具有新条目

  1. 展开目标,显示希望创建第一个新实例的元素。可能是结构或简单元素。
  2. 右键单击该元素,并单击 If。condition 行立即出现在下面。
  3. 右键单击该元素,并单击复制。移动到 condition 行,并单击粘贴。现在,在电子表格中有两个元素条目。
  4. 将这些条目中的第一个设置为您选择的值。这是第一个实例。
  5. 右键单击第二个条目,并单击 For。for 行出现在电子表格中。
  6. 将第二个条目设置为来自源的映射值。
  7. 将 for 条目设置为循环条件。
  8. 单击 for,然后将表示循环条件的源字段拖动到表达式编辑器。

更改目标运行时解析器

首次创建映射时,可以推荐一个用于目标消息的消息集。 与输出消息关联的解析器是与消息集关联的运行时解析器。例如,首次创建消息集时,缺省的运行时解析器为 MRM。这表示 Mapping 节点生成以下格式的 ESQL:
SET OutputRoot.MRM.Fielda...
如果将运行时解析器更改为 XML 或 XMLNSC,则 Mapping 节点生成以下格式的 ESQL:
SET OutputRoot.XMLNSC...
源消息的解析器由 MQRFH2 头或输入节点确定。 Mapping 节点可以处理输入消息上的所有解析器。Mapping 节点使用与消息集的运行时解析器相匹配的解析器生成目标消息。
  1. 打开消息集文件 messageset.mset
  2. 将运行时解析器更改为选择的值,保存为映射目的引用该消息集的消息流项目。
  3. 如果将解析器更改为 MRM,则部署消息集。
  4. 部署包含映射的消息流并测试 Compute 节点和其他节点中的 ESQL,确保这些节点仍具有所要求的功能。

覆盖数据库模式名称

要更改在 ESQL 中生成的数据库模式名称,请使用指定运行时模式对话框中的覆盖 RDB 模式向导,缺省值为导入到 Message Brokers Toolkit 中的数据库定义的模式名称。使用该对话框更改值。

映射批量消息

可以将多段式消息内排序、订购和分隔组件的消息映射配置到一系列的批量消息中。这些组件可以是消息或对象,并且还可以有不同的格式。在这种情况下,每个组件将被转换,并且消息在转发前将被重新集合。
  1. 使用消息流中的RouteToLabel 节点来接收作为输入消息的多段式消息。

    RouteToLabel 节点在 Mapping 节点之后,并且使该流自动跳向指定的标签。可以为输出消息集合的所有映射在分隔映射中指定一个 RouteToLabel 值。根据源消息中的值,也可以使用条件来设置 RouteToLabel 值。

  2. 使用消息映射编辑器构建单个节点中转换和传播批量消息的映射,不必定义介体数据结构。

多段式消息还可以包含重复的嵌入式消息,其中每个被重复的消息实例都是分别传播的。嵌入式消息必须来自与父消息相同的消息集。

映射限制

除非明确说明,否则可以通过调用 ESQL 函数或过程获得所需功能。此处有一些限制:
  • 无法映射混合内容字段。
  • 无法在 mapping 节点内直接抛出异常。
  • 无法在 mapping 节点内处理自定义的元素(当通配符表示嵌入式消息时,对通配符进行有限支持)。
  • 无法在 Mapping 节点中处理环境树。
  • 无法定义或设置用户变量。
  • 无法仿效 CASE 表达式;必须使用 if/else。
  • 无法为修改复制树中的元素将树从输入消息复制到输出消息。例如,无法在 Mapping 节点中模型化以下 ESQL:
    SET OutputRoot.MQMD = InputRoot.MQMD; SET OutputRoot.MQMD.ReplyToQ = 'NEW.QUEUE';
    如果您打算修改一个或多个同代字段,则必须分别设置结构中的每个字段。
相关概念
消息映射编辑器
MRM 解析器和域
XML 解析器和域
相关任务
正在开发 ESQL
相关参考
Mapping 节点
Compute 节点
RouteToLabel 节点
消息映射
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ar25245_