数据管理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中的数据,数据已成功插入优惠券发放表中。
可选:配置周期调度。
在编辑任务流页面,单击页面下方的任务流信息页签。
在调度配置区域,打开开启调度开关,配置调度。具体配置,请参见调度周期配置表。
发布任务流。任务流发布后,此任务流会根据设置的调度周期自动执行。
单击画布左上角的发布。
在发布对话框中输入备注信息,并单击确认,发布任务流。