こんにちは。
リーデックス小川です。
今回は、プリザンターのサーバスクリプトを定時処理することができる「バックグラウンドサービス」についてのブログ記事です。
定時処理は、Linuxでは「cron」、Windowsでは「タスクスケジューラ」が有名ですが、プリザンターでも「バックグラウンドサービス」を使用して実行できます。
プリザンターで定時処理を行いたい方はぜひご参照ください。
サーバスクリプトとは?
サーバスクリプトは、テーブルの管理では実現できない処理を、サーバサイドのJavaScriptで追加することができる機能です。以前、サーバスクリプトについてまとめた記事がありますので、ご覧ください。
また、関連する記事もありますのでご参照ください。
バックグラウンドサーバスクリプトとは?
サーバスクリプトを指定したタイミングで実行する機能です。バックグラウンドで処理されるため、ユーザは実行されていることを気にすることはなく業務を続けることができます。
タイミングは、1回のみや、毎時間ごと何分、毎日何時何分、などの指定が可能です。詳細な指定方法については、後述します。
バックグラウンドサーバスクリプトを使用するには
バックグラウンドサーバスクリプトを使用するには、パラメータファイル「BackgroundService.json」のBackgroundServerScriptをtrueに変更する必要があります。
| パラメータ名 | 設定例 | 説明 |
|---|---|---|
| BackgroundServerScript | false | 本パラメータをtrueに設定するとバックグラウンドサーバスクリプトが有効化されます。 |
上記表に従い、パラメータを変更してください。
"BackgroundServerScript": true,
※パラメータファイルについては過去のブログ記事「プリザンターのパラメータを設定するには?」でご紹介しています。
バックグラウンドサーバスクリプトの設定方法
それでは、バックグラウンドサーバスクリプトについて設定します。「管理」→「テナントの管理」より「サーバスクリプト」のタブをクリックし、その下の新規作成ボタンをクリックします。

テーブルのサーバスクリプトの登録画面とは少し違い、「実行ユーザ」「いますぐ実行」「スケジュール」が設定できます。

詳細は、下記表を参照ください。
| 項目名 | 説明 |
|---|---|
| ID | バックグラウンドサーバスクリプトのIDです。こちらは自動でIDが採番されます。 |
| 実行ユーザー | 項目をクリックし、表示されたダイアログから実行するユーザを設定します。 |
| 今すぐ実行 | バックグラウンドサーバスクリプトを即時実行するためのボタンです。 |
| タイトル | バックグラウンドサーバスクリプトのタイトルを設定します。 |
| 名称 | バックグラウンドサーバスクリプトの名称を設定します。 |
| サーバスクリプト | バックグラウンドサーバスクリプトの内容を設定します。 |
| 無効 | チェックボックスをオンにすると、バックグラウンドサーバスクリプトが無効化されます。 |
| 共有 | チェックボックスをオンにすると、その他のバックグラウンドサーバスクリプトの先頭に設定したコBackgroundServerScriptードが読み込まれます。 |
| スケジュール | バックグラウンドサーバスクリプトを実行するタイミングを設定します。詳細については下記の スケジュール設定 を参照してください。 |
スケジュール設定
スケジュールの「新規作成」ボタンをクリックすると、新規作成画面が表示されます。機関種別やタイムゾーンと、期間種別に対応した時間を入力できる画面が表示されます。

詳細は下記表をご参考ください。
| 項目名 | 説明 |
|---|---|
| 名称 | スケジュールの名称を設定します。 |
| 期間種別 | 毎時 / 毎日 / 毎週 / 毎月 / 1回だけ のいずれかを設定します。 |
| タイムゾーン | スケジュールの基準となるタイムゾーンを設定します。 |
| 毎時 | 実行する分を設定します。5分間隔で設定することが可能です。 |
| 毎日 | 実行する時刻を設定します。 |
| 毎週 | 実行する週、時刻を設定します。 |
| 毎月 | 実行する月、日、時刻を設定します。 |
| 1回だけ | 1回だけ実行する開始日時を設定します。 |
サンプルと実行例
それでは、実際にサンプルを設定してみます。
テーブル
任意の場所に記録テーブルを作成します。
サーバスクリプト
サーバスクリプトには下記を設定します。XXXXXには先ほど作成した記録テーブルのサイトIDを設定します。
const data ={ "Title": getNowDate() } items.Create(XXXXX,JSON.stringify(data)); function getNowDate(){ var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() + 1; var day = now.getDate(); var hours = now.getHours(); var minutes = now.getMinutes(); var seconds = now.getSeconds(); return `現在時刻: ${year}年${month}月${day}日 ${hours}時${minutes}分${seconds}秒`; }
スケジュール
スケジュールには「期間種別」を「毎時」とし、毎時「45」分に実行されるように設定しました。なお、毎時「45」分に設定しましたが、テストする場合は任意の時間で問題ありません。
また、「名称」は任意のものを、「タイムゾーン」は「Japan Standard Time」をそれぞれ設定します。

出力したテーブル
上記をそれぞれ追加し、テナント画面を更新するとセット完了です。指定した時間を過ぎた後、作成した記録テーブルの一覧を見ると、指定時間で1行追加されていることが分かります。

注意点
バックグラウンドサーバスクリプトは便利な機能ですが、下記のような点に注意してください。
- バックグラウンド処理はサーバリソースを使用するため、適切なスケジュール設定を行い、負荷が集中しないよう配慮が必要です。
- スケジュール設定でタイミングを詳細に指定できますが、頻度が高すぎる設定は負荷が上がるため注意してください。
- サーバースクリプトのエラーは画面上では表示されないため、システムログから確認してください。
まとめ
今回は、プリザンターのサーバスクリプトを定時処理することができる「バックグラウンドサービス」について書いてみました。
サーバの負荷には注意が必要ですが、プリザンターで定時処理が必要な場合には便利な機能ですので、ぜひご活用ください。
弊社では、スクリプトやスタイルを利用したカスタマイズについてご支援させていただいております。スクリプトについて相談したい、業務を改善のために実現したい機能がある、や、本記事や過去の記事のスクリプトを応用したい、などありましたら、お気軽にお問合せください。
それでは、今回はこの辺で。
最後までご覧いただき、ありがとうございました。