Data Management (DMS) のタスクオーケストレーション機能では、タスクノードを有向のタスクフローで接続し、定期スケジュールで実行する自動化されたワークフローを構築できます。本チュートリアルでは、ユーザーの累計購入金額がしきい値を超えた場合にクーポンを自動発行するという具体的な eコマースのシナリオを紹介します。
このタスクフローでは、以下の 3 種類のノードを使用します:
単一インスタンス向け SQL 代入 — プロモーション設定をクエリし、結果を出力変数として公開します
条件分岐 — プロモーションがアクティブかどうかを評価します
単一インスタンス SQL — 対象となるユーザーをクーポン発行テーブルに挿入します
作業完了後、このロジックを定期的に実行し、結果をデータベースに自動書き込みするタスクフローが完成します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
DMS で作成済みのデータベースインスタンス
対象データベースに対する権限変更(権限の申請方法については、「概要」をご参照ください)
ステップ 1:データベーステーブルのセットアップ
このタスクフローでは、2 つのソーステーブルから読み取り、1 つの出力テーブルに結果を書き込みます。
activity_setting — プロモーション設定(プロモーションの有効/無効、購入金額のしきい値、クーポン割引額)を格納します
consumption_records — 各ユーザーの購入トランザクションを記録します
voucher_send_list — タスクフローによって生成されたクーポン発行結果を格納します
以下の手順に従って、テーブルを作成し、テストデータをロードします。
SQL コンソールを開く
DMS コンソール V5.0 にログインします。
左上隅の
アイコンにポインターを合わせ、すべての機能 > SQL コンソール > SQL コンソール を選択します。通常モードでは、上部ナビゲーションバーから SQL コンソール > SQL コンソール を選択します。
まずデータベースを選択してください ダイアログボックスで、ご利用のデータベースを検索し、検索結果から選択して、確認 をクリックします。
テーブルの作成
SQL エディターで、以下の各 SQL ステートメントを 1 つずつ実行します。各ステートメントをコピー&ペーストした後、実行 をクリックします。
activity_setting(プロモーション設定テーブル):
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(購入トランザクションテーブル):
CREATE TABLE `consumption_records` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'レコード ID',
`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(クーポン発行テーブル):
CREATE TABLE `voucher_send_list` (
`Id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'レコード ID',
`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;データのロード
プロモーション設定を挿入します。本例では、has_promotion = 1(アクティブ)、購入しきい値を 100、クーポン割引額を 30 と設定します。
INSERT INTO activity_setting(has_promotion, consumption_limit, quota)
VALUES('1','100','30');DMS のテストデータ生成機能を用いて、consumption_records にテスト用の購入レコードを生成します。詳細については、「テストデータの生成」をご参照ください。
以下の図は、consumption_records テーブルへのデータ生成設定の一例を示しています。

ステップ 2:タスクフローの作成
DMS コンソール V5.0 にログインします。
左上隅の
アイコンにポインターを合わせ、すべての機能 > Data+AI > データ開発 > タスクオーケストレーション を選択します。通常モードでは、上部ナビゲーションバーから [Data+AI] > [Data Development] > [Task Orchestration] を選択します。
タスクオーケストレーション ページで、タスクフローの作成 をクリックします。
新規タスクフロー ダイアログボックスで、タスクフロー名 および 説明 を設定し、OK をクリックします。
ステップ 3:ノードの追加と接続
キャンバス左側の タスクタイプ リストから、以下のノードをキャンバス上にドラッグします:単一インスタンス向け SQL 代入、条件分岐、および 単一インスタンス SQL。
ノードを順に接続します。
単一インスタンス向け SQL 代入 の右側にある中抜き円にポインターを合わせ、条件分岐 へ線を描画します。
条件分岐 の右側にある中抜き円にポインターを合わせ、単一インスタンス SQL へ線を描画します。
ステップ 4:ノードの構成
単一インスタンス向け SQL 代入ノード
このノードは、activity_setting からプロモーション設定を読み取り、各カラム値を出力変数として格納します。後続ノードでは、${variable_name} 構文でこれらの変数を参照します。
単一インスタンス向け SQL 代入 ノードをダブルクリックします。
ドロップダウンリストから、ご利用のデータベースを検索・選択します。
SQL エディターに以下を入力します。
select * from activity_setting limit 1右側ナビゲーションウィンドウで、変数設定 タブをクリックし、出力変数 タブを選択します。
変数の追加 をクリックし、以下の出力変数を追加します:
Quota、HasPromotion、およびConsumptionLimit。
ノード実行後、クエリ結果はこれらの 3 つの変数にマップされます。条件分岐ノードおよび単一インスタンス SQL ノードでは、それぞれ ${HasPromotion}、${Quota}、${ConsumptionLimit} として参照されます。
構成の詳細については、「SQL 代入ノードの構成」をご参照ください。
条件分岐ノード
条件分岐 ノードをダブルクリックします。
HasPromotionがアクティブであるかを評価する条件式を構成します。
以下の図は、構成済みの条件式を示しています。

構成の詳細については、「条件分岐ノードの構成」をご参照ください。
単一インスタンス SQL ノード
単一インスタンス SQL ノードをダブルクリックします。
SQL エディターに以下のステートメントを入力します。
${Quota}、${ConsumptionLimit}、および${bizdate}変数を用いて、対象ユーザーをvoucher_send_listに挿入します。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}
ステップ 5:タスクフローのテスト
キャンバス左上隅の 試行実行 をクリックします。
実行が完了したら、SQL コンソール タブで以下のクエリを実行し、結果を確認します。
SELECT * FROM voucher_send_list;このテーブルには、設定済みのしきい値(
consumption_limit = 100)を超えた購入金額合計を持つユーザーごとに 1 行ずつレコードが含まれている必要があります。各行には、ユーザー ID、購入金額合計、およびクーポン割引額(quota = 30)が含まれます。
ステップ 6:スケジューリングの構成(任意)
タスクフローを定期スケジュールで実行するには、以下の手順を実行します。
キャンバス下部の 表示/非表示 アイコンをクリックします。
タスクフロー情報 タブをクリックします。
スケジューリング設定 セクションで、スケジューリングを有効化 をオンにして、スケジューリング周期を構成します。詳細については、「タスクフローの構成」をご参照ください。
ステップ 7:タスクフローの公開
公開後、タスクフローは構成済みのスケジューリング周期に従って自動的に実行されます。
キャンバス左上隅の 公開 をクリックします。
公開 ダイアログボックスで、備考 を設定し、公開 をクリックします。
次のステップ
SQL 代入ノードの構成 — SQL 代入ノードの全パラメーターのリファレンス
条件分岐ノードの構成 — 条件分岐ノードの全パラメーターのリファレンス
タスクフローの構成 — 全てのスケジューリングおよびタスクフロー構成オプション