数据流可能因外部系统无响应、节点异常或资源不足而长期停留在队列中或进行中。这些实例持续占用并发资源,也会影响后续调度,因此需要按统一规则识别并终止超时实例。
主流程先找出当前仍有运行中实例的数据流元素,再批量调用子流程。子流程查询每个元素的未完成实例,根据允许的最长运行时间筛选超时记录,最后统一调用终止接口。
查询有运行中实例的数据流
→ 按元素批量调用子流程
→ 查询 QUEUED / STARTED 实例
→ 筛选超时实例
→ 批量终止
筛选需要检查的数据流
主流程调用 /flow/list,筛选 inProcessCount > 0 的元素,并将元素信息传给单元素终止子流程。
查询未完成实例
子流程调用 /monitor/runs,只查询 QUEUED 和 STARTED 状态。元素编码和文件夹 ID 均由主流程传入。
判断是否超时
根据实例创建时间或开始时间与业务允许时长比较,只保留真正需要终止的实例。本 DEMO 使用“创建时间早于前一天”作为示例,实际项目应改为各数据流自己的超时标准。
调用终止接口
提取筛选结果中的 runId,调用 /run/terminate。没有符合条件的实例时直接结束,不调用接口。
配置完成后,超时实例会变为已终止,未达到超时条件的实例不受影响。终止可能留下中间业务数据,因此设置规则前必须确认相关流程支持中断、补偿或重跑。
回到顶部
咨询热线
