周期工作流

DataWorks提供了周期工作流,以满足需要周期性调度运行的业务场景,本文介绍如何使用周期工作流。

背景信息

工作流(Workflow)是一种数据处理流程自动化管理工具,它通过可视化拖拽方式整合多种类型的子任务节点,便捷地建立任务依赖关系,加速数据处理流程的搭建,有效提升任务开发效率。

周期工作流支持设置的调度依赖关系

周期工作流(Workflow)的调度依赖配置与普通节点类似,工作流的内部节点或工作流整体均可依赖其他任务,或被其他节点依赖。具体如下:

  • 作为一个整体被其他任务(独立Task或工作流)依赖。

  • 作为一个整体依赖其他任务(独立Task或工作流)。

  • 周期工作流(Workflow)内部的任务作为独立个体依赖其他任务(独立Task或工作流)。

  • 周期工作流(Workflow)内部的任务作为独立个体被其他任务(独立Task或工作流)依赖。

Workflow依赖关系示意图

image

周期工作流运行时的状态流转

周期工作流(Workflow)支持整体设置定时调度时间,工作流内部节点运行均受该定时时间影响,当下游节点依赖工作流整体时,下游节点也会受到当前工作流定时时间的影响。在调度场景下,工作流整体是否返回成功状态,会受到内部任务运行状态的影响。

周期工作流(Workflow)状态流转示意图

周期实例状态:

  • image 未运行

  • image 等待

  • image 运行中

  • image 运行成功

  • image 运行失败

  • image 暂停/冻结实例

Workflow图片

特殊场景说明:

  • 工作流内部存在冻结或暂停的实例时,整个工作流实例将会被置为失败状态。

  • 冻结工作流任务的补数据实例时,工作流实例将会被置为成功状态。

  • 补数据场景下判断任务无法执行时,工作流会被置为失败状态。

  • 实例状态和实际失败事件产生时间存在延迟。

  • 工作流内部存在归并节点时,归并节点上游可能存在失败情况,此时会根据归并节点是否为成功状态来判定工作流是否返回成功状态。

周期工作流内部节点的执行时间与参数替换

  • 工作流内部节点无需配置调度周期,只需设置延迟执行时间,即基于工作流定义的定时时间延迟多久调度。

  • 工作流内部节点配置的延迟执行时间基于工作流配置的调度时间计算实际执行时间。

  • 工作流内部节点调度参数赋值由工作流整体定时时间决定,而非延迟后的时间。

  • 系统会自动将自定义的工作流参数追加到内部节点的调度参数后面,您可以在工作流内部节点中获取该工作流参数。

注意事项

  • 仅支持在新版数据开发(Data Studio)中使用周期工作流(Workflow),旧版数据开发不支持此功能。

  • 新建周期工作流时选择调度类型周期调度

  • 开启可被引用的工作流,不能依赖于其他任务,并且发布至生产环境默认不会自动调度。

    重要
    • 当工作流启用了可被引用能力后,该工作流及其内部节点不能依赖其他任务(特指其他工作流或不在该工作流内的其他节点),同时也不允许被其他任务(包括空间根节点)所依赖。否则,在发布工作流时将会产生报错,导致工作流无法正常发布。

    • 开启可被引用的工作流发布至生产环境后默认不会自动调度,直至有其他工作流通过SUB_PROCESS节点引用了它。

进入新建工作流页面

  1. 进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的快速进入 > Data Studio,进入Data Studio。

  2. 在左侧导航栏单击image,然后在项目目录右侧单击image > 新建工作流,进入新建工作流页面。

    说明

    首次使用项目目录时,也可以直接单击新建工作流按钮进行创建。

新建周期工作流

  1. 新建工作流页面,选择调度类型周期调度

    说明
    • 定时调度,可以指定任务调度的频次。可通过指定的调度时间定时触发任务执行。

    • 如需创建触发式工作流,可参见触发式工作流

  2. 输入工作流名称,单击确认创建。

设计周期工作流

在工作流看板左侧,根据需要开发的任务类型选择对应的节点,将其拖拽至画布中,并通过手动连线的方式快速配置节点间的依赖关系。

说明
  • DataWorks将引擎能力封装为节点,您可以基于引擎类型的节点进行可视化数据开发,无需接触复杂的引擎命令行,同时您也可以结合平台提供的通用类型节点进行复杂逻辑处理。

  • 单个工作流最多支持创建400个内部节点,但为了获得最佳的展示和维护体验,建议控制在100个节点以内。

开发周期工作流

您可通过以下步骤完成工作流的开发,也可参考附录:工作流引用,完成工作流之间的引用和工作流与内部节点的参数透传。

  1. 进入内部节点编辑页。

    在业务流程看板中,将鼠标移动到目标节点,单击打开节点,进入工作流内部节点的编辑页面。

  2. 开发内部节点。

    在节点编辑页面,快速编辑节点代码。在代码开发时,需注意以下几点:

    • 代码语法取决于您选择的节点类型。不同类型的任务配置不同,配置详情请参见节点开发

    • 您可以启用Copilot智能编程助手,以获得智能代码补全建议,提升开发效率。

    • 对于大多数节点类型,您都可以使用 ${变量名}的方式定义变量,以便在下一步骤调试任务代码时可以代入不同的赋值快速调试。

    • 在执行调度任务时,您可通过${workflow.参数名}方式在内部节点获取工作流参数的赋值。

  3. 调试运行内部节点。

    1. 配置调试参数。代码编辑完成后,您可单击节点编辑页右侧的调试配置,配置调试参数。

      1. 计算资源中指定调试阶段任务下发的计算资源。

      2. DataWorks配置中指定DataWorks任务执行使用的资源组等。

      3. 如果您在代码中通过${变量名}方式定义了变量,则需要在脚本参数中为对应变量名赋值常量。

    2. 调试运行任务。配置完成后,可单击工具栏中的运行按钮,此时将使用您在调试配置中的调试参数运行节点。

