1. 概述
1.1 版本
FineDataLink 版本 | 功能说明 |
---|---|
4.0.30 | 支持设置定时任务的调度依赖 |
4.1.1 | 依赖任务下拉框中,屏蔽成环任务 |
4.1.4 | 添加事件调度时,增加一个示例,帮助用户理解功能 |
4.1.11.1 | 事件调度优化:
|
4.1.13.1 | 打开某个定时任务后,点击「调度计划>事件调度>查看按钮」,将跳转至「运维中心>定时任务>调度计划>事件调度」界面并打开该事件调度 |
1.2 应用场景
数仓构建过程中 ODS 层有 a、b、c 任务互不影响、DW 层有 d 、f 任务,需要 a、b 任务执行完触发 d 任务,来减少 DW 层对 ODS 层完全更新完等待的时间;若 a、b 执行失败则不触发,来避免数据准确性的问题。
定时任务中设置任务 b 依赖任务 a(上午执行),希望在晚上(空闲时间)执行任务 b,而不是上游任务 a 执行完立即执行任务 b,避免造成资源紧张的问题。
用户设置 a 任务触发 b 任务,若 a 任务失败,重跑 a 任务时,希望不触发 b 任务。
1.3 功能简介
FineDataLink 可设置任务的调度依赖,例如设置任务 A、任务 B 在指定的条件执行成功后再执行任务 C 以及后续任务。
1.4 前提条件
使用前需要确保注册了「调度计划-高级功能(试用)」功能点。
1.5 升级兼容
升级前的事件调度将有任务上下游关系的整合为一个事件调度;配置项升级后,任务执行条件判断时机默认为:实时判断;多任务触发关系默认为:实例可以重复判断。
注:开放平台插件调用的任务无法触发事件调度。
2. 功能说明
2.1 添加事件调度入口
入口一:
在「运维中心>定时任务>调度计划>事件调度」中添加。如下图所示:
入口二:
打开一个定时任务,点击「调度计划>事件调度>去创建按钮」,可跳转到「运维中心>定时任务>调度计划>事件调度」中,添加事件调度。如下图所示:
2.2 事件调度说明
属性 | 说明 |
---|---|
当前任务信息 | 展示需要被调度的任务,可新增、删除 新增任务时仅支持选择已发布且未配置过事件调度的任务 |
上游任务信息 | 展示上游执行的任务,可新增、删除,可多选任务 新增任务仅支持选择已发布且未配置过事件调度的任务 新增任务不支持选择依赖/调用成环的任务 |
当前任务执行条件 |
触发逻辑:到达定时执行时间——>判断上游任务最新一次运行记录是否满足条件——>成功则触发一次下游任务,不成功则不触发 上游设置条件内容后,满足条件内容的上游任务成功执行,则当前任务到达设置的定时调度时间后执行。
若勾选,则表示任务运行记录 仅判断一次:多个任务产生了最新&未成功触发过下游的运行记录。 若不勾选,任务运行记录可以重复判断:可以重复使用最新产生的运行记录去判断 |
下游任务 | 当前任务执行成功后,后续执行的任务,可新增、删除。 |
2.3 管理事件调度
可在「运维中心>定时任务>调度计划>事件调度」中管理已添加的事件调度。详情请参见:定时任务运维-调度计划
4.1.13.1 及之后版本,打开某个定时任务后,点击「调度计划>事件调度>查看按钮」,将跳转至「运维中心>定时任务>调度计划>事件调度」界面并打开该事件调度。如下图所示:
2.4 事件调度的其他功能
1)手动运行
生产环境下提供「运行当前任务及下游」操作,产生的运行记录根据「事件调度」中配置的任务关系&条件内容,判断下游任务是否触发,如下图所示:
注:该次手动产生的运行记录(包含下游被本次拉起的实例)会参与事件调度条件内容判断(包含定时),判断使用成功触发下游过后不再使用本次的运行记录去参与判断。
2)运行记录重试
重试当前任务下,提供「重试当前任务及下游」操作,产生的运行记录,根据「事件调度」中配置的任务关系&条件内容,判断下游任务是否触发。
应用场景:例如用户设置 A、B 任务触发 D 任务,A、B任务都失败,未触发下游任务 D,希望能够重跑任务,若两个任务均重跑成功则触发下游任务,就可以使用此功能。
重试任务功能说明请参见:任务记录:重试任务
注:该次手动重试产生的运行记录(包含下游被本次拉起的实例)会参与事件调度条件内容判断(包含定时),判断使用成功触发下游过后不再使用本次的运行记录去参与判断。
3)权限
事件调度中任一有管理权限的任务,支持查看该事件调度,对于画布中已有的&没有管理权限的任务不支持移动、删除。
仅支持对有管理权限的任务配置触发条件,若该组中既包含无权限任务,又包含有权限任务,不允许对这个分组调整触发条件和添加、删除下上游任务,针对有权限任务可移动至新分组。
针对当前组可添加、删除任务仅限,若上下游组有无权限任务则不支持添加、删除。
2.5 特殊场景说明
场景 | 说明 |
---|---|
任务 A—>B—>C—>D,分别属于分组1、2、3、4,用户将 B 任务删除了 但是 C 任务是有单独配置的定时调度的 | 情况1:分组 2 里还有其他任务,不影响整个事件调度,校验通过 情况2:分组 2 没有其他任务,整个事件调度在管理列表标红,事件调度编辑界面内校验,调度状态新增调度异常状态,整个调度事件失效,C 任务也不会触发 D |
3. 操作步骤
例如用户已经创建了 ods 、dw 和 dm 层的几个任务,如下图所示:
并且给 ods 层的任务设置了一个定时调度。希望能给 dw 和 dm 层的数据设置事件调度,在 ods 层任务指定条件下执行成功后再执行 dw 层以及 dm 层的任务。
3.1 添加事件调度
进入任务运维>定时任务>调度计划,点击事件调度并添加事件调度,如下图所示:
选择事件调度当前任务,即需要被调度的 dw 层任务,如下图所示:
3.2 设置当前和上游任务信息
进入编辑界面后,选中分组,将当前任务信息修改为「dw层」,添加上游任务信息,将 ods 层任务添加进来,如下图所示:
3.3 设置当前任务组执行条件
设置当前任务组的执行条件,选择定时判断,设置当前任务执行的定时时间,并设置任务执行条件内容,如下图所示:
3.4 设置下游任务信息
设置 dm 层任务为当前任务被事件调度执行后继续执行的任务,如下图所示:
然后就可以看到事件调度的界面,如下图所示:
3.5 效果查看
为 ods 层任务设置定时调度,需要注意的是如果事件调度设置的当前任务是定时调度,这个时间需要在 ods 定时调度时间之后,如下图所示:
当 ods 层任务运行成功后,事件调度设置的 dw 层任务在调度时间将执行,若执行成功,同时下游的 dm 层任务也会实时判断并执行,如下图所示: