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

背景信息

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

前提条件

您需要准备一个数据库,且拥有该数据库的变更权限。如需申请权限,请参见 访问控制权限概述

环境准备

  1. 登录 数据管理DMS 5.0
  2. 单击控制台左上角的 2023-01-28_15-57-17.png 图标,选择 全部功能 > SQL窗口 > SQL窗口

    说明

    若您使用的是非极简模式的控制台,在顶部菜单栏中,选择 SQL窗口 > SQL窗口

  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的数据,配置如下:

    数据构建

操作步骤

  1. 创建配置表、业务表和消费券发放表,并写入数据。具体操作请参见 环境准备

  2. 新增任务流。

    1. 登录 数据管理DMS 5.0

    2. 单击控制台左上角的 2023-01-28_15-57-17.png 图标,选择 全部功能 > Data+AI > 数据开发 > 任务编排

      说明

      若您使用的是非极简模式的控制台,在顶部菜单栏中,选择 Data+AI > 数据开发 > 任务编排

    3. 单击 新增任务流

    4. 新建任务流 对话框中,输入 任务流名称 描述 ,单击 确认

  3. 编排任务节点。

    1. 在左侧 任务类型 列表中,分别拖拽 单实例SQL赋值 条件分支 单实例SQL 节点到画布空白区域。

    2. 连接节点形成任务流。

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

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

    image.png

  4. 配置任务节点。

    1. 选中 单实例SQL赋值 ,配置单实例SQL赋值节点。更多信息,请参见 配置单实例SQL赋值

      1. 选择目标数据库。

      2. 在SQL区域输入如下SQL语句。

        select * from activity_setting limit 1
      3. 在页面右侧的 变量设置 区域,增加三个输出变量:Quota(发放红包额度)、HasPromotion(是否有优惠活动)、ConsumptionLimit(消费额度限制)。

        image.png

    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`) `consumption_records`
      where `consumption_sum`>${ConsumptionLimit}
  5. 单击画布左上方的 试运行 按钮,试运行任务流。

    您可以在SQL窗口中,查看表voucher_send_list中的数据,数据已成功插入优惠券发放表中。 1 优惠结果

  6. 可选: 配置周期调度。

    1. 在编辑任务流页面,单击页面下方的 任务流信息 页签。

    2. 调度配置 区域,打开 开启调度 开关,配置调度。具体配置,请参见 调度周期配置表

  7. 发布任务流。任务流发布后,此任务流会根据设置的调度周期自动执行。

    1. 单击画布左上角的 发布

    2. 发布 对话框中输入 备注 信息,并单击 确认 ,发布任务流。