触发规则(TriggerRule)
更新时间:2024-08-16
触发规则
默认情况下,当一个任务的所有上游任务都成功运行后,运维编排服务才会开始调度并运行当前任务。除此之外,运维编排服务也支持用户为每个任务设置不同的触发规则。
JSON
1{
2 "operators": [
3 {
4 "name": "我的任务", // 任务名称
5
6 // 执行当前任务的触发条件,选填
7 // 可选值:
8 // ALL_SUCCESS - 全部上游节点执行成功,默认值
9 // ONE_SUCCESS - 任一上游节点执行成功
10 // ALL_FAILED - 全部上游节点执行失败
11 // ONE_FAILED - 任一上游节点执行失败
12 // ALWAYS - 无论上游节点的状态,当前节点都会被执行
13 "triggerRule": "ALL_SUCCESS",
14 }
15 ]
16}
各触发规则的说明如下。我们先定义如下几个变量:
- 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) |