SAP HANA DB でJOBスケジュールを設定する方法

# HANA DBでJOBスケジュールを実行してみる
XS Classicのスクリプト内で非同期でのSQL実行したかったので、
HANADB内のJOBスケジュールを動的に変更して非同期処理を行えるようにした。

本記事ではHANADBでのJOBスケジュール設定方法について記載します。


## SAPHANAのjobについて
**jobでできること**

- プロシージャの実行
- XSJSアプリケーションの実行

※　cronと同様の指定で処理が実行できる
※　XSJSからスケジュールを動的に変更することで非同期処理を実装

リファレンスは[こちら](https://help.sap.com/viewer/52715f71adba4aaeb480d946c742d1f6/2.0.00/en-US/445b9667c4aa4a7b9a17b9b45eacb435.html)


## .xsjobファイルと実行スクリプトの配置

1. SAP HANA Web-Based Development Workbench -> Editor画面でXSアプリケーションを作る

2. アプリケーションのルートPackage配下にJobディレクトリを作成する

3. .xsjobファイルとJOBで実行するスクリプトを作成する


![図1.png](https://qiita-image-store.s3.amazonaws.com/0/159467/25227ae0-1b70-8414-a5d3-ff5612e0fb2b.png)


.xsjobファイルの中身

```javascript:insertTask.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
```


1. アドミン画面で.xsjobファイルを作成したディレクトリに遷移する
画面左側のパッケージから該当のパスまで移動
![図2.png](https://qiita-image-store.s3.amazonaws.com/0/159467/c68c0438-3156-ab6d-015e-347b8182dc1f.png)



2. xsjobの設定画面を開く
作成した.xsjobファイルを選択する
Configurationタブを押下
![3.png](https://qiita-image-store.s3.amazonaws.com/0/159467/0cceba18-e667-6980-630f-c1fbe00cb4d9.png)

3. 下図赤枠部分に必要項目を入力する
USER : ジョブを実行するDBユーザー
PASSWORD : DBユーザーのパスワード
ACTIVE : ジョブを有効化する場合はチェックを入れる
![4.png](https://qiita-image-store.s3.amazonaws.com/0/159467/2eaf016a-939a-60c5-df51-1161914142b1.png)

4. 設定を保存する
footerのSaveボタン押下

5. メニューから「XS Job Dashboard」を押下
![5.png](https://qiita-image-store.s3.amazonaws.com/0/159467/e4f5c378-89ff-ad47-ac3b-ca253b79391a.png)

6. Scheduler Enabled　のチェックを有効にする
![8.png](https://qiita-image-store.s3.amazonaws.com/0/159467/4f98a838-8ee8-a47a-21db-845484f40a5d.png)



### .xsjobの設定確認・編集・ログ

1. メニューから「XS Job Dashboard」を押下
![5.png](https://qiita-image-store.s3.amazonaws.com/0/159467/e4f5c378-89ff-ad47-ac3b-ca253b79391a.png)

2. 確認したいJobを選択
![6.png](https://qiita-image-store.s3.amazonaws.com/0/159467/f6877a4a-7481-c8be-1696-3a6a359da786.png)


3. JobScheduleが表示される
![7.png](https://qiita-image-store.s3.amazonaws.com/0/159467/6f0d1172-088a-062e-4815-54a4f2583d1b.png)



4. ログ確認画面
View Logsクリックで実行ログ画面が見れる


### 最後に
非同期でSQLを実行したかったので
SQL用のスクリプトを作成してJOBとして登録→XSJSで動的にスケジュール作成
という流れで実装しました。

XSCでのJOB登録等は別途記事にします。