コンテンツにスキップ
「プリザンター入門」発売中!

キューイング

プリザンターの年間サポートサービスのページへのリンクバナープリザンターの年間サポートサービスのページへのリンクバナー

(本機能はExtensionsトライアルで試用可能です)

概要

高負荷処理を、リクエスト中に即時実行するのではなく、バックグラウンドジョブとしてキュー(待ち行列)へ登録し、順次実行する機能です。ユーザは、画面を通じて自分が実行したジョブの一覧を確認できますが、他のユーザが実行したジョブの一覧を確認することはできません。

本機能の効果

本機能を有効化することで、以下の効果を得られます。

  1. 高負荷処理のリクエストタイムアウトを防ぐ
  2. 大量データ処理中のユーザ操作ブロックを防ぐ
  3. 高負荷処理の処理状況を可視化する

マルチテナント環境での利用

本機能をマルチテナント環境で利用する場合は、本ページに加え、「マルチテナント管理機能:キューイング」を参照してください。

キューイングの基本仕様

  1. ユーザがキューイングに対応した操作を実行すると、すぐには実行されず、ジョブとしてキューへ登録されます。キューへの登録は即座に完了し、ユーザは別の操作を実行できます。
  2. キューに登録されたジョブはジョブの管理画面で確認できます。
  3. ジョブは、最初、実行を待つ「待機」という「状況」でキューへ登録されます。ユーザは「待機」中のジョブをいつでもキャンセルできます。
  4. キューに登録されたジョブは、同一テナントにおいて先に登録されたジョブから順に1つずつ取り出され、実行されます。
  5. 実行が始まると、ジョブの「状況」は「待機」から「実行中」へ変わります。「実行中」のジョブは、キャンセルすることも、削除することもできません。
  6. ジョブの実行中に、予期せずプリザンターが再起動した場合、「実行中」のジョブは既定の設定では「エラー」に変わります。この挙動はパラメータ設定で変更可能です。
  7. ジョブの実行時間はプリザンターにより監視されています。ジョブの実行時間がパラメータで設定した閾値(時間)よりも長くなると、「状況」が「実行中」から「実行中(時間超過)」に変わります。「状況」が「実行中(時間超過)」のジョブは、ボタン操作により次のジョブ1つと並列実行できます。
  8. 実行中のジョブが正常終了すると、ジョブの「状況」は「実行中」から「完了」へ変わります。
  9. 実行中のジョブが異常終了すると、ジョブの「状況」は「実行中」から「エラー」へ変わります。
  10. 「状況」が「キャンセル」、「エラー」、「完了」のジョブは、画面操作で削除できるほか、一定時間経過後に自動削除するように設定することができます。

対応するジョブ種別

対応バージョン 対応するジョブ種別
1.5.6.0 以降 レコードの「エクスポート」
1.5.7.0 以降 レコードの「インポート」
1.5.8.0 以降 レコードの「AI連携」
1.5.9.0 以降 レコードの「一括削除」

注意事項

  1. 本機能を有効化する際は、BackgroundJobs.jsonのパラメータOutputFilePathとInputFilePathに適切な値を設定してください。未設定の場合、処理がエラーとなり、キュー機能を利用できません。

制限事項

  1. シングルテナントの場合、キューは同時実行1件(直列1本)で処理されます。
  2. マルチテナントの場合、キューは各テナントごとに同時実行1件(直列1本)で処理されます。

前提条件

  1. 年間サポートサービスの下記プラン契約者限定の機能です。
エントリー ベーシック ベーシックプラス ビジネス ビジネスプラス アンリミテッド
〇 〇 〇

キューイングを有効化する

キューイングを有効化するには、BackgroundJobs.jsonのBackgroundQueueをtrueに設定してください。

ジョブの管理画面

キューイングに対応したジョブを実行すると、ジョブはキューへ登録され、ジョブの管理画面から確認、操作できるようになります。詳細はジョブの管理画面を参照してください。

キューへ登録されたジョブが並ぶジョブの管理画面

