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