周期工作流

DataWorks提供了周期工作流手动工作流两种,以满足需要周期性调度和无需周期性调度手动触发运行的场景,本文介绍如何使用周期工作流。

背景信息

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

说明
  • 本文介绍的Workflow为周期工作流,手动工作流的更多信息,请参见手动工作流

  • 周期工作流和手动工作流的区别,请参见功能说明

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

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

  • 作为一个整体被其他任务(独立TaskWorkflow)依赖。

  • 作为一个整体依赖其他任务(独立TaskWorkflow)。

  • Workflow内部的任务作为独立个体依赖其他任务(独立TaskWorkflow)。

  • Workflow内部的任务作为独立个体被其他任务(独立TaskWorkflow)依赖。

Workflow依赖关系示意图

image

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

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

Workflow状态流转示意图

周期实例状态:

  • image 未运行

  • image 等待

  • image 运行中

  • image 运行成功

  • image 运行失败

  • image 暂停/冻结实例

Workflow图片

特殊场景说明:

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

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

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

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

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

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

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

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

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

注意事项

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

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

创建工作流

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

  2. 在左侧导航栏单击image,然后在项目目录右侧单击image > 新建工作流,设置工作流名称并保存后,进入周期工作流编辑页面。

    说明

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

设计工作流

  1. 进入工作流编辑状态。

    新建工作流后,工作流将默认处于编辑状态,您也可以在目录上单击工作流名称,进入工作流看板,点击编辑工作流按钮,进入工作流编辑状态。

  2. 设计工作流。

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

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

    • 当工作流中节点个数较多时可能会影响实际运行,建议单个工作流下节点总数最多创建200个,建议不要超过100个。

  3. 保存工作流。

    工作流设计完成后,您可单击工作流的保存按钮,保存当前工作流。

开发工作流

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

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

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

  2. 开发内部节点。

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

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

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

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

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

  3. 调试运行内部节点。

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

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

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

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

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

调试工作流

您可通过以下步骤,调试运行工作流任务。

  1. 保存工作流。

    开发调试完工作流内部节点任务后,您可单击业务流程看板上方工具栏中的保存按钮。在变更检查弹窗,确认保存工作流。

  2. 调试运行工作流。

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

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

发布工作流

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

  1. 内部节点调度配置。

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

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

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

  2. 工作流调度配置。

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

  3. 发布工作流。

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

后续操作:工作流运维

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

附录:工作流引用及参数透传

场景一:引用工作流

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

重要

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

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