本ブログはこちらのブログの日本語版になります。SAP Data Warehouse Cloudによるメール通知機能ついて解説しています。
コンテンツ
- 概要
- 前提
- SAP Data Warehouse Cloud Viewsのセットアップ
- 通知テンプレート
- 設定: サービスインスタンス
- SAP Business Application Studioを使用したデプロイメント
- スケジューリング
- テストとメッセージ
1. 概要
2022年現在、SAP Data Warehouse Cloudは標準機能によるメールでの通知機能は提供されていません。本ブログでは、お客様がSAP Data Warehouse Cloud内の通知に対してメールでの通知機能を設定できるようにする方法を解説します。
2. 前提
以下を使用します。お客様のIT環境で使用可能かご確認ください。
- @sap/hana-client ^2.10.13
- express ^4.17.1
- node-json2html ^2.1.0
- nodemailer ^6.6.5
- nodemailer-smtp-transport ^2.7.4
- sap-cf-mailer 0.0.5
また、SAP Data Warehouse Cloud テナントと SAP BTP テナントも必要です。SAP BTPテナントでは、以下のサービスを有効にする必要があります。
- Job Scheduling Service
- SAP Business Application Studio
- Authorization and Trust Management Service
3. SAP Data Warehouse Cloud Viewsのセットアップ
以下のテーブルとビューを作成してください。
A) 通知タスクテーブル – SAP_TCT_NOTE_TASK_V_01 and/or 通知ANYテーブル – SAP_TCT_NOTE_ANY_V_01
このテーブルには、通知をトリガーする際の全てのログが含まれています。項目は以下のようにします。
- Notification_ID (String 100)
- Notification_Type (String 100)
- SPACE_ID (String 64)
- OBJECT_ID (String 256)
- EMAIL (String 256)
- LINK (String 1000)
- VAR_1 (String 5000)
- …
- VAR_5 (String 5000)
B) 通知タスクビュー – SAP_TCT_NOTE_UNION_V_01
通知タスクテーブルの結合ビューです。
- Notification_ID (String 100)
- Notification_Type (String 100)
- SPACE_ID (String 64)
- OBJECT_ID (String 256)
- STATUS (String 256)
- EMAIL (String 256)
- LINK (String 1000)
- VAR_1 (String 5000)
- …
- VAR_5 (String 5000)
C) 通知ステータステーブル – SAP_TCT_NOTE_STATUS_O_01 (OpenSQL) and/or 通知ステータステーブル – SAP_TCT_NOTE_STATUS_T_01
通知ステータステーブルです。
- Notification_ID (String 100)
- Notification_Type (String 100)
- EMAILSENT (Boolean)
- LAST_CHANGE_AT (Timestamp)
D) 通知ステータスビュー – SAP_TCT_NOTE_STATUS_V_01
通知ステータステーブルの結合ビューです。
- Notification_ID (String 100)
- Notification_Type (String 100)
- EMAILSENT (Boolean)
- LAST_CHANGE_AT (Timestamp)
E) 通知タイプテンプレートテーブル – SAP_TCT_NOTE_TEMPL_T_01
通知タイプごとのテンプレートテーブルです。
- Notification_Type (String 100)
- Template (String 5000)
F) オープン通知ビュー – SAP_TCT_NOTE_OPEN_V_01
オープン通知ビューです。
- Notification_ID (String 100)
- Notification_Type (String 100)
- SPACE_ID (String 64)
- OBJECT_ID (String 256)
- STATUS (String 256)
- EMAIL (String 256)
- LINK (String 1000)
- VAR_1 (String 5000)
- …
- VAR_5 (String 5000)
- EMAILSENT (Boolean)
- STATUS (String 60)
- LAST_CHANGE_AT (Timestamp)
- Template (String 5000)
4. 通知テンプレート
すべての通知テンプレートは、SAP_TCT_NOTE_TEMPL_T_01テーブルに格納されています。このテーブルには、成功メッセージ、エラーメッセージ、警告メッセージのテンプレートなど、あらゆる種類の通知タイプのレイアウトが保存されています。以下は、SAP Data Warehouse Cloud 内でエラーとなったタスクのテンプレートがどのように見えるかの例です。
{ "<>": "div", "style": "margin: 0; padding: 0; text-align: center;", "html": [ { "<>": "li", "style": "width: 80%; margin: 2% .35%; display: inline-flex; box-shadow: 0 2px 4px rgba(0,0,0, .2);", "html": [ { "<>": "ul", "style": "width: 100%; padding: 1% 2%; background: #fff; max-height: 220px; box-sizing: border-box;", "html": [ { "<>": "h3", "style": "text-align: center;", "html": "Failed Task" }, { "<>": "ul", "style": "list-style-type: disc; text-align: left;", "html": [ { "<>": "li", "html": "Where: ${VAR_4} ${OBJECT_ID} in ${SPACE_ID}" }, { "<>": "li", "html": "StartTime: ${VAR_2}" }, { "<>": "li", "html": "Activity: ${VAR_3}" }, { "<>": "li", "html": "Triggered: ${VAR_5}" }, { "<>": "li", "html": [ { "<>": "a", "href": "https://******.eu10.hcs.cloud.sap/dwaas-ui/index.html#/*******&/di/*****${LINK}", "html": "Integration Monitor" } ] } ] } ] } ] } ] }
メールテンプレートは、要望に応じて自由に変更ください。
5. 設定: サービスインスタンス
SAP BTPのスペース内に2 つのサービスインスタンスを作成する必要があります。アプリがデプロイされるターゲットスペースに移動し、インスタンスセクションからサービスインスタンスを作成します。
1つめのインスタンス “dwc-notification-secret”:
2つ目のインスタンス “dwc-notification-mailconfig”:
通知ソリューションをデプロイした後、これら2つのサービスインスタンスをnode.jsアプリとバインドします。
6. SAP Business Application Studioを使用したデプロイメント
スペース内でSAP Business Application Studio Serviceを開きます。Dev Space(最初はBasic tools and extensions + HTML5 Runner + MTA Toolsを選択)を作成し、SAP Data Warehouse Cloud Notification Solutionのリポジトリを複製してください。
通知ソリューションのリポジトリを複製します。複製後、親ディレクトリのmta.yamlファイルを開き、前のステップで作成したインスタンスがこのmtaファイルに記述されたとおりの名前になっているかどうかを確認します。
問題がなければ、mtarプロジェクトをビルドし、zip圧縮したmtarプロジェクトをターゲットスペースにデプロイします。
成功すると、ターミナルの出力に実行中のアプリケーションへのリンクが表示されます。
ここで、もう一度サービスインスタンスセクションを開き、先ほど作成した2つのユーザー提供サービスインスタンスとこの実行中のアプリのバインドが成功したかどうかを確認します。
アプリケーションへのリンクを開き、正しく起動しているか確認します。問題がなければ以下のように表示されます。
7. スケジューリング
SAP BTPのサブアカウントに移動して、Service Marketplaceを開きます。”Authorization and Trust Management Service”を検索し、インスタンスを作成して新しくデプロイされたアプリにバインドします。
再びService Marketplaceで今度は”Job Scheduling Service”を検索し、インスタンスを作成します。インスタンス名 + パラメータ JSON: { “enable-xsuaa-support”: true } を指定し、Instances and Subscription セクションに移動すると、新しく作成されたサービスが表示されます。このインスタンスをクリックし、ジョブスケジューリングインスタンスをアプリにバインドします。
スケジューラインスタンスを展開し、右上のドットメニューをクリックすると、ジョブスケジューラダッシュボードが表示されます。Configurationsページで、実行タイムアウトを編集できます。デフォルトは3時間に設定されています。
8. テストとメッセージ
通知ソリューションをローカルに複製し、親ディレクトリでnode appを実行すれば、ローカルでアプリをテストすることができます。
以下は、さまざまな種類のメッセージサンプルです。
- ANY ERROR CODE => 400、5xx などのエラーコードが表示された場合、アプリは正常に動作していません。SAP BTPコックピットからアプリを再起動してみてください。
- Emails were sent (…) => 正常に動作しています。
- No Email Notification to send. => 送信する通知メールが開いていない可能性があります。アプリをもう一度起動/トリガーしてください