如何在Event-Based Gateway(事件网关)上实现邮件提醒功能?
Camunda 7.19流程模型修改方案(并行处理消息等待与循环提醒)
核心调整思路
把原有的「事件网关二选一」逻辑,改成「并行网关拆分双分支」,让消息等待和循环提醒两个流程独立并行执行,同时保证审批消息到达时能终止提醒循环。
具体模型修改步骤
替换事件网关为并行网关
- 删除原有的Event-Based Gateway,换成Parallel Gateway,拆分出两条并行执行的路径:
- 路径1:专门负责等待审批消息
- 路径2:专门负责循环发送提醒邮件
- 删除原有的Event-Based Gateway,换成Parallel Gateway,拆分出两条并行执行的路径:
配置消息等待路径(路径1)
- 在路径1中保留原有的
Message Intermediate Catch Event(等待审批触发的消息) - 消息捕获完成后,添加一个
Signal Throw Event,配置自定义信号(比如stop_reminder),用来通知提醒路径终止循环
- 在路径1中保留原有的
配置循环提醒路径(路径2)
- 在路径2中添加一个Event-Based Gateway,设置两个触发选项:
- 选项1:
Timer Intermediate Catch Event(保留原有的循环配置,比如每10分钟触发一次) - 选项2:
Signal Catch Event,关联步骤2中定义的stop_reminder信号
- 选项1:
- 定时器触发后,执行原有的
Approval Person erinnern外部任务,任务完成后回到Event-Based Gateway,继续等待下一次定时器触发或终止信号 - 当收到
stop_reminder信号时,直接结束该分支
- 在路径2中添加一个Event-Based Gateway,设置两个触发选项:
合并分支与后续流程
- 两个分支都完成后(消息捕获+提醒终止,或提醒先终止再处理消息),通过Parallel Gateway合并,进入后续工作流环节
关键配置说明
- 信号(Signal)要配置为流程实例范围,避免影响其他流程实例,在Camunda模型器中设置信号的
Scope为Process Instance - 确保
Signal Catch Event和Signal Throw Event使用完全一致的信号名称,防止匹配失败
原方案失效原因
原方案里事件网关只能二选一触发,定时器触发后流程离开网关进入邮件发送任务,此时消息捕获事件已不在当前流程路径中,自然无法接收消息。改成并行分支后,两条路径独立运行,消息捕获事件始终处于活跃状态,不会被提醒流程阻塞。
内容的提问来源于stack exchange,提问作者Humke
相关产品推荐
相关产品推荐

