17 ジョブ・セットの定義および使用

この章では、Oracle Enterprise Schedulerのジョブ・セット(1つの単位として実行するためにグループ化できるジョブ定義の集合)を定義および発行する方法について説明します。

この章の内容は次のとおりです。

17.1 ジョブ・セットの定義および使用の概要

Oracle Enterprise Schedulerは、ジョブ・セットと呼ばれる、1つの単位として実行するためにグループ化できるジョブ定義の集合に対応しています。ジョブ・セットはネストできるため、ジョブ・セットにはジョブ定義の集合または1つ以上の子ジョブ・セットを含めることができます。ジョブ・セット内に含まれる各ジョブ定義やジョブ・セットは、ジョブ・セット・ステップと呼ばれます。

ジョブ・セットは、シリアル・ジョブ・セットまたはパラレル・ジョブ・セットとして定義されます。実行時、Oracle Enterprise Schedulerではパラレル・ジョブ・セット・ステップを並行して実行します。シリアル・ジョブ・セットが実行されるとき、Oracle Enterprise Schedulerでは、ステップを特定の順序で1つずつ実行します。Oracle Enterprise Schedulerでは、シリアル・ジョブ・セットを使用することによって、前のステップの実行ステータスに基づく、ステップ間の条件付き分岐がサポートされています。

シリアル・ジョブ・セットを定義してパラレル・ジョブ・セットを含めたり、パラレル・ジョブ・セットを定義してシリアル・ジョブ・セットを含めたりできます。パラレルおよびシリアル・ジョブ・セットが混在するジョブ・セットは、complex job setと呼ばれます。たとえば、シリアル・ジョブ・セットに子パラレル・ジョブ・セットが含まれる場合、シリアル・ジョブ・セットは子パラレル・ジョブ・セットに到達するまで、逐次実行されます。その後、子パラレル・ジョブ・セット内のすべてのジョブ定義またはジョブ・セット定義が並行して実行されます。子パラレル・ジョブ・セットが完了すると、続いて、シリアル・ジョブ・セットの残りのステップが逐次実行されます。ネストされたパラレル・ジョブ・セットは、ネストされていないパラレル・ジョブ・セットと同じように動作します。

ジョブ・セットのすべてのステップに対して、Oracle Enterprise Schedulerでは、特定のステップがジョブ・セット全体にどのように影響を及ぼすかについて、実行時の柔軟性をもたらすプロパティ(SYS_selectState)がサポートされています。このプロパティはステップごとに定義します。表17-1に、SYS_selectStateを示します。

表17-1 ジョブ・セット・ステップのプロパティ

プロパティ 説明

SYS_selectState

ジョブ・セットの状態を決定するときに、ジョブ・セット・ステップの結果の状態を含めるかどうかを指定します。ステップの実行状態がジョブ・セット全体の最終的な状態に影響するかどうかを指定します。

デフォルトでは、すべてのジョブ・セット・ステップがジョブ・セットの状態に影響を及ぼします。特定のジョブ・セット・ステップの状態がジョブ・セットの状態に影響しないようにするには、そのステップに対してSELECT_STATEfalseに設定します。ジョブ・セット・ステップの状態がジョブ・セット全体の状態に影響することを許可するには、そのステップに対してSELECT_STATEtrueに設定します。

Oracle Enterprise Schedulerには、複数のアプリケーションをまたいで1つのジョブ・セットを実行する機能が備えられています。ジョブ・セットはホスティング・アプリケーションで実行され、デフォルトで、すべてのジョブ・セット・ステップもそのアプリケーションで実行されます。

17.2 ジョブ・セットの定義

ジョブ・セットの内容は、ジョブ・セット・ステップを定義するときに指定します。たとえば、シリアル・ジョブ・セットの場合は、名前と実行モードを指定し、次に、ジョブ定義の順序を定義するジョブ・セット・ステップか、またはジョブ・セットの実行時に実行される子ジョブ・セットを追加します。

