使用 Compute 节点将输入消息的一部分复制到输出消息。此类复制的结果视所涉及的输入和输出解析器类型而定。
源和目标消息在根级别拥有相同的文件夹结构,这种情况下将执行相似解析器复制。例如:
SET OutputRoot.MQMD = InputRoot.MQMD;
将输入消息的 MQMD 文件夹中所有子代复制到输出消息的 MQMD 文件夹中。
以下是支持相似解析器复制的树结构的另一个示例:
SET OutputRoot.XML.Data.Account = InputRoot.XML.Customer.Bank.Data;
如果输入和输出消息都不在 MRM 域中,则您必须使用 Compute 节点并自己指定消息的结构。
源消息和目标消息在根级别上具有不同文件夹结构,这种情况下不能对消息源进行精确复制。相反,不相似解析器复制将源消息视为以叶名称-值对结尾的一组嵌套文件夹。例如,将以下消息从 XML 复制到 MRM:
<Name3><Name31>Value31</Name31>Value32</Name3>
生成名称元素 Name3 和具有值 Value31 的名称-值元素 Name31。第二个 XML pcdata(Value32)无法显示,并被废弃。
不相似解析器复制扫描源树,并复制文件夹(也称为名称元素)和叶名称-值对。不复制其他任何对象,包括由源解析器标记为特殊的元素。
以下是生成不相似解析器复制的树结构的一个示例:
SET OutputRoot.MRM.Data.Account = InputRoot.XML.Data.Account;
如果用来进行不相似解析器复制的算法不适合您的树结构,可能需要进一步限定源字段来限制所复制树的数量。
将信息从输入消息复制到不同域中的输出消息时,请小心操作。解析器将处理输出消息,对于不完全符合解析器规则的消息结构或内容,对创建该消息结构或内容的 ESQL 进行编码是可行的。这可能导致输出消息不被创建,或所创建的输出消息带有意外内容。如果您认为特定消息流生成的输出消息未包含正确的内容或不具有预期的格式,请检查创建输出消息的 ESQL,并查找结构、字段类型、字段名和字段值可能存在的不匹配情况。
-- Copy message to the output, moving from XML to MRM domains SET OutputRoot.MRM = InputRoot.XML; -- Set the CWF format for output by the MRM domain SET OutputRoot.Properties.MessageType = '<MessageTypeName>'; SET OutputRoot.Properties.MessageSet = '<MessageSetName>'; SET OutputRoot.Properties.MessageFormat = 'CWF';