mirth 连接数据库 Reader 自动列映射

mirth connect Database Reader automatic column mapping

请有人确认以下内容.. 我正在使用 Mirth Connect 3.5.08232。 我的源连接器是一个数据库 Reader.

说,我正在使用 return 多行的查询,并且 return 结果(通过 JavaScript),如文档所示,这样 Mirth 会处理每一行作为单独的消息。我还使用了几个映射器作为源转换器,并将映射的字段保存在我的通道映射中(最终只包含我在转换器中定义的那些字段)

在目标中,特别是在目标响应转换器(或目标主体,如果它是 JavaScript 编写器)中,我如何访问源字段?

我通过反复试验找到的唯一方法是

var rawMsg = connectorMessage.getRawData();
var xmlMsg = new XML(rawMsg);
logger.info(xmlMsg.some_field); // ignore the root element of rawMsg

这样做正确吗?我认为也许可以将自动检测到的字段放入某种地图中,例如 sourceMap - 但情况似乎并非如此,对吗?

谢谢

如果您在转换器中使用 Mapper 步骤提取数据并将其放入变量映射(如通道映射),那么您可以使用以下任何方法从后续 JavaScript 上下文(包括 JavaScript 作者和您的响应转换器):

var value = channelMap.get('key');
var value = $c('key');
var value = $('key');

查看 User Guide 的变量映射部分了解更多信息。

回顾一下,假设您选择了一个包含数据库 Reader 的列 "mycolumn"。发送到频道的 XML 将是这样的:

<result>
    <mycolumn>value</mycolumn>
</result>

然后您可以选择将该消息的片段提取到特定变量中供以后使用。转换器允许您轻松拖放示例入站消息的片段。

最后,在您的 JavaScript Writer(或任何后续过滤器、转换器或响应转换器)中,只需将值拖到您想要的字段中:

并且会自动插入相应的JavaScript代码:

最后一点,如果您选择 很多 个变量并且不想为每个变量单独制作 Mapper 步骤,您可以使用 JavaScript遍历消息并将每一列提取到单独的映射变量中的步骤:

for each (child in msg.children()) {
    channelMap.put(child.localName(), child.toString());
}

或者,您可以直接从 JavaScript 编写器中引用列:

var msg = new XML(connectorMessage.getEncodedData());

var column1 = msg.column1.toString();
var column2 = msg.column2.toString();
...