次を指定して、Oracle JDeveloperでジョブ・セットを定義できます。

  • ジョブ・セットの名前、パッケージおよび説明

  • ジョブ・セットのアプリケーション定義プロパティ

  • ジョブ・セットのシステム・プロパティ

  • ジョブ・セット・ステップの指定

17.2.1 ジョブ・セットの定義方法

Oracle Enterprise Schedulerのジョブ・セットは、名前、パッケージ、ジョブ・セット実行モード、ステップ定義、アプリケーション定義プロパティおよびシステム・プロパティによって定義されます。

ジョブ・セットを作成するには:

  1. Oracle JDeveloperで、プロジェクト内で右クリックして「新規ギャラリ」を表示します。

  2. 「すべてのテクノロジ」タブの「カテゴリ」で、「ビジネス層」を展開し、「エンタープライズ・スケジューラ・メタデータ」を選択します。

  3. 「アイテム」で、「ジョブ・セット」を選択し、「OK」をクリックします。これにより、「ジョブ・セットの作成」ウィンドウが表示されます。

  4. 「ジョブ・セットの作成」ウィンドウで、次を指定します。

    1. 「名前」フィールドにジョブ・セットの名前を入力するか、またはデフォルト名を受け入れます。

    2. 「パッケージ」フィールドに、ジョブ・セットのパッケージ名を入力します。

    3. 「場所」フィールドに、ジョブ・セット・ファイルが格納されているディレクトリの完全パスが表示されます。

    4. 「OK」をクリックします。これにより、ジョブ・セットが作成され、図17-1に示すように、ジョブ・セット定義のページが表示されます。

      図17-1 シリアル・ジョブ・セットが示されたジョブ・セット・エディタ

      シリアル・ジョブ・セットが示されたジョブ・セット・エディタ
  5. ジョブ・セット・エディタ・ペインで、「説明」フィールドにジョブ・セットの説明を入力します。

  6. 「ジョブ・セット・ステップ」領域で、「パラレル」または「シリアル」ラジオ・ボタンを選択してジョブ・セットに対してパラレルまたはシリアル実行モードを指定します。

  7. ジョブ・セット・エディタ・ペインでジョブ・セット・ステップを追加します。ジョブ・セット・ステップの追加の詳細は、「シリアル・ジョブ・セット・ステップの定義方法」または「パラレル・ジョブ・セット・ステップの定義方法」を参照してください。

  8. 「アプリケーション定義プロパティ」領域で、「追加」をクリックしてジョブ・セットに関連付けられているプロパティを追加します。これらを使用して、ジョブ・セットのアプリケーション固有またはステップ固有のアプリケーション定義プロパティを表します。アプリケーション定義プロパティの使用の詳細は、「パラメータとシステム・プロパティの使用の概要」を参照してください。詳細は、「ジョブ・セット・レベル・パラメータのマテリアライズに関する必知事項」を参照してください。

  9. 「システム・プロパティ」領域で、「追加」をクリックしてジョブ・セットに関連付けられているシステム・プロパティを追加します。システム・プロパティの使用の詳細は、「システム・プロパティの使用」を参照してください。

  10. 「アクセス制御」領域で、「追加」をクリックしてこのメタデータにアクセスできるロールのリストを、そのアクセス・レベルとともに変更します。アクセスの定義の詳細は、「Oracle Enterprise Schedulerセキュリティ」を参照してください。

  11. 「ローカライゼーション」領域で、このジョブ・セットをローカライズするための次の情報を入力します。

    • リソース・バンドルの基準名 -- 国際化された値を指定するリソース・バンドルの基準名

    • 表示名リソース・キー -- リソース・バンドルで表示名値を指定するリソース・キー

    • 説明リソース・キー -- リソース・バンドルで説明テキストを指定するリソース・キー

  12. ジョブ・セットを保存します

17.2.2 シリアル・ジョブ・セット・ステップの定義方法

