数据管理DMS任务编排主要用于编排各类任务并进行调度执行。您可以通过创建一个或多个任务节点组成的任务流,实现复杂的任务调度,提高数据开发效率。

前提条件

您需要准备一个数据库,且拥有该数据库的变更权限。如需申请权限,请参见权限管理

背景信息

电商做大促活动时,常会推出优惠活动,例如用户累计消费达到一定额度,发放对应额度的优惠券。本文使用任务编排中的单实例SQL赋值节点条件分支节点和单实例SQL节点,在数据库层面实现该需求。

操作步骤

  1. 创建配置表、业务表和消费券发放表,并写入数据。具体操作请参见环境准备
  2. 创建任务流。
    1. 登录数据管理DMS 5.0
      说明 如果您需要切换到旧版数据管理DMS,单击页面右下角返回旧版,进入数据管理DMS平台。具体操作,请参见数据管理DMS 5.0切换至旧版
    2. 在顶部菜单栏中,选择传输与加工 > 任务编排
      说明 如果您使用的是旧版数据管理DMS,在顶部菜单栏中,选择全部功能 > 数据工厂 > 任务编排(新)
    3. 单击新增任务流
      说明 如果您使用的是旧版数据管理DMS,单击页面左侧的开发空间按钮。在开发空间页面中,单击新建任务流
    4. 新建任务流对话框中,输入任务流名称描述,单击确认
  3. 编排任务节点。
    1. 在左侧任务类型列表中,分别拖拽单实例SQL赋值条件分支单实例SQL节点到画布空白区域。
    2. 连接节点形成任务流。

      将鼠标放在单实例SQL赋值节点上,单击单实例SQL赋值节点左侧出现的空心圆点并拉出连接线,连接至条件分支节点上。

      将鼠标放在条件分支节点上,单击条件分支节点左侧出现的空心圆点并拉出连接线,连接至单实例SQL节点上。

    1任务编排-任务节点
  4. 配置任务节点。
    1. 选中单实例SQL赋值,配置单实例SQL赋值节点。具体操作,请参见配置单实例SQL赋值
      输出变量配置如下:输出
      输入SQL语句如下:
      select * from activity_setting limit 1
    2. 选中条件分支,配置条件分支节点。具体操作,请参见配置条件分支
      配置条件表达式如下:1 条件表达式
    3. 选中单实例SQL,配置单实例SQL节点。
      输入SQL语句如下:
      INSERT INTO `voucher_send_list`(`user_id`,`consumption_sum`,`quota`)
      SELECT * FROM
      (SELECT `user_id`, sum(count) AS consumption_sum,${Quota} FROM `consumption_records`
       WHERE `time` > '${bizdate}'  GROUP BY `user_id`) t
      where `consumption_sum`>${ConsumptionLimit}
  5. 单击画布左上方的试运行按钮,试运行任务流。
    试运行截图
    您可以在SQL窗口中,查看表voucher_send_list中的数据,数据已成功插入优惠券发放表中。1 优惠结果
  6. 可选:配置周期调度。
    1. 单击画布空白区域。
    2. 单击任务流信息页签。
    3. 调度配置区域,打开开启调度开关,配置调度。具体配置,请参见调度周期配置表
  7. 发布任务流。任务流发布后,此任务流会根据设置的调度周期自动执行。
    1. 单击画布左上角的发布
    2. 发布对话框中输入备注信息,并单击确认,发布任务流。

环境准备

  1. 登录数据管理DMS 5.0
    说明 如果您需要切换到旧版数据管理DMS,单击页面右下角返回旧版,进入数据管理DMS平台。具体操作,请参见数据管理DMS 5.0切换至旧版
  2. 在顶部菜单栏中,选择SQL窗口 > SQL窗口
    说明 如果您使用的是旧版数据管理DMS,在顶部菜单栏中,选择全部功能 > SQLConsole > 单库查询
  3. 请先选择数据库弹框中,搜索并选择数据库,单击确认
  4. 创建配置表、业务表、消费券发放表。
    1. 创建表名为activity_setting的配置表。将下列建表SQL语句粘贴到SQL书写区域,单击执行
      建表SQL语句:
      CREATE TABLE `activity_setting` (
          `has_promotion` tinyint(1) NOT NULL COMMENT '是否有优惠活动',
          `consumption_limit` int(11) NOT NULL COMMENT '消费额限制',
          `quota` int(11) NOT NULL COMMENT '发放优惠券额度',
          PRIMARY KEY (`has_promotion`)
      ) ENGINE=InnoDB
      DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
      ROW_FORMAT=COMPACT
      AVG_ROW_LENGTH=16384;
    2. 创建表名为consumption_records的业务表。将下列建表SQL语句粘贴到SQL书写区域,单击执行
      建表SQL语句:
      CREATE TABLE `consumption_records` (
          `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '流水号',
          `time` datetime NOT NULL COMMENT '消费时间',
          `count` int(11) NOT NULL COMMENT '消费额',
          `user_id` bigint(20) NOT NULL COMMENT '用户id',
          PRIMARY KEY (`id`)
      ) ENGINE=InnoDB
      DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
      COMMENT='消费记录表'
      AUTO_INCREMENT=8001
      ROW_FORMAT=COMPACT
      AVG_ROW_LENGTH=54;
    3. 创建表名为voucher_send_list的优惠券发放表。将下列建表SQL语句粘贴到SQL书写区域,单击执行
      建表SQL语句:
      CREATE TABLE `voucher_send_list` (
          `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '流水号',
          `user_id` int(11) NULL COMMENT '用户id',
          `consumption_sum` int(11) NULL COMMENT '消费额',
          `quota` int(11) NULL COMMENT '优惠券数额',
          PRIMARY KEY (`Id`)
      ) ENGINE=InnoDB
      DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
      AUTO_INCREMENT=1
      ROW_FORMAT=COMPACT
      AVG_ROW_LENGTH=0;
  5. 配置表中插入数据。将下列SQL语句粘贴到SQL书写区域,单击执行
    新增数据SQL语句:
    INSERT INTO activity_setting( has_promotion, consumption_limit, quota)
    VALUES('1','100','30');
  6. 业务表中插入数据。使用测试数据构建功能生成数据,具体请参见测试数据构建
    构建配置表consumption_records的数据,配置如下:
    数据构建