ジョブの状況

  1. キューイングに対応した操作を実行すると、キューへジョブとして登録され、「状況」が「待機」となります。
  2. 「状況」が「待機」のジョブをキャンセルした場合は、「キャンセル」へ変化します。
  3. キューに登録されたジョブは先に登録されたものから順に実行され、「状況」が「待機」から「実行中」に変化します。
  4. 「状況」が「実行中」のジョブは、正常終了した場合に「完了」へ、異常終了した場合に「エラー」へ、それぞれ変化します。
  5. 「状況」が「実行中」のジョブが、パラメータで設定した閾値(時間)を超えても、「完了」にも「エラー」にもならない場合、「実行中(時間超過)」へ変化します。
  6. 「準備中」は、インポートなど、ファイルアップロードが必要な処理専用の「状況」です。エクスポート処理はこの「状況」に変化しません。「状況」が「準備中」のままBackgroundJobs.jsonのBackgroundJobTimeoutに設定した時間を超過(タイムアウト)した場合、「エラー」に変化します。エクスポートのように「準備中(時間超過)」には変化しません。「準備中」のジョブがある状態でアプリケーションが障害から復旧した場合、「BackgroundJobs.json」のRecoverActionの設定値にかかわらず、「エラー」に変化します。
状況 説明 キャンセル 削除
待機 キューへ登録され、実行待ちの状態。 可 可
準備中 CSVのアップロード中であることを示す状態 - -
実行中 キューから取得され、処理中の状態。 - -
完了 正常終了し、出力ファイルをダウンロードできる状態。 - 可
エラー 異常終了し、エラー内容を確認できる状態。 - 可
キャンセル 「待機」中にキャンセルされた状態。 - 可
実行中(時間超過) 設定した時間(閾値)を超え、処理が続いている状態 - -

ジョブの削除

完了したジョブや、エラーになったジョブ、キャンセルしたジョブは、ユーザが削除しない限りキューに残ります。以下の機能で、不要なジョブを削除できます。

  1. ジョブの管理画面では不要になったジョブを一括削除できます。
  2. 「詳細画面」では不要になったジョブを1つずつ削除できます。
  3. BackgroundService.jsonのパラメータ「DeleteBackgroundJobs」をtrueに設定することで、「状況」が「完了」「エラー」「キャンセル」となったジョブを、一定期間経過後に自動削除する機能を有効化できます。
  4. ジョブを削除すると、ジョブの完了と共に保存される「出力ファイル」も削除されます。

実行時間が長いジョブへの対応

3つのジョブ、ジョブA、ジョブB、ジョブCが、この順番でキューに登録されているケースで説明します。

ジョブAが「実行中」に変わると、次のジョブBは、ジョブAの完了を待たなければなりません。ジョブAの実行時間が長い場合、後続のジョブB、ジョブCがすぐに完了するジョブであっても、直前のジョブの完了を待つ必要があります。

ジョブA・B・Cが順番待ちになり、後続が待たされる様子を示す図

そこで、ジョブの実行時間に閾値を定め、閾値を超えても「状況」が「完了」または「エラー」に変わらないジョブを、次のジョブ1つと並列実行できるようにしています。閾値を超えたジョブは「状況」が「実行中(時間超過)」に代わります。ジョブAの実行中に、ジョブの管理画面を開き、ジョブAを選択して「次のジョブを実行」ボタンをクリックすると、次に待機中のジョブBを、ジョブAと並列実行できます。ジョブBがジョブAよりも先に「完了」した場合、もう一度ジョブAを選択して「次のジョブを実行」ボタンをクリックすると、次に待機中のジョブCをジョブAと並列処理できます。

実行時間を超過したジョブAと次のジョブBを並列実行する様子を示す図

ジョブの実行時間の閾値はBackgroundJobs.jsonのパラメータBackgroundJobTimeoutで設定できます。