シリアル・ジョブ・セット・ステップを定義するには、シリアル実行モードを選択し、次に、ジョブ・セット・ステップを追加します。ジョブ・セット・ステップは、使用可能なジョブ定義および現在のプロジェクトで定義されたジョブ・セットから作成されます。シリアル・ジョブ・セット・ステップは、ステップIDおよびそのステップに関連付けられるジョブ定義の子ジョブ・セット定義を指定する場合に定義します。次のステップを指定するために、ジョブ・セット・ステップの終了状態からのリンクも定義します。表17-2に、JDeveloperを使用して指定できる可能な終了状態を示します。

表17-2 ジョブ・セットのシリアル実行ステップの終了状態

終了状態 説明

SUCCEEDED

Oracle JDeveloperでは、この状態はチェックマーク・アイコンで示されます。このパスは、子ステップまたは子ジョブ・セットが正常に処理されたことを表します。

WARNING

Oracle JDeveloperでは、このステップは警告ボタンで示されます。子ステップまたは子ジョブ・セットによって警告が発生しました。

ERROR

Oracle JDeveloperでは、このステップはエラー・ボタンで示されます。子ステップまたは子ジョブ・セットの処理を実行するリクエストの一部の処理によって、エラーが発生しました。

シリアル・ジョブ・セット・ステップを追加するには:

  1. 最初に、適切なジョブ定義またはジョブ・セットを定義し、ステップを含める親ジョブ・セットを定義します。
  2. ジョブ・セット・エディタ・ペインの「ジョブ・セット・ステップ」領域で、「シリアル」実行モードを選択します。
  3. 「追加」ボタンをクリックして、ジョブ・セットのステップを追加します。これにより、「ステップの追加」ウィンドウが表示されます。
  4. 「ステップID」フィールドに、ステップIDを入力します。たとえば、step1と入力します。
  5. 「ジョブ」フィールドで、ステップに関連付けるジョブ定義またはジョブ・セットをドロップダウン・リストから選択します。たとえば、Job1を選択します。
  6. ステップ・レベルのアプリケーション定義プロパティを定義する必要がある場合は、「アプリケーション定義プロパティ」タブを選択してステップのプロパティを追加します。
  7. ステップ・レベルのシステム・プロパティを定義する必要がある場合は、「システム・プロパティ」タブを選択してステップのジョブ・セット・ステップ・システム・プロパティを追加します。
  8. ステップの宛先を選択します。「メイン・ダイアグラムへの挿入」を選択して、ステップをジョブ・セットの一部として追加できます。ステップを(エラーまたは警告状態の)別のステップで使用できるようにするには、「使用可能なステップのリストへの追加」を選択します。
  9. 「OK」をクリックします。これにより、図17-2に示すように、ジョブ・セット・ステップが追加されます。

    図17-2 ステップが追加されたジョブ・セット

    ステップが追加されたジョブ・セット
  10. エラー・アイコンの横のドロップダウン・リストから「停止」を選択するか、またはステップに対してERROR終了状態のステップを選択します。たとえば、ドロップダウン・リストからStep_errorを選択します(Step_errorを定義する必要があります)。
  11. 警告アイコンの横のドロップダウン・リストから「停止」を選択するか、またはステップに対してWARNING終了状態のステップを選択します。たとえば、ドロップダウン・リストからStep_warningを選択します(Step_warningを定義する必要があります)。
  12. 必要に応じて、「追加」ボタンをクリックして追加のステップを追加します。
  13. 図17-3に示すように、「OK」をクリックします。

    図17-3 2つのステップが追加されたジョブ・セット

    2つのステップが追加されたジョブ・セット

17.2.3 パラレル・ジョブ・セット・ステップの定義方法

ジョブ・セットにパラレル・ジョブ・セット・ステップを追加できます。

