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();
...
请有人确认以下内容.. 我正在使用 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();
...