欢乐连接数据库阅读器自动列映射

时间:2017-08-10 14:37:48

标签: mirth mirth-connect

请有人确认以下内容.. 我正在使用Mirth Connect 3.5.08232。 我的Source Connector是一个数据库阅读器。

说,我正在使用返回多行的查询,并返回结果(通过JavaScript),如文档所示,以便Mirth将每行视为单独的消息。我还使用几个映射器作为源变换器,并将映射的字段保存在我的通道映射中(最终只包含我在变换器中定义的那些字段)

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

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

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

这是正确的方法吗?我想也许那些被很好地自动检测到的字段会放在某种地图中,比如sourceMap - 但事实并非如此,对吗?

谢谢

1 个答案:

答案 0 :(得分:3)

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

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

请查看User Guide的“变量地图”部分以获取更多信息。

所以回顾一下,说你选择了一个专栏" mycolumn"使用数据库阅读器。发送到频道的XML将是这样的:

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

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

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

将自动插入相应的JavaScript代码: Inserted Code

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

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

或者,您可以直接从JavaScript Writer中引用列:

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

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