パラレル・ジョブ・セット・ステップを追加するには:

  1. 最初に、適切なジョブ定義とジョブ・セット定義および親ジョブ・セットを定義します。
  2. ジョブ・セット・エディタで、「パラレル」実行モードを選択します。
  3. 「追加」ボタンをクリックして、ジョブ・セットにジョブ・セット・ステップを追加します。

    「ステップの追加」ウィンドウが表示されます。

  4. 「ジョブ」フィールドで、ジョブ定義またはジョブ・セットを選択します。
  5. ステップ・レベルのアプリケーション定義プロパティを定義する必要がある場合は、「アプリケーション定義プロパティ」タブを選択してステップのプロパティを追加します。
  6. ステップ・レベルのシステム・プロパティを定義する必要がある場合は、「システム・プロパティ」タブを選択してステップのジョブ・セット・ステップ・システム・プロパティを追加します。
  7. 「OK」をクリックすると、ジョブ・セット・ステップが追加されます。
  8. 追加」ボタンをクリックします。
  9. 「ステップの追加」ダイアログで、パラレル・ジョブ・セットの次のジョブに使用するジョブ・セットまたはジョブ定義を選択します。
  10. 「OK」をクリックします。図17-4に示すように、ジョブ・セットにジョブ・セット・ステップが表示されます。

    図17-4 パラレル・ジョブ・セットへのジョブ・セット・ステップの追加

    パラレル・ジョブ・セットへのジョブ・セット・ステップの追加

17.2.4 ジョブ・セットの定義時の処理内容

Oracle JDeveloperでジョブ・セットを定義すると、Oracle JDeveloperによって、定義したステップを表す要素を含むXMLファイルが作成されます。

パラレル・ジョブ・セットを定義する場合は、同時に実行される一連のジョブ・セット・ステップを指定します。パラレル・ジョブ・セットにはステップのみが含まれ、すべてのステップが同時に実行されて、相互に依存することも各ステップの実行順序に依存することもないため、ステップ間のリンクは含まれません。

ジョブ・セットを定義すると、Oracle JDeveloperによって、Oracle Enterprise Schedulerのジョブ・ステップ・スキーマに準拠するXMLドキュメントが作成されます。

17.2.5 シリアル・ジョブ・セットに関する必知事項

シリアル・ジョブ・セットを定義する場合、関連付けられたXMLドキュメントにはジョブ・セット・ステップとリンクが含まれます。Oracle Enterprise Schedulerでは、シリアル・ジョブ・セットの定義に対して次の制限事項が適用されます。

  • ジョブ・セット内でのループを回避するため、ジョブ・セット定義に循環実行パスを含めることはできません。循環実行パス、すなわちループは、次のようにジョブ・セット・レベルで定義されます。ループは、1つのジョブ・セット・ステップから、任意の数の他のステップを経由するリンクに従って、同じジョブ・セット・ステップに戻るパスです。たとえば、Job_AからJob_BJob_Cへのフローが定義されたジョブ・セットにおいて、Job_BまたはJob_CからJob_Aに戻る実行パスを定義することはOracle Enterprise Schedulerによって許可されません。たとえば、成功、エラーまたは警告リンクのジョブ・セット・ステップ内のリンクの1つが同じジョブ・セット・ステップに戻る場合、循環実行パス、すなわちループを作成できます。このため、各ジョブ・セット・ステップはいずれかの使用可能なジョブ定義またはジョブ・セットにリンクするか、あるいはすべてのジョブ・セット・ステップで同じジョブ定義またはジョブ・セットを成功、エラーおよび警告の場合のリンクとして使用できます。ループとしては、ジョブ・セット・ステップIDによって識別されるジョブ・セット・ステップを経由するパスに基づくもののみが可能です。Oracle Enterprise Schedulerでは、ジョブ・セット・ステップ・レベルでのループを回避するために送信時にジョブ・セットが検証されます。また、Oracle JDeveloperではジョブ・セット・ステップ・レベルのループを含むジョブ・セットを作成することはできません。

  • ジョブ・セット内でのループを回避するため、ジョブ・セット定義に自己参照実行パスを含めることはできません。たとえば、Job_Bが定義されたジョブ・セットにおいて、Job_BERRORの終了状態で終了した場合のためにJob_BからJob_B自体への実行パスを定義することは、Oracle Enterprise Schedulerによって許可されません。ただし、ジョブ定義またはジョブ・セットに使用可能なRETRIESプロパティを使用して、構成されたRETRIESの数だけ複数実行を行うことができます。

  • ステップの終了状態に対してジョブ・セット・リンクが定義されていない場合、ステップが指定されていない終了状態で終了するとジョブ・セットが停止することを意味します。たとえば、状態WARNINGのステップJob_Dに対してリンクが定義されておらず、ステップJob_DWARNINGの状態で終了した場合、ジョブ・セットの実行は停止します。

