如何在 Mirth Connect JavaScript Reader Source Connector 中获取频道信息?
How do I get channel information in a Mirth Connect JavaScript Reader Source Connector?
我正在使用 Mirth Connect Server 3.8.1,我正在使用 JavaScript Reader 作为频道的源连接器。我正在尝试获取当前频道 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 部分应该知道它在为谁工作。
如何从脚本中获取此信息?
更新:答案"This should work"基本上是正确的,因为事实证明这在全新的渠道中确实有效。我使用的频道是导入的,虽然我找不到影响该频道的其他脚本,但它显然已损坏。所以可能真正的答案是 "Mirth Connect Server 3.8.1 has a bug that causes this to sometimes not work and the workaround is creating a new channel."
更新 2: 罪魁祸首后来证明是我在本地范围内使用了 channelId
变量,大致如下:
for (var i=0; i<allChannelIds.size(); i++) {
var channelId = allChannelIds.get(i);
// Other code
}
我在意识到存在全局范围 channelId
变量和需要它之前写了这篇文章。显然这会将其重置为 undefined
。如果每次脚本执行时都设置了全局 channelId
,这应该不是问题,但显然情况并非如此。
你可能把事情复杂化了。
在 Mirth 3.5.1 中,以下代码在频道源连接器上的 Transformer 中对我来说工作正常:
logger.info("Channel ID: "+channelId);
结果是这样的:
[2020-02-25 13:03:30,033] INFO (transformer:?): Channel ID: 1122e1c7-34af-4141-9388-533005346d0b
此 ID 与显示在 Mirth 仪表板和频道摘要页面上的 ID 相匹配。
我还验证了代码在 Javascript Reader 中有效。在这种情况下,记录的消息是
[2020-02-25 14:33:20,004] INFO (js-connector:?): Channel ID: 1122e1c7-34af-4141-9388-533005346d0b
我正在使用 Mirth Connect Server 3.8.1,我正在使用 JavaScript Reader 作为频道的源连接器。我正在尝试获取当前频道 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 部分应该知道它在为谁工作。
如何从脚本中获取此信息?
更新:答案"This should work"基本上是正确的,因为事实证明这在全新的渠道中确实有效。我使用的频道是导入的,虽然我找不到影响该频道的其他脚本,但它显然已损坏。所以可能真正的答案是 "Mirth Connect Server 3.8.1 has a bug that causes this to sometimes not work and the workaround is creating a new channel."
更新 2: 罪魁祸首后来证明是我在本地范围内使用了 channelId
变量,大致如下:
for (var i=0; i<allChannelIds.size(); i++) {
var channelId = allChannelIds.get(i);
// Other code
}
我在意识到存在全局范围 channelId
变量和需要它之前写了这篇文章。显然这会将其重置为 undefined
。如果每次脚本执行时都设置了全局 channelId
,这应该不是问题,但显然情况并非如此。
你可能把事情复杂化了。
在 Mirth 3.5.1 中,以下代码在频道源连接器上的 Transformer 中对我来说工作正常:
logger.info("Channel ID: "+channelId);
结果是这样的:
[2020-02-25 13:03:30,033] INFO (transformer:?): Channel ID: 1122e1c7-34af-4141-9388-533005346d0b
此 ID 与显示在 Mirth 仪表板和频道摘要页面上的 ID 相匹配。
我还验证了代码在 Javascript Reader 中有效。在这种情况下,记录的消息是
[2020-02-25 14:33:20,004] INFO (js-connector:?): Channel ID: 1122e1c7-34af-4141-9388-533005346d0b