数据管理DMS任务编排主要用于编排各类任务并进行调度执行。您可以通过创建一个或多个任务节点组成的任务流,实现复杂的任务调度,提高数据开发效率。
背景信息
电商做大促活动时,常会推出优惠活动,例如用户累计消费达到一定额度,发放对应额度的优惠券。本文使用任务编排中的 单实例SQL赋值节点 、 条件分支节点 和单实例SQL节点,在数据库层面实现该需求。
前提条件
您需要准备一个数据库,且拥有该数据库的变更权限。如需申请权限,请参见 访问控制权限概述 。
环境准备
- 登录 数据管理DMS 5.0 。
-
单击控制台左上角的
图标,选择
。
说明若您使用的是非极简模式的控制台,在顶部菜单栏中,选择 。
-
在 请先选择数据库 对话框中,搜索并选择数据库,单击 确认 。
-
创建配置表、业务表、消费券发放表。
-
创建表名为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; -
创建表名为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; -
创建表名为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;
-
-
在配置表中插入数据。将下列SQL语句粘贴到SQL区域,单击 执行 。
新增数据SQL语句:
INSERT INTO activity_setting( has_promotion, consumption_limit, quota) VALUES('1','100','30'); -
业务表中插入数据。使用测试数据构建功能生成数据,具体请参见 测试数据构建 。
构建配置表consumption_records的数据,配置如下:
操作步骤
-
创建配置表、业务表和消费券发放表,并写入数据。具体操作请参见 环境准备 。
-
新增任务流。
-
登录 数据管理DMS 5.0 。
-
单击控制台左上角的
图标,选择
。
说明若您使用的是非极简模式的控制台,在顶部菜单栏中,选择 。
-
单击 新增任务流 。
-
在 新建任务流 对话框中,输入 任务流名称 和 描述 ,单击 确认 。
-
-
编排任务节点。
-
在左侧 任务类型 列表中,分别拖拽 单实例SQL赋值 、 条件分支 、 单实例SQL 节点到画布空白区域。
-
连接节点形成任务流。
将鼠标放在 单实例SQL赋值 节点上,单击 单实例SQL赋值 节点右侧出现的空心圆点并拉出连接线,连接至 条件分支 节点上。
将鼠标放在 条件分支 节点上,单击 条件分支 节点右侧出现的空心圆点并拉出连接线,连接至 单实例SQL 节点上。
-
-
配置任务节点。
-
选中 单实例SQL赋值 ,配置单实例SQL赋值节点。更多信息,请参见 配置单实例SQL赋值 。
-
选择目标数据库。
-
在SQL区域输入如下SQL语句。
select * from activity_setting limit 1 -
在页面右侧的 变量设置 区域,增加三个输出变量:Quota(发放红包额度)、HasPromotion(是否有优惠活动)、ConsumptionLimit(消费额度限制)。
-
-
选中 条件分支 ,配置条件分支节点。具体操作,请参见 配置条件分支 。
配置条件表达式如下:
-
选中 单实例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}
-
-
单击画布左上方的 试运行 按钮,试运行任务流。
您可以在SQL窗口中,查看表voucher_send_list中的数据,数据已成功插入优惠券发放表中。
-
可选: 配置周期调度。
-
在编辑任务流页面,单击页面下方的 任务流信息 页签。
-
在 调度配置 区域,打开 开启调度 开关,配置调度。具体配置,请参见 调度周期配置表 。
-
-
发布任务流。任务流发布后,此任务流会根据设置的调度周期自动执行。
-
单击画布左上角的 发布 。
-
在 发布 对话框中输入 备注 信息,并单击 确认 ,发布任务流。
-