15.3.4 バックグラウンド・ページ処理の理解

バックグラウンド・ページ処理を使用すると、開発者は、フォアグラウンドまたはバックグラウンドで実行できる一連のページ・プロセスを実行できます。

15.3.4.1 バックグラウンド・ページ・プロセスの理解

バックグラウンド・ページ・プロセスについて学習します。

実行チェーン・プロセス・タイプを使用すると、ページ処理をバックグラウンドで実行できるため、ユーザーは処理が終了するまで待機する必要がありません。一般的なユースケースは、データ・ロードやコストの高いデータ処理などの長時間実行操作です。実行チェーン・プロセス・タイプには、実際の処理を行う1つまたは複数の子プロセスを含めることができ、1つずつ実行されます。実行チェーンは、バックグラウンドまたはフォアグラウンドで実行できます。

バックグラウンド・ページ・プロセスの作成には、次の一般的なステップが含まれます。

  • ページ・デザイナで、実行チェーン・ページ・プロセスを作成します。
  • 実行チェーン・プロセスに、実際の処理を実行する子プロセス(PL/SQLコードの実行、データのロードなど)を追加します。
  • 実行チェーン属性を編集し、「バックグラウンドで実行」スイッチを有効にします。

ヒント:

APEX_BACKGROUND_PROCESS APIを使用して、バックグラウンド・プロセスをプログラムで監視できます。Oracle APEX APIリファレンスAPEX_BACKGROUND_PROCESSを参照してください

バックグラウンド・プロセスを使用したアプリケーションの再インポートについて

バックグラウンド・プロセスを使用したアプリケーションの再インポートは、標準のアプリケーション・エクスポートと比較して、ワークフローが若干異なります。インポート中に、既存のバックグラウンド・プロセスの処理方法を確認するプロンプトが表示されます。バックグラウンド・プロセスを含むアプリケーションの再インポートを参照してください。

同時実行スケジューラ・ジョブの制限の構成

バックグラウンド・ページ処理は、実際にはデータベース・スケジューラ(DBMS_SCHEDULER)によって実行されます。つまり、バックグラウンド・ページ処理ジョブを実行するには、アプリケーションの解析スキーマにCREATE JOB権限が付与されている必要があります。

バックグラウンド・ページ処理ジョブを同時に実行するための制限は、次のように構成できます。新しいバックグラウンド実行が構成された制限を超える場合は、実行中の実行のいずれかが終了し、スロットが使用可能になるまでキューに入れられた状態で待機します。

  • インスタンス・レベル(デフォルト)。「インスタンスの設定」で「バックグラウンド・ジョブ」属性を構成します。インスタンス・レベルの設定は、すべてのワークスペースのデフォルトとして機能し、ワークスペース・レベルでオーバーライドできます。

    Oracle APEX管理ガイドバックグラウンド・ジョブの構成を参照してください

  • ワークスペース・レベル。「ワークスペースの分離」の「バックグラウンド・ページ・プロセス・ジョブの最大数」属性を編集します。ワークスペース制限は、そのワークスペース内のすべてのアプリケーションの最大として機能します。

    Oracle APEX管理ガイドワークスペース分離属性の構成を参照してください

  • アプリケーション・レベル「アプリケーション定義」、「最大バックグラウンド・ページ・プロセス・ジョブ」属性を編集します。この制限は、このアプリケーションに固有です。この設定を使用して、ワークスペース制限をそのワークスペースのアプリケーション間で分散します。ワークスペース制限より大きい値を構成した場合、この制限は無視され、かわりにワークスペース制限が使用されます。

    アプリケーション・レベル「アプリケーション定義」、「最大バックグラウンド・ページ・プロセス・ジョブ」属性を編集します。プロパティを参照してください。

15.3.4.2 「バックグラウンド・ページ・プロセスの作成」ページ・プロセス

実行チェーン・プロセス・タイプを使用してバックグラウンド・ページ・プロセスを作成します。このプロセス・タイプには、順番に実行される子プロセスが含まれています。実行チェーンはバックグラウンドまたはフォアグラウンドで実行できます。

「実行チェーン」プロセス・タイプを使用してバックグラウンド・ページ・プロセスを作成するには:

  1. ページ・デザイナでページを表示します。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
    2. アプリケーションを選択します。
    3. ページを選択します。

      ページ・デザイナが表示されます。

「実行チェーンの作成」ページ・プロセス:

  1. 「プロセス」タブで、プロセスが発生するノードを探します。右クリックして、「プロセスの作成」を選択します。

