Fitur orkestrasi task Data Management (DMS) mengoordinasikan dan menjadwalkan berbagai task. Anda dapat membuat alur task yang terdiri dari satu atau beberapa node task untuk menangani penjadwalan kompleks dan meningkatkan efisiensi pengembangan data.
Latar Belakang
Selama acara penjualan besar, platform e-commerce sering menjalankan kampanye promosi, seperti menerbitkan kupon kepada pengguna yang total pengeluarannya mencapai ambang batas tertentu. Topik ini menjelaskan cara menggunakan node SQL Assignment for Single Instance, node Conditional Branch, dan node Single Instance SQL dalam orkestrasi task untuk mengotomatisasi promosi ini di tingkat database.
Prasyarat
Anda memiliki sebuah database dan izin untuk memodifikasinya. Untuk meminta izin, lihat Ikhtisar kontrol akses.
Persiapkan lingkungan
Masuk ke DMS 5.0.
Arahkan pointer ke ikon
di pojok kiri atas Konsol DMS, lalu pilih . CatatanJika Anda menggunakan Konsol DMS dalam mode normal, pilih di bilah navigasi atas.
Pada kotak dialog Please select the database first, masukkan kata kunci untuk mencari database, pilih instans database dari hasil pencarian, lalu klik Confirm.
-
Buat tabel konfigurasi, tabel bisnis, dan tabel penerbitan kupon.
-
Buat tabel konfigurasi bernama
activity_setting. Tempel pernyataan SQL berikut ke editor SQL, lalu klik Execute.Pernyataan SQL:
CREATE TABLE `activity_setting` ( `has_promotion` tinyint(1) NOT NULL COMMENT 'Indicates whether a promotion is active', `consumption_limit` int(11) NOT NULL COMMENT 'Consumption threshold', `quota` int(11) NOT NULL COMMENT 'Coupon amount', PRIMARY KEY (`has_promotion`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=COMPACT AVG_ROW_LENGTH=16384; -
Buat tabel bisnis bernama
consumption_records. Tempel pernyataan SQL berikut ke editor SQL, lalu klik Execute.Pernyataan SQL:
CREATE TABLE `consumption_records` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Record ID', `time` datetime NOT NULL COMMENT 'Consumption time', `count` int(11) NOT NULL COMMENT 'Consumption amount', `user_id` bigint(20) NOT NULL COMMENT 'User ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Consumption records table' AUTO_INCREMENT=8001 ROW_FORMAT=COMPACT AVG_ROW_LENGTH=54; -
Buat tabel penerbitan kupon bernama
voucher_send_list. Tempel pernyataan SQL berikut ke editor SQL, lalu klik Execute.Pernyataan SQL:
CREATE TABLE `voucher_send_list` ( `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Record ID', `user_id` int(11) NULL COMMENT 'User ID', `consumption_sum` int(11) NULL COMMENT 'Total consumption', `quota` int(11) NULL COMMENT 'Coupon amount', PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1 ROW_FORMAT=COMPACT AVG_ROW_LENGTH=0;
-
-
Masukkan data ke tabel konfigurasi. Tempel pernyataan SQL berikut ke editor SQL, lalu klik Execute.
Pernyataan SQL:
INSERT INTO activity_setting( has_promotion, consumption_limit, quota) VALUES('1','100','30'); -
Masukkan data ke tabel bisnis. Gunakan fitur pembuatan data uji untuk menghasilkan data. Untuk informasi selengkapnya, lihat Test data generation.
Untuk menghasilkan data untuk tabel
consumption_records, konfigurasikan parameter sebagai berikut. Untuk bidang id (bigint(20) unsigned, primary key, auto-increment, not null), pilih algoritma Random Auto-increment dan atur Step menjadi 1. Untuk bidang time (datetime, not null), pilih algoritma Random dan atur rentang menjadi[2000-01-01 00:00:00, 2021-01-01 00:00:00]. Untuk bidang count (int(11), not null), pilih algoritma Random dan atur rentang menjadi[1, 1000]. Untuk bidang user_id (bigint(20), not null), pilih algoritma Random dan atur rentang menjadi[1, 2000]. Atur Rows to Generate menjadi 10000 dan Conflict Handling menjadi Skip on data conflict. Lalu, klik Submit.
Prosedur
-
Buat dan isi tabel konfigurasi, tabel bisnis, serta tabel penerbitan kupon. Untuk informasi selengkapnya, lihat Persiapkan lingkungan.
-
Buat alur task.
-
Masuk ke Data Management (DMS) 5.0.
-
Arahkan pointer ke ikon
di pojok kiri atas, lalu pilih . CatatanJika Anda menggunakan Konsol DMS dalam mode normal, pilih di bilah navigasi atas.
-
Klik Create Task Flow.
-
Pada kotak dialog New Task Flow, masukkan Task Flow Name dan Description, lalu klik OK.
-
-
Orkestrasikan node-node task.
-
Dari daftar Task Type di sebelah kiri, seret node SQL Assignment for Single Instance, node Conditional Branch, dan node Single Instance SQL ke Kanvas.
-
Hubungkan node-node tersebut untuk membentuk alur task.
Arahkan kursor ke node Single Instance SQL Assignment, klik lingkaran berongga yang muncul di sisi kanan node Single Instance SQL Assignment, lalu seret garis koneksi ke node Conditional Branch.
Arahkan pointer ke node Conditional Branch, klik lingkaran berongga yang muncul di sisi kanan node Conditional Branch, lalu seret garis koneksi ke node Single Instance SQL.

-
-
Konfigurasikan node-node task.
-
Pilih node SQL Assignment for Single Instance untuk dikonfigurasi. Untuk informasi selengkapnya, lihat Configure an SQL Assignment for Single Instance node.
-
Pilih database target.
-
Pada editor SQL, masukkan pernyataan SQL berikut:
select * from activity_setting limit 1 -
Pada bagian Variable Setting di sebelah kanan, tambahkan tiga variabel output: Quota (Coupon amount), HasPromotion (Indicates whether a promotion is active), dan ConsumptionLimit (Consumption threshold).
Pada editor SQL di sebelah kiri, masukkan
select * from activity_setting limit 1. Pada bagian pemetaan variabel output di sebelah kanan, petakan variabel ke hasil kueri sebagai berikut: Quota ke Baris 0 dan Kolom 2, HasPromotion ke Baris 0 dan Kolom 0, serta ConsumptionLimit ke Baris 0 dan Kolom 1.
-
-
Pilih dan konfigurasikan node Conditional Branch. Untuk informasi selengkapnya, lihat Configure a Conditional Branch node.
Konfigurasikan ekspresi kondisional sebagai berikut: atur Condition Field menjadi HasPromotion, Operator menjadi ==, dan Value menjadi 1.
-
Pilih node Single Instance SQL untuk dikonfigurasi.
Masukkan pernyataan SQL berikut:
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}
-
-
Di pojok kiri atas Kanvas, klik Try Run untuk menguji alur task.
Setelah uji coba selesai, lihat hasil eksekusi SQL untuk setiap node pada tab execution log di bawah Kanvas untuk memverifikasi bahwa alur task berjalan dengan benar.
Anda juga dapat mengkueri tabel
voucher_send_listdi Konsol SQL untuk memverifikasi hasilnya. Setelah uji coba selesai, jalankanSELECT * FROM voucher_send_list LIMIT 20;di Konsol SQL DMS. Hasilnya menunjukkan beberapa baris data dengan bidang sepertiId,user_id,consumption_sum, danquota. Nilai di kolomquotaadalah 30 untuk semua catatan yang dikembalikan, yang mengonfirmasi bahwa catatan penerbitan kupon telah ditulis dengan benar. -
Opsional: Konfigurasikan penjadwalan periodik.
-
Pada halaman pengeditan alur task, klik tab Task Flow Information di bagian bawah halaman.
-
Pada bagian Scheduling Settings, aktifkan sakelar Enable Scheduling dan konfigurasikan jadwalnya. Untuk informasi tentang parameter, lihat Scheduling cycle configuration.
-
-
Publikasikan alur task. Alur tersebut kemudian akan berjalan secara otomatis sesuai jadwal yang dikonfigurasi.
-
Di pojok kiri atas Kanvas, klik Publish.
-
Pada kotak dialog Publish, masukkan komentar di bidang Remarks, lalu klik Publish.
-