源JavaScript中的Mirth channelMap

问题描述 投票:1回答:3

在我的源连接器中,由于我的要求和参数,我正在使用javascript进行数据库工作。

最终结果是存储数据。

ifxResults = ifxConn.executeCachedQuery(ifxQuery); //var is declared 

我需要在目标转换器中使用这些结果。

我试过channelMap.put("results", ifxResults);

我得到以下错误ReferenceError: "channelMap" is not defined.

我也试过使用return ifxResults,但我不知道如何在目标变换器中访问它。

javascript mirth
3个回答
0
投票

您想通过频道将每一行作为单独的邮件发送吗?如果是这样,听起来好像你想在JavaScript模式下使用数据库阅读器。只返回ResultSet(如果你像这样使用executeCachedQuery,它实际上是一个CachedRowSet),并且通道将处理其余部分,将每行的XML表示作为离散消息分派。

如果要将聚合的结果集中的所有行发送到单个消息中,很快就可以使用Database Reader:MIRTH-2337

Mirth Connect 3.5将于下周发布,以便您可以利用它。但是,如果您不能等待或不想升级,那么您仍然可以使用JavaScript Reader执行此操作:

var processor = new org.apache.commons.dbutils.BasicRowProcessor();
var results = new com.mirth.connect.donkey.util.DonkeyElement('<results/>');

while (ifxResults.next()) {
    var result = results.addChildElement('result');
    for (var entries = processor.toMap(ifxResults).entrySet().iterator(); entries.hasNext();) {
        var entry = entries.next();
        result.addChildElement(entry.getKey(), java.lang.String.valueOf(entry.getValue()));
    }
}

return results.toXml();

0
投票

我知道这个问题有点陈旧,但这里只是记录的答案。

对于这个答案,我假设您正在使用源连接器类型的JavaScript Reader,并且您尝试在JavaScript Reader Settings编辑窗格中使用channelMap

问题是channelMap变量在这部分频道中不可用。它仅适用于滤波器和变压器。

您可以通过使用globalChannelMap变量来完成您想要的任务,例如:

globalChannelMap.put("results", ifxResults);

0
投票

当我一次处理一条记录并需要将一些设置传递到目标通道时,我通常需要这样做。如果你像我过去那样做,那么你首先要在源通道的变换器中创建一个globalChannelMap键/值:

globalchannelMap.put("ProcID","TestValue");

然后转到“目的地”选项卡并选择目标频道以确保将其发送到目的地(我从未尝试过将其用于具有多个目的地的频道,因此我不确定是否需要做任何不同的事情)。

Destination tab of source channel

请注意,ProcID现在列在“目标映射”框中。单击Map Variable框旁边的New按钮,您将看到Variable 1出现。双击它并输入映射键,在本例中为ProcID。

现在转到目标通道的源变换器。在那里你可以输入以下代码:

var SentValue = sourceMap.get("ProcID");

现在,当您的源通道放弃控制时,目标转换器中的SentValue具有ProcID中的任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.