反馈已提交

网络繁忙

循环往复执行定时任务

  • 文档创建者:Wendy123456
  • 历史版本:4
  • 最近更新:Wendy123456 于 2024-04-29
  • 1. 概述

    1.1 应用场景

    用户创建两个定时任务(调用关系)处理数据,处理后的数据被用于大屏展示。

    由于对数据的实时性要求较高,希望任务执行后立刻被拉起,且任务运维界面不希望看到任务出现排队的情况。

    1.2 实现思路

    问题:

    • 若设置子任务定期执行,子任务会出现排队的情况。

    • 若设置父任务定期执行,通过「调用任务」节点父任务拉起子任务的执行,子任务运行过程中父任务会出现排队的情况。

    本文方案:

    父任务中,使用内置参数 ${workname.opresult} 判断子任务是否执行成功,若子任务上次运行状态为成功:

    运行情况为:子任务运行成功→父任务到达运行时间判断子任务上次运行是否成功,若运行成功:运行子任务、运行父任务→子任务运行成功→循环执行

    所以,不会出现排队情况。

    1.3 注意事项

    本文方案适用于 4.0.29 及以上版本。

    1.4 任务展示

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 中的定时任务:「循环往复执行定时任务-父任务」、循环往复执行定时任务-子任务」

    2. 操作步骤

    2.1 创建子任务

    本节目的:模拟子任务的运行。

    1)新建定时任务,拖入「SQL 脚本」节点,SQL 语句为select  sleep(20),表示子任务运行 20 秒,用于模拟子任务的运行。用户可根据实际情况构建子任务。如下图所示:

    3.png

    2)保存该任务。

    2.2 父任务准备

    需要使用 基于任务ID运行任务接口,来运行子任务。

    本文示例 FDL 工程为独立部署,参考 FR模板调用定时任务接口示例 文档的 2.1-2.5 节内容。

    2.3 创建父任务

    父任务中包含的节点及作用如下表所示:

    节点
    说明
    条件分支使用内置参数 ${workname.opresult} 判断子任务是否执行成功,若子任务执行成功,开始执行父任务的后续节点
    数据转换调用 基于任务ID运行任务接口,来运行子任务

    1)新建一个定时任务,拖入「条件分支」节点,使用内置参数 ${workname.opresult} 判断子任务是否执行成功,若子任务执行成功,开始执行后续节点

    再拖入一个数据转换节点。如下图所示:

    4.png

    2)进入数据转换节点,拖入「API输入」算子,调用 基于任务ID运行任务接口,来运行子任务。如下图所示:

    6.png

    3)拖入「参数输出」算子,将 status 列输出。如下图所示:

    本节步骤作用:数据转换节点内只有API输入算子将会报错,需要设置一个输出算子,本步骤输出的参数无意义。

    7.png

    4)点击右上角保存按钮。

    5)为父任务设置定时调度,每分钟执行一次父任务。如下图所示:

    8.png

    2.4 后续步骤

    用户可在父任务的数据转换节点后,拖入节点进行数据的处理。

    2.5 效果查看

    先手动运行下子任务,后续效果如下图所示:

    9.png

    父任务和子任务不存在排队情况:

    1714359416366516.png




    附件列表


    主题: 任务运维
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持