首页手机Mirth Connect中区分通道自动与手动轮询的策略

Mirth Connect中区分通道自动与手动轮询的策略

圆圆2025-12-03 00:00:36次浏览条评论

mirth connect中区分通道自动与手动轮询的策略

论文探讨了Mirth Connect中区分通道是因部署启动而进行首次轮询,还是按计划自动轮询的问题,以便实现基于轮询类型的条件执行。通过在通道部署脚本中设置一个全局通道标志作为标志,并在源过滤器/转换器中检查并更新该标志,可以有效识别通道的首次轮询配置与后续计划轮询,从而实现精细化的流程控制。Mirth连接通道轮询类型识别与条件执行

在Mirth Connect中,有时根据通道的轮询方式(例如,是因部署而进行的“启动时轮询”,还是按预定计划进行的自动轮询)来是否执行特定的目的地。例如,后一个通道可能需要在部署时手动触发一次备份,但在夜间自动轮询时则不执行恢复操作。 Connect并没有直接提供一个内置变量来明确指示当前的轮询是手动触发还是自动触发。本文将介绍一种利用全局通道变量(Global Channel Map Variable)来间接实现这种区别的方法。问题背景

Mirth连接通道通常有两种主要的轮询触发机制:启动时轮询(Poll Once on Start):当通道配置或重新启动时,会立即执行一次轮询。这通常与手动配置操作相关联。计划轮询(Scheduled)轮询):根据源连接器中定义的调度(例如,Cron 表达式),在特定时间间隔自动执行轮询。

核心挑战提出如何在通道的源过滤器或转换器中识别当前正在执行的轮询属于哪种类型,以便根据此信息有条件解决启用或取消某些目的地。方案:利用全局通道信号部署作为标志

Mirth Connect 提供了一个globalChannelMap 对象,允许在通道的各个脚本之间共享数据。我们可以利用这一点,在通道配置时设置一个标志,并在每次轮询时检查并更新该标志。

步骤 1:在通道配置脚本中初始化配置标志

当通道被配置时,Mirth Connect 会执行其“配置脚本”(部署)我们可以在这里设置一个全局通道标志,例如NEW_DEPLOY,来指示通道刚刚被配置。

导航到配置脚本:在Mirth Connect管理员中,选择你的通道,然后点击“Scripts”选项卡,找到“部署脚本”。

初始化添加代码:在配置脚本中以下JavaScript代码://设置一个标志,指示通道刚刚被配置globalChannelMap.put('NEW_DEPLOY', true);返回;登录后复制

代码将NEW_DEPLOY变量设置为true,表示通道刚刚完成配置。

吐槽大师

吐槽大师(Roast Master) - 终极AI吐槽生成器,适用于Instagram,Facebook,Twitter,Threads 和 Linkedin 94 查看详情

步骤2:在源过滤器/转换器中检查并更新标志

在通道的源连接器(来源)

导航到源过滤器/转换器:在Mirth Connect管理员中,选择你的通道,然后点击“Source”选项卡,选择一个“Filter”或“Transformer”步骤。

添加检查和更新代码:在该脚本中添加以下JavaScript代码:if ($gc('NEW_DEPLOY') == true) { // 如果 NEW_DEPLOY 为 true,则表示这是部署后的首次轮询(“Poll Once on Start”;) logger.info(quot;NEW_DEPLOY WAS quot; $gc('NEW_DEPLOY') quot;,部署这是后面的首次轮询quot;); // 执行与首次部署轮询相关的逻辑,例如,启用特定目的地 // 重置 NEW_DEPLOY 标志为 false,以便后续轮询被识别为计划轮询 globalChannelMap.put('NEW_DEPLOY', false);} else { // NEW_DEPLOY 为 false,则表示这是后续的计划轮询logger.info(quot;NEW_DEPLOY WAS quot; $gc('NEW_DEPLOY') quot;,这是计划轮询quot;); //执行与计划轮询相关的逻辑,例如,取消特定目的地}登录后复制$gc('NEW_DEPLOY')是Mirth Connect中用于获取全局通道参数值的快捷方式。

首次执行时,NEW_DEPLOY为true,进入if块,执行首次轮询逻辑,并将其重置为false。后续的计划轮询,NEW_DEPLOY为false,进入else块,执行计划轮询逻辑。

步骤3:根据轮询类型控制目的地执行

一旦在源过滤器/转换器中识别了轮询类型,就可以将此信息传递下去,或者直接在此处根据条件控制后续目的地的行为。

例如,如果你想在首次配置轮询时只执行备份目的地,而在计划轮询时不执行恢复目的地,在源转换器中根据NEW_DEPLOY的状态来修改消息的元数据或直接操作destinationSet。//假设你有一个名为 'RestoreDestination' 的目的地 if ($gc('NEW_DEPLOY') == true) { // 部署后的第一次轮询,可能只执行备份,不执行恢复 // 可以在这里设置一个标志,供后续目的地过滤器使用channelMap.put('isFirstDeployPoll', true); } else { // 计划轮询,可能执行备份,但希望不执行恢复channelMap.put('isFirstDeployPoll', false); // 示例:如果在计划轮询时删除特定目的地 // var destinationName = 'RestoreDestination'; // if (destinationSet.containsKey(destinationName)) { // destinationSet.remove(destinationName); // }}登录后复制

然后,在“RestoreDestination”的目的地过滤器中,您可以检查channelMap.get('isFirstDeployPoll')的值来决定是否处理消息。注意事项与限制“手动轮询”的定义:该方法主要区分了“配置后的首次轮询”(通常与手动操作配置相关)与“所有后续的计划轮询”。它不能直接区别于用户Mirth连接仪表板上点击“Poll”按钮手动触发轮询(如果通道已经运行)。从 Mirth连接的再次角度看,这种手动触发的轮询在NEW_DEPLOY标志为假时,会被视为瞬时的计划轮询。服务器重启:Mirth Connect服务器重启,所有通道都会重新部署,NEW_DEPLOY标志将被设置为true,导致通道的首次轮询被识别为“部署后的首次轮询”。如果全局变量的范围:globalChannelMap变量仅在该特定通道内部可见和共享。代码位置:确保将代码保留在正确的脚本位置。配置脚本在通道启动执行时一次通过,而源过滤器/脚本在每次消息通过源连接器时执行。总结

巧妙地利用Mirth Connect的全局通道标记和通道脚本配置,我们可以有效地识别通道是刚刚配置后进行的第一次轮轮询,还是按预定计划进行的自动询。这为实现基于轮询类型的条件逻辑提供了基础,使得Mirth Connect通道的自动化流程更加灵活和灵活。

然而,对于需要区分“正在运行通道的手动触发轮询”与“计划轮询”的更复杂场景,可能需要考虑其他策略,例如使用独立的通道进行手动触发,或通过外部系统发送带有特定标志的消息来触发。

以上就是Mirth Connect中区分通道自动与手动轮询策略的详细内容,更多请乐哥健康网其他相关文章!大家都在看:JavaScript数值去小数位处理:多种方法与深入理解Java中动态网页内容的抓取与解析HtmlUnit中“承诺”未定义错误的解决方案与最佳实践Java Web Scraping:解析动态网页内容与官方API的最佳实践理解与处理动态网页内容:为什么直接HTML解析对现代内容实践有效?

Mirth Conn
python安装jupyter出现问题 python安装jupyter notebook教程
相关内容
发表评论

游客 回复需填写必要信息