「次のジョブを実行」に関する注意事項
「次のジョブを実行」によりジョブの並列実行を増やすとリソースの消費が進み、高負荷処理のリクエストタイムアウトを防ぐというキューイングの効果が薄れる可能性があります。マルチテナント環境下では「次のジョブを実行」を行ったジョブと同一のテナントの待機中ジョブ1件の処理を開始します。他のテナントのジョブを開始することはありません。

ジョブの参照・操作範囲

ユーザが参照、操作できるジョブの範囲は、ユーザの権限に応じて制御されます。

対象ユーザ 参照・操作範囲
特権ユーザ すべてのテナントのすべてのバックグラウンドジョブ
テナント管理者 自テナントのすべてのバックグラウンドジョブ
一般ユーザ 自テナント内の自分のバックグラウンドジョブのみ

ジョブが予約されているときの表示

1.5.9.0

キューイングでは、ジョブは登録した時点ではなく、順番が来たときに実行されます。そのため、ジョブの実行を待っている間に同じテーブルのレコードを一括削除・一括更新・インポートすると、予約中のジョブの処理と重なることがあります。キューにジョブが登録されているテーブルを開くと、一覧画面の上部や、操作ダイアログの一部に、ジョブが予約されていることを知らせるメッセージが表示されます。そのテーブルに未完了の処理があることを、操作の前に確かめられます。

表示される場所 メッセージ
画面上部のメッセージ バックグラウンドジョブが予約されています:{ジョブ種別}
「エクスポート」「インポート」「一括更新」のダイアログ バックグラウンドジョブが予約されています。
「一括削除」の確認メッセージ バックグラウンドジョブが予約されています。本当に削除してもよろしいですか?

{ジョブ種別}の部分には、「エクスポート」のようなジョブ種別の表示名が入ります。予約されているジョブ種別が複数ある場合は、「エクスポート, インポート」のようにカンマ区切りで並びます。

画面上部のメッセージ

画面上部のメッセージは、期限付きテーブルと記録テーブルの一覧画面、カレンダー、クロス集計、ガントチャート、バーンダウンチャート、時系列チャート、分析チャート、カンバン、画像ライブラリに表示されます。

メッセージには、予約されているジョブのジョブ種別が表示されます。メッセージの「バックグラウンドジョブ」をクリックすると、ジョブの管理画面が表示されます。

一覧画面の上部に、エクスポートとインポートのジョブが予約されていることを示すメッセージが表示された画面

ダイアログ

「エクスポート」「インポート」「一括更新」のダイアログでは、上部にメッセージが表示されます。一括更新はキューイングに対応していませんが、テーブルにジョブが予約されている場合は、一括更新のダイアログにもメッセージが表示されます。

エクスポートのダイアログの上部に、バックグラウンドジョブが予約されていることを示すメッセージが表示された画面

一括削除の確認メッセージ

一覧画面で「一括削除」ボタンをクリックすると表示される確認メッセージに、ジョブが予約されていることを知らせる文が加わります。

一括削除の確認メッセージに、バックグラウンドジョブが予約されていることを示す文が加わった画面

表示の条件

  1. 画面を開いた時点で、表示中のテーブルに「状況」が「準備中」「待機」「実行中」「実行中(時間超過)」のジョブがある場合に表示されます。ジョブが「完了」「エラー」「キャンセル」になると、表示されなくなります。
  2. 他のユーザが実行したジョブも対象です。ただし、一般ユーザはジョブの管理画面で他のユーザのジョブを確認できません(「ジョブの参照・操作範囲」を参照)。
  3. 対象のジョブ種別は「エクスポート」「インポート」「一括削除」です。「AI連携」のジョブは対象外です。
  4. 情報公開機能で公開したページには表示されません。

対応バージョン

対応バージョン 内容
1.5.6.0 以降 機能追加
1.5.7.0 以降 対応するジョブ種別に「インポート」を追加
1.5.8.0 以降 対応するジョブ種別に「AI連携」を追加
1.5.9.0 以降 対応するジョブ種別に「一括削除」を追加、ジョブが予約されているときの表示を追加

関連情報