HANA DBでJOBスケジュールを実行してみる
XS Classicのスクリプト内で非同期でのSQL実行したかったので、
HANADB内のJOBスケジュールを動的に変更して非同期処理を行えるようにした。
本記事ではHANADBでのJOBスケジュール設定方法について記載します。
SAPHANAのjobについて
jobでできること
- プロシージャの実行
- XSJSアプリケーションの実行
※ cronと同様の指定で処理が実行できる
※ XSJSからスケジュールを動的に変更することで非同期処理を実装
リファレンスはこちら
.xsjobファイルと実行スクリプトの配置
-
SAP HANA Web-Based Development Workbench -> Editor画面でXSアプリケーションを作る
-
アプリケーションのルートPackage配下にJobディレクトリを作成する
-
.xsjobファイルとJOBで実行するスクリプトを作成する
.xsjobファイルの中身
{
"description": "test job",
"action": "pkg.job:jobtest.xsjs::job_insertTask.xsjs",
"schedules": [
{
"description": "test schedule",
"xscron": "* * * * * * 59",
"parameter": {
"param1" : "param Value"
}
}
]
}
以下を記載
"action"
:実行したいスクリプトのファイル名
"schedules"
:JOBスケジュールの設定
"xscron"
:jobの実行日時
"parameter"
:jobに引き渡すパラメータ(※任意)
XSjobの有効化手順
.xsjobファイルを作成したらSAP HANAのアドミン画面に行く
HANA admin画面への入り方
URL
https:// <あなたのHANADBドメイン> /sap/hana/xs/admin/
権限
ログインするユーザーに以下の権限が必要
sap.hana.admin.roles::Monitoring
sap.hana.xs.admin.roles::HTTPDestAdministrator
sap.hana.xs.admin.roles::HTTPDestViewer
sap.hana.xs.admin.roles::JobAdministrator
sap.hana.xs.admin.roles::JobSchedulerAdministrator
sap.hana.xs.admin.roles::JobViewer
sap.hana.xs.admin.roles::RuntimeConfAdministrator
sap.hana.xs.admin.roles::RuntimeConfViewer
sap.hana.xs.admin.roles::SAMLAdministrator
sap.hana.xs.admin.roles::SAMLViewer
sap.hana.xs.admin.roles::SQLCCAdministrator
sap.hana.xs.admin.roles::SQLCCViewer
sap.hana.xs.admin.roles::TrustStoreAdministrator
sap.hana.xs.admin.roles::TrustStoreViewer
sap.hana.xs.lm.roles::Administrator
-
下図赤枠部分に必要項目を入力する
USER : ジョブを実行するDBユーザー
PASSWORD : DBユーザーのパスワード
ACTIVE : ジョブを有効化する場合はチェックを入れる
-
設定を保存する
footerのSaveボタン押下
.xsjobの設定確認・編集・ログ
最後に
非同期でSQLを実行したかったので
SQL用のスクリプトを作成してJOBとして登録→XSJSで動的にスケジュール作成
という流れで実装しました。
XSCでのJOB登録等は別途記事にします。