如何在BPMN中建模主流程暂停后从断点继续的场景?
BPMN建模:定时触发中断并恢复子流程的解决方案
针对你需要暂停主流程子流程、执行报告会议后从断点继续的需求,以下是几种可行的建模方案:
方案1:中断式定时边界事件 + 流程引擎状态持久化
- 为主流程内的目标子流程添加中断式定时边界事件,设置好触发间隔。触发时,引擎会暂停当前子流程的执行并保存任务状态与断点,随后启动报告会议子流程。
- 报告会议子流程完成后,通过流程引擎的内置机制(或配置序列流),直接恢复主流程子流程到中断前的任务节点(比如Task1执行时触发,恢复后从Task2继续)。
- 注意:该方案依赖Camunda、Activiti等主流BPMN引擎对中断状态的持久化支持,确保断点信息能被正确保存与读取。
方案2:拆分主流程子流程为独立任务 + 事件网关
- 将原主流程子流程的Task1、Task2、Task3拆分为主流程中的独立任务节点,给每个任务节点都添加中断式定时边界事件,指向报告会议子流程。
- 当定时事件触发时,当前执行的任务会被中断,进入报告会议流程;会议完成后,通过序列流直接跳转至被中断任务的下一个节点(比如Task1被中断则跳至Task2)。
- 优势:无需复杂的子流程状态管理,适合线性结构的简单流程,建模直观易维护。
方案3:事件子流程(Event Subprocess)+ 中断触发
- 在主流程子流程内部定义一个事件子流程,将触发事件设置为定时事件,并标记为中断型。
- 定时事件触发时,主流程子流程的当前执行会被立即中断,转而执行事件子流程内的报告会议逻辑。
- 事件子流程完成后,主流程子流程会自动从被中断的位置继续执行,无需额外配置跳转逻辑(需引擎支持该中断恢复机制)。
关键提醒
- 绝对不要使用非中断定时事件,这类事件会保留原流程的执行分支,导致主流程子流程与报告会议流程并行运行,完全不符合暂停等待的需求。
- 不同BPMN引擎对中断恢复的细节实现可能有差异,建模前建议核对所用引擎的官方文档,确保流程逻辑能被正确解析执行。
内容的提问来源于stack exchange,提问作者Antonia
相关产品推荐
相关产品推荐