各ジョブ・セット・ステップは、いずれかの使用可能なジョブ定義またはジョブ・セットを使用するように定義することも、複数のステップで同じジョブ定義またはジョブ・セットを使用するように定義することもできます。

17.2.6 ジョブ・セットのアプリケーション定義プロパティおよびシステム・プロパティに関する必知事項

ジョブ・セットのアプリケーション定義プロパティまたはシステム・プロパティが、メタデータで設定された、またはジョブ・リクエストを発行するときに設定されたアプリケーション定義プロパティまたはシステム・プロパティと競合する場合があります。ジョブ・セットのアプリケーション定義プロパティおよびシステム・プロパティが処理される方法の詳細は、「メタデータ・サービスでのパラメータの使用」および「ランタイム・サービスでのパラメータの使用」を参照してください。

17.2.7 ジョブ・セットの状態の優先度および状態遷移に関して実行時に行われる処理

実行時、ジョブ・セットの個々のステップは、表17-2に示す様々な終了状態で終了する可能性があります。ジョブ・セット・ステップがジョブ・セットである場合、ジョブ・セット・ステップもそれらのいずれかの終了状態で終了します。Oracle Enterprise Schedulerには、ジョブ・セット・ステップの終了状態について優先度の階層があります。これは、ジョブ・セットに複数のステップがある場合に、ジョブ・セットの終了状態には最も優先度の高い終了状態のステップの終了状態が適用されることを意味します。したがって、ステップの最も優先度の高い終了状態によって、ジョブ・セット全体の結果の状態が決定されます。

ジョブ・セットの結果の状態は、システム内の後続のすべての状態依存処理に影響を及ぼします。ジョブ・セットは、すべての子リクエストが完了した後にのみ、子リクエストの終了状態に基づいて終了状態への遷移の基本的なルールに常に従います。通常、ジョブ・セットは、すべての子リクエストが終了し、終了状態に遷移した後にのみ、計算されたいずれかの終了状態に遷移します。たとえば、特定のジョブ・セットが実際は別のジョブ・セット内のステップである場合、内部ジョブ・セット・リクエストの状態が計算される方法は、外部ジョブ・セット内での条件付き実行に影響を与えます。

表17-3に、可能なジョブ・セットの終了状態および示されるレベル(優先度の列)を示します。

表17-3 ジョブ・セットの終了状態の遷移

終了状態 説明 優先度

ERROR

ジョブ・セットのいずれかのステップがERRORの終了状態で終了した場合、他のステップがどのような状態であっても、ジョブ・セット全体にERRORの終了状態のマークが付けられます。

シリアル・ジョブ・セットでは、1つのステップがERRORになると、後続のステップは実行されません。パラレル・ジョブ・セットでは、すべてのステップが同時に開始され、ジョブ・セットの状態はジョブ・セット・ステップが終了状態に到達するまで決定されません。

ERROR状態は優先度が最も高くなります。

WARNING

ジョブ・セットのいずれかのステップがWARNINGの終了状態で終了し、終了状態がERRORのステップがない場合、ジョブ・セットはWARNINGの終了状態のマークが付けられます。終了状態がWARNINGの場合、後続処理が開始されます。

ERRORより低い

EXPIRED

少なくとも子リクエストの1つが期限切れになり、ERRORまたはWARNINGの終了状態で終了したステップがない場合、ジョブ・セットはEXPIRED状態に遷移します。

ERRORおよびWARNINGより低くなります。

CANCELLED

