任務(wù)編排之電商打標
數(shù)據(jù)管理DMS任務(wù)編排主要用于編排各類任務(wù)并進行調(diào)度執(zhí)行。您可以通過創(chuàng)建一個或多個任務(wù)節(jié)點組成的任務(wù)流,實現(xiàn)復雜的任務(wù)調(diào)度,提高數(shù)據(jù)開發(fā)效率。
背景信息
電商做大促活動時,常會推出優(yōu)惠活動,例如用戶累計消費達到一定額度,發(fā)放對應額度的優(yōu)惠券。本文使用任務(wù)編排中的單實例SQL賦值節(jié)點、條件分支節(jié)點和單實例SQL節(jié)點,在數(shù)據(jù)庫層面實現(xiàn)該需求。
前提條件
您需要準備一個數(shù)據(jù)庫,且擁有該數(shù)據(jù)庫的變更權(quán)限。如需申請權(quán)限,請參見訪問控制權(quán)限概述。
環(huán)境準備
- 登錄數(shù)據(jù)管理DMS 5.0。
單擊控制臺左上角的圖標,選擇
。說明若您使用的是非極簡模式的控制臺,在頂部菜單欄中,選擇
。在請先選擇數(shù)據(jù)庫對話框中,搜索并選擇數(shù)據(jù)庫,單擊確認。
創(chuàng)建配置表、業(yè)務(wù)表、消費券發(fā)放表。
創(chuàng)建表名為activity_setting的配置表。將下列建表SQL語句粘貼到SQL書寫區(qū)域,單擊執(zhí)行。
建表SQL語句:
CREATE TABLE `activity_setting` ( `has_promotion` tinyint(1) NOT NULL COMMENT '是否有優(yōu)惠活動', `consumption_limit` int(11) NOT NULL COMMENT '消費額限制', `quota` int(11) NOT NULL COMMENT '發(fā)放優(yōu)惠券額度', PRIMARY KEY (`has_promotion`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=COMPACT AVG_ROW_LENGTH=16384;
創(chuàng)建表名為consumption_records的業(yè)務(wù)表。將下列建表SQL語句粘貼到SQL書寫區(qū)域,單擊執(zhí)行。
建表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;
創(chuàng)建表名為voucher_send_list的優(yōu)惠券發(fā)放表。將下列建表SQL語句粘貼到SQL書寫區(qū)域,單擊執(zhí)行。
建表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 '優(yōu)惠券數(shù)額', PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1 ROW_FORMAT=COMPACT AVG_ROW_LENGTH=0;
在配置表中插入數(shù)據(jù)。將下列SQL語句粘貼到SQL區(qū)域,單擊執(zhí)行。
新增數(shù)據(jù)SQL語句:
INSERT INTO activity_setting( has_promotion, consumption_limit, quota) VALUES('1','100','30');
業(yè)務(wù)表中插入數(shù)據(jù)。使用測試數(shù)據(jù)構(gòu)建功能生成數(shù)據(jù),具體請參見測試數(shù)據(jù)構(gòu)建。
構(gòu)建配置表consumption_records的數(shù)據(jù),配置如下:
操作步驟
創(chuàng)建配置表、業(yè)務(wù)表和消費券發(fā)放表,并寫入數(shù)據(jù)。具體操作請參見環(huán)境準備。
新增任務(wù)流。
在頂部菜單欄中,選擇 。
單擊新增任務(wù)流。
在新建任務(wù)流對話框中,輸入任務(wù)流名稱和描述,單擊確認。
編排任務(wù)節(jié)點。
在左側(cè)任務(wù)類型列表中,分別拖拽單實例SQL賦值、條件分支、單實例SQL節(jié)點到畫布空白區(qū)域。
連接節(jié)點形成任務(wù)流。
將鼠標放在單實例SQL賦值節(jié)點上,單擊單實例SQL賦值節(jié)點右側(cè)出現(xiàn)的空心圓點并拉出連接線,連接至條件分支節(jié)點上。
將鼠標放在條件分支節(jié)點上,單擊條件分支節(jié)點右側(cè)出現(xiàn)的空心圓點并拉出連接線,連接至單實例SQL節(jié)點上。
配置任務(wù)節(jié)點。
選中單實例SQL賦值,配置單實例SQL賦值節(jié)點。更多信息,請參見配置單實例SQL賦值。
選擇目標數(shù)據(jù)庫。
在SQL區(qū)域輸入如下SQL語句。
select * from activity_setting limit 1
在頁面右側(cè)的變量設(shè)置區(qū)域,增加三個輸出變量:Quota(發(fā)放紅包額度)、HasPromotion(是否有優(yōu)惠活動)、ConsumptionLimit(消費額度限制)。
選中條件分支,配置條件分支節(jié)點。具體操作,請參見配置條件分支。
配置條件表達式如下:
選中單實例SQL,配置單實例SQL節(jié)點。
輸入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}
單擊畫布左上方的試運行按鈕,試運行任務(wù)流。
您可以在SQL窗口中,查看表voucher_send_list中的數(shù)據(jù),數(shù)據(jù)已成功插入優(yōu)惠券發(fā)放表中。
可選:配置周期調(diào)度。
在編輯任務(wù)流頁面,單擊頁面下方的任務(wù)流信息頁簽。
在調(diào)度配置區(qū)域,打開開啟調(diào)度開關(guān),配置調(diào)度。具體配置,請參見調(diào)度周期配置表。
發(fā)布任務(wù)流。任務(wù)流發(fā)布后,此任務(wù)流會根據(jù)設(shè)置的調(diào)度周期自動執(zhí)行。
單擊畫布左上角的發(fā)布。
在發(fā)布對話框中輸入備注信息,并單擊確認,發(fā)布任務(wù)流。