调试周期工作流

开发调试完工作流内部节点任务后,调试运行工作流任务。

  1. 单击业务流程看板上方工具栏中的image图标,在填写运行参数弹窗手动输入本次运行值。单击确定

  2. 单击业务流程看板的工作流内部节点,查看任务执行结果。

发布周期工作流

您可参照以下流程定义工作流及内部节点的调度相关配置,并将工作流发布到生产环境进行周期性调度运行。

  1. 内部节点调度配置。

    工作流内部节点调度配置与普通节点基本一致,配置说明可参见调度依赖。配置时需注意以下几点:

    • 工作流内部节点不需要单独设置任务定时调度时间,可设置延时执行时间,即任务在工作流执行后,延迟对应时间执行。

    • 工作流内部节点代码中使用的变量取值,取决于工作流定时时间。

  2. 工作流调度配置。

    配置工作流的调度参数调度时间调度依赖

  3. 发布工作流。

    单击工具栏中的image按钮唤起发布看板,单击开始发布生产,任务将按照发布检查流程执行发布操作,更多信息,请参见节点/工作流发布

后续操作:工作流运维

周期工作流发布成功后会周期性调度,您可前往生产环境运维中心查看周期工作流的调度情况并执行相关运维操作。详情请参见:运维中心补数据

其他操作

克隆周期工作流

您可通过克隆功能,快速克隆现有周期工作流以创建新的工作流。克隆内容包括工作流及其内部节点(含代码调试配置调度配置),以及节点间的依赖关系和工作流本身的调度配置(包含调度参数调度策略)信息。

说明

克隆内容不包含工作流调度配置中的调度时间调度依赖信息,您可自行配置相关参数。

  1. 在左侧项目目录中,右键单击需要克隆的周期工作流名称。

  2. 在弹出菜单中选择克隆,进入克隆弹窗。

  3. 在克隆弹窗中修改工作流名称和保存路径(可保留默认值),单击确认开始克隆。

  4. 在克隆过程中,可通过弹窗查看克隆的当前进度持续时间完成节点数等详细信息。

  5. 克隆完成后,可在项目目录中查看新生成的周期工作流。

  6. 如需在周期工作流中新增节点,您可以选择通过克隆方式快速创建节点,或者通过拖拽方式创建内部节点

版本管理

系统支持通过版本管理功能将工作流还原到指定的历史版本,同时提供版本查看与对比功能,方便您分析差异并进行调整。

  1. 在左侧项目目录中,双击目标周期工作流名称,进入工作流画布。

  2. 单击工作流画布右侧的版本,在版本页面查看和管理开发记录发布记录信息。

    • 查看版本

      1. 您可以在开发记录发布记录页签中,找到需要查看的周期工作流版本。

      2. 单击操作栏中的查看,在详情页中即可查看周期工作流代码以及调度配置信息。

        说明

        调度配置信息支持脚本模式可视化模式查看,您可在调度配置页签右上角切换查看模式。

    • 对比版本

      您可以在开发记录发布记录页签中,对不同版本的周期工作流进行对比。下面以开发记录为例,为您演示对比操作。

      • 开发或发布环境对比:在开发记录页签中,勾选两个版本,单击上方的选择对比按钮,即可对比不同版本的工作流代码信息和调度配置信息。

      • 开发与发布或构建环境对比

        1. 开发记录页签中,定位到周期工作流的某个版本。

        2. 单击操作栏中的对比按钮,在弹出的请选择对比的内容窗口中选择与发布记录构建记录中的某个版本进行对比。

    • 还原版本

      仅支持将开发记录中的周期工作流还原到指定的历史版本。您可在开发记录页签中找到目标版本,单击操作栏中的还原按钮,即可将该周期工作流信息还原至目标版本。

      说明

      还原时,系统会基于目标版本进行恢复,并生成一条新的版本记录。

附录:工作流引用

场景一:引用工作流

在工作流中,您可以通过SUB_PROCESS节点引用另一个工作流。被引用的工作流需要在工作流编辑页面右侧的属性配置中打开可被引用开关。

重要

开启可被引用的工作流发布至生产环境后不会自动调度,直至有其他工作流通过SUB_PROCESS节点引用了它。

被引用的工作流将跟随引用工作流调度执行。

场景二:获取工作流参数

如果您在工作流中定义了一个参数,在任务调度时系统会自动将自定义的工作流参数追加到内部节点的调度参数后面,您可以在工作流的内部节点中按以下方式获取该参数。

  1. 定义工作流参数。

    1. 在左侧项目目录中选择您要编辑的工作流。

    2. 在工作流看板右侧的调度配置中,单击添加参数,输入参数名参数值

  2. 获取工作流参数。

    1. 进入上面您所编辑的工作流,在工作流中选择您要编辑的内部节点。

    2. 鼠标悬浮在内部节点上方,选择打开节点,进入内部节点编辑页。

    3. 在内部节点编辑页的右侧的调度配置中找到工作流参数里面的参数名

    4. 获取工作流参数。

      您可通过${workflow.参数名}方式获取工作流参数。

常见问题

Q:为什么调试时工作流可以正常运行,但是周期调度运行时却失败了?

A:可能原因:工作流各内部节点的调度配置中选择的计算资源、资源组与调试运行时选择的计算资源、资源组不一致,可能会导致调试运行成功,而调度运行失败。