在我的源连接器中,由于我的要求和参数,我使用javascript进行数据库工作。
ifxResults = ifxConn.executeCachedQuery(ifxQuery); //var is declared
我需要在目标转换器中使用这些结果。
我已经试过channelMap.put("results", ifxResults);
了。
我得到以下错误ReferenceError: "channelMap" is not defined.
我也尝试过使用return ifxResults
,但我不确定如何在目标转换器中访问它。
发布于 2017-04-25 02:53:36
是否要通过通道将每行作为单独的消息发送?如果是这样的话,听起来你想在JavaScript模式下使用数据库阅读器。只需返回ResultSet (如果您像那样使用CachedRowSet,它实际上是一个executeCachedQuery ),通道将处理其余部分,将每一行XML表示作为离散消息分派。
如果您希望将结果集中的所有行聚合到一条消息中发送,那么使用数据库读取器很快就可以做到这一点:MIRTH-2337
快乐连接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();
发布于 2019-03-20 04:03:40
我知道这个问题有点老生常谈了,但这里有一个仅供记录的答案。
对于这个问题,我假设您使用的是JavaScript阅读器的源连接器类型,并且您正在尝试使用JavaScript阅读器设置编辑窗格中的channelMap
。
问题是channelMap
变量在通道的这一部分不可用。它只在过滤器和转换器中可用。
可以通过使用globalChannelMap
变量来实现您想要的功能,例如
globalChannelMap.put("results", ifxResults);
https://stackoverflow.com/questions/43595266
复制相似问题