【发布时间】:2020-02-17 20:09:45
【问题描述】:
我正在使用 Mirth Connect Server 3.8.1,并且我正在使用 JavaScript 阅读器作为频道的源连接器。我正在尝试获取当前的频道 ID,但似乎这是不可能的。谷歌搜索后,我尝试了以下操作以查看是否产生任何结果,但没有:
logger.info(typeof channelId != 'undefined' ? ChannelUtil.getDeployedChannelName(channelId) : 'N/A');
logger.info(typeof connector != 'undefined' ? connector : 'N/A');
logger.info(typeof channel != 'undefined' ? channel : 'N/A');
这只会在日志中产生三个“N/A”。显然我可以对频道 ID 进行硬编码,但我想最终导出此配置并能够将其导入其他环境而无需编辑任何内容。另外,感觉就像 JS 的 Source Connector 部分应该知道它为谁工作。
如何从脚本中获取这些信息?
更新:“这应该有效”的答案基本上是正确的,因为事实证明这在一个全新的渠道中确实有效。我正在使用的频道已导入,虽然我找不到其他影响该频道的脚本,但它显然已损坏。所以真正的答案可能是“Mirth Connect Server 3.8.1 有一个错误导致它有时无法正常工作,解决方法是创建一个新频道。”
更新 2:后来发现罪魁祸首是我在本地范围内使用 channelId 变量,类似于:
for (var i=0; i<allChannelIds.size(); i++) {
var channelId = allChannelIds.get(i);
// Other code
}
我在意识到有一个全局范围 channelId 变量之前和需要它之前写了这个。显然这会将其重置为undefined。如果每次脚本执行时都设置了全局channelId,这应该不是问题,但显然情况并非如此。
【问题讨论】:
-
我希望
channelId能够工作。 @Neils 的回答表明这可以在较旧的 mirth 版本中使用,但我没有理由相信这种情况已经改变。connector不会在 Javascript 阅读器上下文中定义,我不知道channel会在任何上下文中定义。可能您有其他代码导致您的问题?如果您在一个全新的频道中尝试它,它是 Javascript 阅读器中唯一的代码,您会得到相同的结果吗?是否有分配给此通道的任何代码模板可能会造成冲突? -
@agermano 我尝试了你的建议并创建了一个全新的频道,在源 JavaScript 阅读器中复制粘贴下面的 Neils 行后,它就像一个魅力。将同一行粘贴到原始的 Source JavaScript Reader 中仍然会导致打印“未定义”。因此,该频道一定有问题。该频道非常简单,我没有找到任何其他可能导致此问题的脚本。该通道的唯一区别是它是从另一个环境导出/导入的。无论如何,现在有一个解决方法,谢谢!
标签: javascript mirth