终止任务
终止任务 用于主动终止当前工作流的执行,并记录终止原因。它是流程控制类节点,常用于检测到严重错误、需要人工取消,或需要及时释放资源时强制结束流程。
指令标识:DiscardTask
指令类型:逻辑控制指令
指令描述:终止任务
先选使用方式
Section titled “先选使用方式”终止任务 是流程控制节点,两种方式都只是「在满足条件时结束流程」。
| 方式 | 怎么用 | 适合人群 |
|---|---|---|
| 可视化编排(推荐先学) | 拖入「终止任务」节点,填写终止原因 | 大多数用户,零代码 |
| 代码编排(Python) | 直接使用 Python 原生的 return / raise 结束流程 | 熟悉代码的用户 |
第一次使用建议先用可视化编排跑通。下方「参数说明」给出界面字段和代码属性名。
什么时候用?
Section titled “什么时候用?”- 检测到严重错误或异常,需要立即停止执行,避免错误扩散。
- 用户或管理员需要主动取消正在执行的自动化任务。
- 资源紧张或系统负载过高时,需要停止非关键任务释放资源。
- 发现任务执行逻辑有误或数据异常时,及时停止以免产生错误结果。
- 已确认确实需要中止当前流程(终止后不再执行后续节点)。
- 终止原因(
reason)已准备好,便于排查与审计。 - 终止前需要保存的中间结果已经处理完毕。
可视化编排:从 0 到跑通
Section titled “可视化编排:从 0 到跑通”下面用一个常见场景演示:当上游校验不通过时,主动终止流程。按 3 步即可跑起来:
- 在工作流画布中添加 条件分支(IF),判断校验是否通过。
- 在「不通过」分支中添加 终止任务 节点。
- 在 终止原因 中填写说明,例如:
数据校验未通过,主动终止流程运行后流程会在该节点结束,不再执行后续节点。
| 界面名称 | 代码属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| 终止原因 | reason | String | 是 | - | 任务终止的原因说明,用于记录为什么需要终止当前执行流程,不能为空,例如「用户手动终止」 |
无。终止任务 不产生业务输出,执行后流程即结束。
- 流程在「终止任务」节点处结束,后续节点不再执行。
- 运行日志中记录了配置的终止原因。
该节点失败处理默认为「报错中止」(stop)。
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
| 配置节点时报错 | 终止原因为空 | 检查「终止原因」是否填写,reason 不能为空 |
| 流程没有按预期终止 | 节点未真正被执行到 | 检查上游条件分支,确认流程走入了包含「终止任务」的分支 |
| 终止后仍有节点执行 | 节点位置不正确 | 确认「终止任务」放在需要结束的分支内,而非并行的其他分支 |
Python 代码编排
Section titled “Python 代码编排”代码编排以 Python 为主。在代码里,终止流程直接使用 Python 原生的 return / raise,无需单独的指令。
终止任务主要通过可视化编排使用。 在代码编排中,无需调用专门的指令,结束流程直接使用 Python 原生语句即可:
# 正常结束:用 return 提前退出当前流程reason = "数据校验未通过,主动终止流程"score = params.get("score", 0)
if score < 60: # 记录终止原因后直接返回,后续逻辑不再执行 return {"discarded": True, "reason": reason}
# 校验通过才继续后续逻辑如需以「异常中止」的方式终止并让上层感知错误,可以主动抛出异常:
# 异常结束:抛出异常中断流程if not params.get("valid"): raise RuntimeError("数据校验未通过,主动终止流程")如果你想在工作流中通过节点动态编排该指令,可使用 执行指令(XML)节点,按上方参数表进行配置。
Q1:终止任务和 Return 有什么区别?
Section titled “Q1:终止任务和 Return 有什么区别?”A: 终止任务 用于结束整个流程并记录终止原因,强调主动中止;Return 更多用于从子流程返回结果。在代码编排里两者都可以用 return 表达,区别在于语义。
Q2:终止前需要做什么准备?
Section titled “Q2:终止前需要做什么准备?”A: 终止前建议保存好需要保留的中间结果,并填写清晰的终止原因,便于后续排查。