触发规则(TriggerRule)
更新时间:2024-08-16
触发规则
默认情况下,当一个任务的所有上游任务都成功运行后,运维编排服务才会开始调度并运行当前任务。除此之外,运维编排服务也支持用户为每个任务设置不同的触发规则。
{
"operators": [
{
"name": "我的任务", // 任务名称
// 执行当前任务的触发条件,选填
// 可选值:
// ALL_SUCCESS - 全部上游节点执行成功,默认值
// ONE_SUCCESS - 任一上游节点执行成功
// ALL_FAILED - 全部上游节点执行失败
// ONE_FAILED - 任一上游节点执行失败
// ALWAYS - 无论上游节点的状态,当前节点都会被执行
"triggerRule": "ALL_SUCCESS",
}
]
}
各触发规则的说明如下。我们先定义如下几个变量:
- num_total = 所有上游任务数量
- num_success = 成功的上游任务数量(state = SUCCESS | IGNORED)
- num_failed = 失败的上游任务数量(state = FAILED | UPSTREAM_FAILED)
- num_skipped = 被跳过的上游任务数量(state = SKIPPED)
注意,num_total = num_success + num_failed + num_skipped
TriggerRule | 触发规则 | 触发方式 |
---|---|---|
ALL_SUCCESS | 全部上游节点执行成功 | 1. 若num_success == num_total,则运行当前节点(state=RUNNING) 2. 若num_skipped == num_total,则跳过当前节点(state=SKIPPED) 3. 否则(num_failed > 0),令当前节点失败(state=UPSTREAM_FAILED) |
ONE_SUCCESS | 任一上游节点执行成功 | 1. 若num_success > 0,则运行当前节点(state=RUNNING) 2. 若num_skipped == num_total,则跳过当前节点(state=SKIPPED) 3. 否则(num_success == 0),令当前节点失败(state=UPSTREAM_FAILED) |
ALL_FAILED | 全部上游节点执行失败 | 1. 若num_failed == num_total,则运行当前节点(state=RUNNING) 2. 否则(num_failed != num_total),跳过当前节点(state=SKIPPED) |
ONE_FAILED | 任一上游节点执行失败 | 1. 若num_failed > 0,则运行当前节点(state=RUNNING) 2. 否则(num_failed == 0),跳过当前节点(state=SKIPPED) |
ALWAYS | 无论上游节点的状态,当前节点都会被执行 | 总是执行当前节点(state=RUNNING) |