
本文详细介绍了在mirth connect中如何区分通道的自动(计划)轮询与部署时的首次轮询(可视为手动触发),从而实现基于轮询类型的条件逻辑。通过在部署脚本中设置一个全局通道变量作为标志,并在源过滤器/转换器中检查并重置该标志,可以有效识别不同轮询事件,进而控制目的地(destination)的执行,解决诸如备份与恢复任务的场景需求。
在Mirth Connect通道开发中,有时需要根据通道的轮询方式(自动计划轮询或手动/部署时轮询)来执行不同的业务逻辑,例如有条件地启用或禁用某些目的地(Destination)。直接访问Mirth Connect的内部轮询设置通常较为复杂且不推荐。本文将介绍一种通过全局通道变量(Global Channel Map Variable)来有效区分轮询类型并实现条件逻辑的实用方法。
假设一个Mirth Connect通道需要实现文件备份和恢复功能。通道应在每晚自动轮询以备份文件,但在手动触发时(例如,通道部署后首次轮询或手动点击“立即轮询”),则可能需要执行文件恢复操作。核心挑战在于,如何在源过滤器或转换器中识别当前轮询是自动计划的还是手动触发的,从而决定是否执行恢复目的地。
直接尝试通过Packages.com.mirth.connect.donkey.model.channel.CronProperty().getExpression()等方法获取轮询设置通常会遇到方法不存在的错误,因为这些内部API可能不直接暴露或需要特定的实例化过程。
Mirth Connect提供了一个名为globalChannelMap的机制,允许在通道内部的各个脚本(部署脚本、源过滤器、源转换器、目的地转换器等)之间共享数据。我们可以利用它设置一个标志位,来区分通道部署后的首次轮询与后续的计划轮询。
通道的部署脚本(Deploy Script)在通道每次部署时执行。我们可以在这里设置一个标志,指示通道刚刚被部署。
脚本位置: Mirth Connect Dashboard -> Channels -> 选择你的通道 -> Scripts -> Deploy Script
示例代码:
// 在通道部署时,设置一个全局通道变量'NEW_DEPLOY'为true
globalChannelMap.put('NEW_DEPLOY', true);
logger.info("通道已部署,设置 NEW_DEPLOY 标志为 true。");
return;解释: 当通道被部署或重新部署时,NEW_DEPLOY变量会被设置为true。这标志着通道进入了一个新的运行周期,通常伴随着“Poll Once on Start”选项的触发,可以被视为一种“手动”或“初始化”轮询。
在通道的源过滤器或源转换器中,我们可以检查NEW_DEPLOY标志的状态。
脚本位置: Mirth Connect Dashboard -> Channels -> 选择你的通道 -> Source -> Filter 或 Transformer
示例代码:
// 获取全局通道变量'NEW_DEPLOY'的值
var isNewDeploy = $gc('NEW_DEPLOY');
if (isNewDeploy == true) {
logger.info("检测到 NEW_DEPLOY 标志为 true,当前为部署后的首次轮询。");
// 重置标志,确保后续的计划轮询不会被误判为首次部署轮询
globalChannelMap.put('NEW_DEPLOY', false);
// 执行部署后首次轮询的特定逻辑,例如:
// 移除备份目的地,只执行恢复目的地
// destinationSet.removeAllExcept(['RecoveryDestination']);
} else {
logger.info("检测到 NEW_DEPLOY 标志为 false,当前为计划轮询。");
// 执行计划轮询的特定逻辑,例如:
// 移除恢复目的地,只执行备份目的地
// destinationSet.removeAllExcept(['BackupDestination']);
}
// 继续处理消息
return true; 解释:
通过在Mirth Connect的部署脚本中巧妙地设置一个全局通道变量,并在源过滤器/转换器中检查并重置该变量,我们可以有效地识别通道是处于部署后的首次轮询状态还是常规的计划轮询状态。这种方法为实现基于轮询类型的复杂条件逻辑提供了强大的支持,尤其适用于需要区分初始化操作与常规自动化任务的场景,如文件备份与恢复。虽然对于所有类型的“手动”轮询(例如,通道运行时手动点击“Poll Now”)可能存在局限性,但它解决了大部分实际应用中区分部署时轮询与计划轮询的需求。
以上就是Mirth Connect中区分自动与手动轮询以实现条件逻辑的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号