少なくとも1つの子リクエストで取消しの試行が正常に処理され、CANCELLED状態に遷移した場合、取消しの試行の実際の結果に基づいて、ジョブ・セットがCANCELLEDに遷移することがあります。取消しは、ジョブ・セット全体に対してリクエストされる場合と、特定の子リクエストに対してのみリクエストされる場合があります。

さらに、CANCELLEDへの遷移は終了状態の優先度に従います。したがって、ERRORWARNINGまたはEXPIREDの状態で終了したステップがなく、終了状態がCANCELLEDのステップが少なくとも1つある場合、ジョブ・セットはCANCELLEDの終了状態に遷移します。

ジョブ・セットが取り消された場合、追加または実行されていないステップは、最終状態のためにCANCELLEDとみなされます。

ERRORWARNINGおよびEXPIREDより低くなります。

SUCCEEDED

すべての子リクエストがSUCCEEDEDの終了状態で終了した場合にのみ、ジョブ・セットはSUCCEEDEDであるとみなされます。

SUCCEEDED状態は、すべての終了状態の中で優先度が最も低くなります。

表17-4に、追加の可能なジョブ・セットの状態を示します。

表17-4 可能なジョブ・セットの実行時の状態

状態 説明

WAIT

これは発行されたジョブ・セット・リクエストの初期状態です。ただし、ジョブ・セット・リクエストがRUNNING状態に遷移した後、生成されたすべての子リクエストはWAIT状態ではなく、直接READY状態に遷移します。

READY

ジョブ・セットは、WAITREADYRUNNINGの順に遷移します。これは、すべてのジョブ・セット・ステップに当てはまり、ステップがジョブ定義でもネストされたジョブ・セットでも同様です。

RUNNING

発行されたジョブ・セットは、WAITREADYRUNNING状態の順に遷移します。ネストされたジョブ・セットは、READYで始まりRUNNINGに遷移します。

CANCELLING

ユーザーがジョブ・セット全体の取消しをリクエストした場合、ジョブ・セットはCANCELLINGに遷移します。これは、ジョブ・セットを表す親リクエストのリクエストIDを使用してcancelRequest()をコールすることによって実行できます。親リクエストIDを渡すことは、ジョブ・セットの現在の(非終了)状態および子リクエストの状態に関係なく、ユーザーがジョブ・セット全体を取り消すことを示します。

このような場合、現在もアクティブでまだ終了状態に遷移していないすべての子リクエストに対して取消しが試行されます。

一方、取消しがジョブ・セットの特定の子リクエストに対して試行された場合、親リクエストの状態は変更されず、可能であれば特定の子リクエストのみがCANCELLINGに遷移します。

後処理中に取消しが発生した場合、状態はCANCELLEDではなくWARNINGに設定されます。取消しが発行される前にジョブ・セットが終了した場合、ジョブ・セットはSUCCEEDEDの状態になります。

COMPLETED

この状態は、ジョブ・セットまたはジョブ・セット・ステップの実行が終了し、後処理が開始されることを示します。

BLOCKED

BLOCKED状態は終了状態ではありません。ただし、ブロック状態が解消されるまで(非互換性など)、いずれのリクエストも長時間BLOCKED状態のままであることが可能です。

ジョブ・セットの場合、他のステップが完了するか、実行中の間、個々のステップはBLOCKEDになることがあります。ただし、ジョブ・セット自体はRUNNING状態のままとなります。その後、BLOCKED状態のステップを除く、ジョブ・セットのすべてのステップが完了した場合、ブロックされているステップを実行する準備が整うまで、ジョブ・セットでは以降の処理を続行できません。ブロックされているステップのブロックが解除されて完了すると、ジョブ・セットは先に進むことができます。ステップが完了した後、ジョブ・セットは最終的に適切な終了状態になります。

シリアル・ジョブ・セットの場合、ジョブ・セットはBLOCKED状態のステップで停止する可能性があります。そのような場合、それ以前のすべてのステップは完了し、ブロックされているステップが実行されるまでジョブ・セットは続行できません。

ただし、パラレル・ジョブ・セットでは、複数のステップがBLOCKED状態のままとなることがあります。さらに、一部のステップがブロックされている間も、他のステップは引き続き実行できます。

