数据管理DMS任务编排主要用于编排各类任务并进行调度执行。您可以通过创建一个或多个任务节点组成的任务流,实现复杂的任务调度,提高数据开发效率。
背景信息
电商做大促活动时,常会推出优惠活动,例如用户累计消费达到一定额度,发放对应额度的优惠券。本文使用任务编排中的单实例SQL赋值节点、条件分支节点和单实例SQL节点,在数据库层面实现该需求。
操作步骤
- 创建配置表、业务表和消费券发放表,并写入数据。具体操作请参见环境准备。
- 新增任务流。
- 登录数据管理DMS 5.0。
- 在顶部菜单栏中,选择。
- 单击新增任务流。
- 在新建任务流对话框中,输入任务流名称和描述,单击确认。
- 编排任务节点。
- 在左侧任务类型列表中,分别拖拽单实例SQL赋值、条件分支、单实例SQL节点到画布空白区域。
- 连接节点形成任务流。
将鼠标放在单实例SQL赋值节点上,单击单实例SQL赋值节点左侧出现的空心圆点并拉出连接线,连接至条件分支节点上。
将鼠标放在条件分支节点上,单击条件分支节点左侧出现的空心圆点并拉出连接线,连接至单实例SQL节点上。
- 配置任务节点。
- 选中单实例SQL赋值,配置单实例SQL赋值节点。具体操作,请参见配置单实例SQL赋值。
输出变量配置如下:

输入SQL语句如下:
select * from activity_setting limit 1
- 选中条件分支,配置条件分支节点。具体操作,请参见配置条件分支。
配置条件表达式如下:

- 选中单实例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}
- 单击画布左上方的试运行按钮,试运行任务流。
您可以在SQL窗口中,查看表voucher_send_list中的数据,数据已成功插入优惠券发放表中。

- 可选:配置周期调度。
- 单击画布空白区域。
- 单击任务流信息页签。
- 在调度配置区域,打开开启调度开关,配置调度。具体配置,请参见调度周期配置表。
- 发布任务流。任务流发布后,此任务流会根据设置的调度周期自动执行。
- 单击画布左上角的发布。
- 在发布对话框中输入备注信息,并单击确认,发布任务流。
环境准备
- 登录数据管理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的数据,配置如下: