源JavaScript中的快乐通道映射

源JavaScript中的快乐通道映射,javascript,mirth,Javascript,Mirth,在我的源代码连接器中,由于我的需求和参数,我正在使用javascript进行数据库工作 最终结果是存储数据 ifxResults = ifxConn.executeCachedQuery(ifxQuery); //var is declared 我需要在目标转换器中使用这些结果 我试过channelMap.put(“results”,ifxResults) 我得到以下错误ReferenceError:“channelMap”未定义。 我还尝试使用返回ifxResults,但我不确定如何在目标

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

最终结果是存储数据

ifxResults = ifxConn.executeCachedQuery(ifxQuery); //var is declared 
我需要在目标转换器中使用这些结果

我试过
channelMap.put(“results”,ifxResults)

我得到以下错误
ReferenceError:“channelMap”未定义。


我还尝试使用
返回ifxResults
,但我不确定如何在目标转换器中访问它。

是否要通过频道将每一行作为单独的消息发送?如果是这样,听起来您希望在JavaScript模式下使用数据库读取器。只需返回该结果集(如果您使用executeCachedQuery,那么它实际上是一个CachedRowSet),通道将处理其余部分,将每一行的XML表示作为离散消息分派

如果希望将结果集中的所有行聚合为一条消息,则很快就可以使用数据库读取器:

欢乐连接3.5将于下周发布,届时您可以充分利用它。但是,如果您不能等待或不想升级,那么您仍然可以使用JavaScript阅读器执行此操作:

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();
var processor=new org.apache.commons.dbutils.basicroprocessor();
var results=new com.mirth.connect.aduck.util.DonkeyElement(“”);
while(ifxResults.next()){
var result=results.addChildElement('result');
for(var entries=processor.toMap(ifxResults.entrySet().iterator();entries.hasNext();){
var entry=entries.next();
addChildElement(entry.getKey()、java.lang.String.valueOf(entry.getValue());
}
}
返回结果。toXml();

是否要通过频道将每一行作为单独的消息发送?如果是这样,听起来您希望在JavaScript模式下使用数据库读取器。只需返回该结果集(如果您使用executeCachedQuery,那么它实际上是一个CachedRowSet),通道将处理其余部分,将每一行的XML表示作为离散消息分派

如果希望将结果集中的所有行聚合为一条消息,则很快就可以使用数据库读取器:

欢乐连接3.5将于下周发布,届时您可以充分利用它。但是,如果您不能等待或不想升级,那么您仍然可以使用JavaScript阅读器执行此操作:

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();
var processor=new org.apache.commons.dbutils.basicroprocessor();
var results=new com.mirth.connect.aduck.util.DonkeyElement(“”);
while(ifxResults.next()){
var result=results.addChildElement('result');
for(var entries=processor.toMap(ifxResults.entrySet().iterator();entries.hasNext();){
var entry=entries.next();
addChildElement(entry.getKey()、java.lang.String.valueOf(entry.getValue());
}
}
返回结果。toXml();

我知道这个问题有点老了,但这里有一个答案仅供记录在案

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

问题是
channelMap
变量在通道的这一部分不可用。它仅适用于过滤器和变压器

您可以通过使用
globalChannelMap
变量来实现所需的功能,例如:

globalChannelMap.put("results", ifxResults);

我知道这个问题有点老了,但这里有一个答案供记录在案

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

问题是
channelMap
变量在通道的这一部分不可用。它仅适用于过滤器和变压器

您可以通过使用
globalChannelMap
变量来实现所需的功能,例如:

globalChannelMap.put("results", ifxResults);

当我一次处理一条记录并且需要将一些设置传递到目标频道时,我通常需要这样做。如果您像我以前那样执行此操作,那么您将首先在源通道的转换器中创建GlobalChannel Map键/值:

globalchannelMap.put("ProcID","TestValue");
然后转到Destinations(目的地)选项卡,选择您的目的地频道,以确保您正在将其发送到目的地(我从未对具有多个目的地的频道尝试过此操作,因此我不确定是否需要执行任何不同的操作)

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

现在转到目标频道的源转换器。您将在此处输入以下代码:

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

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

我通常需要在每次处理一条记录时执行此操作,并且需要将一些设置传递到目标通道。如果您像我以前那样执行此操作,那么您将首先在源通道的转换器中创建GlobalChannel Map键/值:

globalchannelMap.put("ProcID","TestValue");
然后转到Destinations(目的地)选项卡,选择您的目的地频道,以确保您正在将其发送到目的地(我从未对具有多个目的地的频道尝试过此操作,因此我不确定是否需要执行任何不同的操作)

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

现在转到目标频道的源转换器。您将在此处输入以下代码:

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