プロパティ・エディタで、実行チェーン・プロセスを構成します。

  1. 「識別」で、次のステップを実行します。
    1. 識別、名前 - 開発者が容易に識別できるプロセスの名前を入力します。
    2. 識別、タイプ - 「実行チェーン」を選択します。
    3. 識別、実行チェーン - この属性は、ネストされた実行チェーンのサポートを有効にします。この属性を使用して、別の実行チェーンをこのチェーンの親として定義します。この例では、「なし」を選択します。
  2. 「設定」で、次のようにします。
    1. 設定、バックグラウンドで実行 - このオプションを有効にすると、バックグラウンドでこのチェーンが実行されます。
    2. 設定、実行のシリアライズ - この実行チェーンの実行をシリアライズするかどうかを指定します。有効にすると、バックグラウンドでの同時実行を回避するために、(すべてのAPEXセッションからの)すべての実行がシリアライズされます。この設定は、このチェーンのプロセスが、表の同じ行に対してDMLを実行するなど、同じリソースに対して機能する可能性が高い場合に使用します。
    3. 設定、実行IDをアイテムに返す - 実行IDを返すページ・アイテムを選択します。実行IDに基づいて、バックグラウンド実行の現在のステータスをフェッチできます。
    4. 設定、一時ファイル処理 - 「ファイル参照」ページ・アイテムからアップロードされた一時ファイルの処理方法を決定します。オプションは次のとおりです。
      • 無視 - バックグラウンド実行のために一時ファイルを作業セッションに移動もコピーもしません。バックグラウンド・プロセスがアップロードされたファイルで機能しない場合は、このオプションを選択します。
      • 移動 - バックグラウンド実行のために一時ファイルを作業セッションに移動します。一時ファイルへのアクセスが1つのバックグラウンド実行チェーンでのみ必要な場合は、このオプションを選択します。
      • コピー - バックグラウンド実行のために一時ファイルを作業セッションにコピーします。複数のバックグラウンド実行チェーンがあり、それらのすべてに一時ファイルへのアクセスが必要な場合は、このオプションを選択します。
    5. 設定、実行制限 - 実行制限が指定されている場合、アプリケーション・ユーザーが指定したバックグラウンド実行の制限を超えてリクエストすると、Oracle APEXによってエラー・メッセージが表示されます。たとえば、値3を指定すると、4番目のバックグラウンド実行を送信しようとしたときにエラー・メッセージが表示されます。この属性は、ユーザーが大量のバックグラウンド実行をサーバーに送信できないようにするのに役立ちます。
  3. 「実行」で、次の操作を実行します:
    1. 実行、順序 - この計算の順序を指定します。これによって実行の順序が決まります。

      2つのコンポーネントの順序値が同じである場合は、アプリケーションを別の環境にエクスポートおよびインポートするときに、異なる順序で実行されることがあります。

    2. 実行、ポイント - このプロセスが実行されるポイントを選択します。
    3. 実行、プロセスの実行 - このプロセスが実行される頻度を選択します。
  4. 「成功メッセージ」で、次のステップを実行します。
    • 成功メッセージ、成功メッセージ - このプロセスの成功メッセージを入力します。

      プロセスが実行され、エラーが発生しない場合は、表示される結果のページの通知セクションに、このプロセス成功メッセージが表示されます。URLリダイレクトを使用して別のページにブランチする場合は、成功メッセージの保存属性を選択する必要があります。

      さらに学習するには、プロパティ・エディタで属性を選択し、中央ペインで「ヘルプ」タブをクリックして参照してください。

  5. 「エラー」で、次のステップを実行します:
    1. エラー、エラー・メッセージ - このプロセスのエラー・メッセージを入力します。

      未処理例外が発生した場合、このメッセージが表示されます。エラー・プロセスが停止した後は、常にロールバックが実行され、エラー・メッセージが表示されます。

    2. エラー、表示位置 - このプロセスが正常に完了しなかった場合のこのプロセス・エラー・メッセージの表示場所を選択します。
  6. 「保存」をクリックします。

1つ以上の子プロセスを作成します。

  1. 子プロセスの作成:
    1. 「プロセス」タブで、「実行チェーン」プロセスを選択し、右クリックして「子プロセスの作成」を選択します。
      新しい子プロセスが「プロセス」の下に表示されます。
    2. プロパティ・エディタで、プロセス属性を構成します。

      属性についてさらに学習するには、プロパティ・エディタで属性を選択し、中央ペインで「ヘルプ」タブをクリックして、参照してください。

    3. 「保存」をクリックします。
  2. 前のステップを繰り返して、追加の子プロセスを作成します。

15.3.4.3 現在実行中のバックグラウンド・プロセスの監視

バックグラウンド・プロセスを監視するには、ランタイム開発者ツールバーの「セッション」をクリックします。

ヒント:

ワークスペース管理のアクティブ・セッションの「バックグラウンド処理」レポートを表示することもできます。「管理」メニューから、「アクティビティの監視」「アクティブ・セッション」の順に選択します。アクティブ・セッションを選択し、「バックグラウンド処理」を選択します。

プロセスを監視するには:

  1. 開発者としてアプリケーションを実行します。
  2. 実行時開発者ツールバーを見つけます。デフォルトでは、ページの下部に実行時開発者ツールバーが表示されます。
  3. 実行時開発者ツールバーで、「セッション」「セッション・ステートの表示」の順にクリックします。

    セッション・ページが表示され、ページの中央に次の情報が表示されます。

  4. 「ビュー」から「バックグラウンド実行」を選択し、「設定」をクリックします。
    次の例に示すように、「バックグラウンド処理」リージョンが表示され、現在実行中のバックグラウンド・プロセスが表示されます。background_processing.pngの説明が続きます
    図background_processing.pngの説明
  5. ステータス - 含めるバックグラウンド実行を構成し、「実行」をクリックします。使用可能なステータスは次のとおりです。
    • 実行のために送信
    • スケジューラ・ジョブ作成
    • 実行中
    • 正常に終了
    • 終了
    • 失敗
  6. 現在実行中のバックグラウンド・プロセスを終了するには、「終了」をクリックします。