HOLD

HOLD状態はBLOCKED状態とよく似ています。BLOCKED状態と同じルールに従い、ステップがHOLD状態にある間ジョブ・セットでは実行を続行できません。実行フローの現在のステップがHOLD状態でスタックした場合、シリアル・ジョブ・セットは続行できません。パラレル・ジョブ・セットの場合は、他のすべてのステップは完了したが少なくとも1つのステップがHOLD状態でスタックした場合、ジョブ・セットはステップがHOLD状態でなくなったときに完了できます。

17.3 アプリケーション間ジョブ・セット

Oracle Enterprise Schedulerには、複数のアプリケーションをまたいで1つのジョブまたはジョブ・セットを実行する機能が備えられています。

  • ジョブ・セットFINには3つのステップがあり、そのうちの2つは異なるアプリケーションで実行されるように定義されています。

  • ジョブ・セットFINはGLアプリケーションに対して発行されます。

  • ステップ1はEFFECTIVE_APPLICATIONシステム・プロパティがODIに設定されているため、ODIアプリケーションで実行されます。

  • ステップ2には有効なアプリケーションが設定されていないため、GLアプリケーションで実行されます。

  • ステップ3はEFFECTIVE_APPLICATIONシステム・プロパティがINVに設定されているため、INVアプリケーションで実行されます。

図17-5 アプリケーション間ジョブ・セット・ステップ

アプリケーション間ジョブ・セット・ステップ

17.3.1 アプリケーション間ジョブ・セットの概要

ジョブ・セットはホスティング・アプリケーションで実行され、デフォルトで、すべてのジョブ・セット・ステップもそのアプリケーションで実行されます。システム・プロパティSYS_effectiveApplicationは、ジョブ定義または(ジョブ・セット・ステップではなく)ジョブ・セットで定義する必要があります。SYS_effectiveApplicationを定義するネストされたジョブ・セットの場合、アプリケーションはネストされたジョブ・セットのすべての子リクエストに適用されます。ネストされたジョブ・セットである場合、ネストされたジョブ・セットのジョブは有効なアプリケーションで実行されます。ジョブに対してSYS_effectiveApplicationが定義されている場合、ジョブ・セットのリクエストおよびそのジョブ・セットのすべての子リクエストは有効なアプリケーションに関連付けられます。つまり、これらのリクエストのAPPLICATIONシステム・プロパティは有効なアプリケーションに設定されます。

SYS_effectiveApplicationシステム・プロパティは、メタデータ、具体的には、ジョブ・セット、ジョブ・セット・ステップ、ジョブ・タイプおよびジョブでのみ定義できます。プロパティSYS_effectiveApplicationは、リクエスト・パラメータではサポートされていません。有効なアプリケーションは、ホスティング・アプリケーションと同じクラスタ内にある必要があり、そうでない場合、エラーが発生します。発行されたジョブ・セットによって有効なアプリケーションが定義されている場合、その値はホスティング・アプリケーションと同じである必要があり、そうでない場合、ジョブ・セットの発行は拒否されます。

複数のアプリケーションをまたいで実行されるジョブ・セットの場合、アプリケーションによるリクエストの問合せは、すべての子を取得するには不十分です。Oracle Enterprise Schedulerでは、問合せフィールドとして絶対親IDがサポートされているため、アプリケーションに関係なく、ジョブ・セットのすべてのリクエストを問い合せることができます。絶対親IDは、ホスティング・アプリケーションに対して発行されたジョブ・セットのリクエストIDです。

17.3.2 アプリケーション間ジョブ・セットの要件

Oracle Enterprise Schedulerでは、次の要件が適用されるアプリケーション間ジョブ・セットがサポートされています。

  1. 指定したジョブ・セットのすべてのアプリケーションは同じクラスタにデプロイされる必要があります。

  2. ジョブ・セット内のすべてのアプリケーションは同じエンタープライズ・セキュリティを共有する必要があります。

  3. すべてのリクエスト・メタデータは、ジョブ・セットの発行先のアプリケーション(ホスティング・アプリケーション)からアクセスできる必要があります。リクエストのすべてのメタデータは、ホスティング・アプリケーションのランタイム・ストアに維持される必要があります。維持されるメタデータには、発行されたジョブ・セットおよびすべてのネストされたジョブ・セットで使用されるメタデータがすべて含まれます。

  4. サブリクエストで使用されるメタデータがジョブ・セットの発行時にランタイム・ストアにすでに維持されていないかぎり、サブリクエストのメタデータはサブリクエストを発行するアプリケーションからアクセスできる必要があります。

17.4 ジョブ・セットでの入力および出力転送のサポート

ジョブ・セットのステップでは、ジョブ・セットの前のステップからの入力が必要になる場合があります。Oracle Enterprise Schedulerでは、1つのステップから次のステップの入力へ出力を簡単に転送するために、2つのシステム・プロパティSYS_inputListおよびSYS_outputListが使用されます。

ジョブ・セットの次のステップに渡す必要がある情報(出力ファイルのリストなど)がジョブで生成されると、ジョブではSYS_outputListプロパティに情報が追加されます。ジョブ・リクエストの実行が完了すると、Oracle Enterprise Schedulerでは、次のステップが実行される前に、リクエストのSYS_outputListプロパティを転送し、これが次のステップのSYS_inputListプロパティになるようにします。次のステップはその入力として前のステップの出力を受け取ります。

ジョブ・セット・ステップは単一ジョブである場合とジョブ・セットである場合があり、Oracle Enterprise Schedulerでは、ネストされたジョブ・セットによる転送もサポートされています。シリアル・ジョブ・セットの場合、Oracle Enterprise Schedulerではジョブ・セットの出力がジョブ・セットの最後のステップの出力として定義されます。つまり、最後のステップのSYS_outputListプロパティのみが次のステップに転送されます。同様に、シリアル・ジョブ・セットへの入力は、そのジョブ・セットの最初のステップにのみ転送されます。つまり、シリアル・ジョブ・セットの最初のステップのみで、SYS_inputListプロパティが前のステップのSYS_outputListプロパティの値に設定されます。

パラレル・ジョブ・セットの場合、Oracle Enterprise Schedulerでは、ジョブ・セットの出力はジョブ・セットのすべてのジョブのSYS_outputListプロパティの連結(デリミタで区切られ、順序の保証なし)であることが指定されます。パラレル・ジョブ・セットへの入力はジョブ・セットのすべてのジョブに転送されます。つまり、パラレル・ジョブ・セットのすべてのジョブで、INPUT_LISTプロパティが同じになります。システム・プロパティOUTPUT_LIST_DELIMITERでは、出力ファイルを一覧表示するときに使用するデリミタが指定されます。

ジョブ・セットに2つのジョブがあり、各ジョブで独自の出力ファイルfile1.txtおよびfile2.txtが生成されるとします。OUTPUT_LIST_DELIMITERの値がセミコロンである場合、そのジョブ・セットのシステム・プロパティSYS_outputListの値はfile1.txt;file2.txtになります。出力ファイルの連結されたリストを使用して、ジョブ・セットの次のジョブ・ステップでは、ジョブ・セット内の前のステップによって生成された出力ファイルにアクセスできます。

InputFileクラスはジョブ定義の入力としてファイルへのアクセスを提供します。現在、ファイルをジョブ・リクエストへの入力として受け入れるためのメカニズムはありません。

ステップのSYS_outputListプロパティの値を次のステップのSYS_inputListプロパティの値へ転送する場合を除き、Oracle Enterprise Schedulerでは2つのプロパティは他のシステム・プロパティと同様に処理されます。Oracle Enterprise Schedulerではプロパティの値の形式は定義されません(パラレル・ジョブ・セットの場合のセミコロンのデリミタを除く)。プロパティの構文およびセマンティクスの定義は、たとえば、完全修飾名または相対パス名、およびデリミタとしてのカンマまたはスペースを使用して、ジョブで行われます。