ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Enterprise Scheduler開発者ガイド
11g リリース1 (11.1.1.7)
B66615-04
  目次へ移動
目次

前
 
次
 

13 ジョブ非互換性の定義および使用

この章では、Oracle Enterprise Schedulerのジョブ非互換性の使用方法について説明します。この機能を使用して、同時に実行できないジョブ・リクエストを指定できます。

この章では、次の項目について説明します。

ジョブ・リクエストを作成および発行する方法の詳細は、Javaジョブの場合、第5章「Oracle Enterprise Schedulerサンプル・アプリケーションのユースケース(非推奨)」第8章「PL/SQLジョブの作成と使用」および第9章「プロセス・ジョブの作成と使用」を参照してください。ジョブ・セットの使用の詳細は、第12章「ジョブ・セットの定義および使用」を参照してください。


注意:

説明を単純化するために、この非互換性の章ではジョブ定義についてのみ言及しますが、ここでの説明は、すべての場合において、ジョブ定義とジョブ・セットの両方に当てはまります。


13.1 ジョブ非互換性の使用の概要

それぞれの非互換性については、グローバルな非互換性とドメイン(プロパティベース)の非互換性のいずれかが指定されます。Oracle Enterprise Schedulerでは、oracle.as.scheduler.Incompatibility Javaクラスによって表される非互換性定義に基づき、ジョブ定義またはジョブ・セットの間の非互換性がサポートされています。IncompatibilityType列挙によって、有効な非互換性タイプが指定されます。

Oracle Enterprise Schedulerの非互換性定義により、グローバルな非互換性とドメイン(プロパティベース)の非互換性のいずれかが指定されます。非互換性は最大2つのエンティティ(ジョブ定義またはジョブ・セット)、およびこれらのエンティティが非互換となる必要があるリソースで構成されています。グローバルな非互換性に対して、リソースは指定されません。各エンティティには、自己非互換としてフラグを付けることができます。Oracle Enterprise Schedulerでは、1つのエンティティがドメイン(プロパティベース)のエンティティを表し、別のエンティティがグローバルな(プロパティのない)エンティティを表す混合モードはサポートされていません。

ドメインの非互換性の場合、リソースは非互換性のエンティティごとに異なる場合があるプロパティ名によって表されます。たとえば、ドメインの非互換性が2つのジョブ定義(JobAとJobB)に対して作成される場合、各エンティティに対して識別されるリソース(プロパティ)のプロパティ名は、JobAとJobBで異なることがあります。これはJobAでfooと呼ばれ、JobBでfoo2と呼ばれる可能性があります。Oracle Enterprise Schedulerでは、JobAに対するリクエストとJobBに対するリクエストのそれぞれのプロパティ値が同じである場合、これらのリクエストは互換性がないとみなされ、同時に実行されることはありません。リクエストのそれぞれのプロパティ値が異なる場合、これらのリクエストは互換性があるとみなされ、同時に実行できます。

非互換性定義により、別のジョブ定義と互換性のないジョブ定義が指定されます。指定されたジョブ定義により、任意の非互換性定義を直接指したり参照することはありません。

Oracle Enterprise Schedulerにより、リクエスト発行時にジョブ定義を参照する非互換性定義(ある場合)が決定されます。また、任意のドメインの非互換性に対するリソース(プロパティ)値も決定されます。この情報はリクエストのライフ・サイクルの処理全体を通して使用されます。

13.1.1 ジョブの自己非互換性

ジョブ定義またはジョブ・セットは、それら自体と互換性がない場合、自己非互換として定義できます。自己非互換とは、単一のジョブ定義に関連付けられる複数のジョブ・リクエストを同時に実行できないことを意味します。単一のエンティティが自己非互換としてマークされる場合、非互換性定義にそのエンティティを含めることができます。グローバルな自己非互換性では、特定のジョブまたはジョブ・セット定義に対する複数のリクエストは同時に実行されません。プロパティベースの自己非互換性では、特定のジョブまたはジョブ・セット定義に対するリクエストは、プロパティ値が同じである場合、同時に実行されません。

13.2 Oracle JDeveloperとの非互換性の定義

次のことを指定することによって、Oracle JDeveloperにおける非互換性を定義できます。

13.2.1 グローバルな非互換性の定義方法

Oracle Enterprise Schedulerのグローバルな非互換性は、名前、パッケージおよびエンティティによって定義されます。

グローバルな非互換性を作成する手順は、次のとおりです。

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

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

  3. 「アイテム」「非互換性」を選択して、「OK」をクリックします。これにより、図13-1に示すように、「非互換性の作成」ウィンドウが表示されます。

    図13-1 「非互換性の作成」ウィンドウ

    「非互換性の作成」ウィンドウ
    「図13-1 「非互換性の作成」ウィンドウ」の説明

  4. 「非互換性の作成」ダイアログを使用して、次を指定します。

    1. 「名前」フィールドで、非互換性の名前を入力するか、またはデフォルト名前をそのまま使用します。

    2. 「パッケージ」フィールドで、非互換性のパッケージ名を入力します。

    3. 「場所」フィールドに非互換性ファイルが格納されているディレクトリのフルパスが表示されます。

    4. 「非互換性タイプ」フィールドで「グローバル」を選択し、「OK」をクリックします。

      非互換性が作成され、非互換性定義ページが表示されます。

  5. 「非互換性エディタ」ペインの「説明」フィールドで、非互換性の説明を入力します。

  6. 「エンティティ」領域で、「追加」をクリックしてエンティティを追加します。これにより、図13-2に示すように、「エンティティの追加」ダイアログが表示されます。

    図13-2 非互換性の「エンティティの追加」ウィンドウ

    非互換性の「エンティティの追加」ウィンドウ
    「図13-2 非互換性の「エンティティの追加」ウィンドウ」の説明

  7. 非互換性に対して1つ以上のエンティティを選択して、「OK」をクリックします。非互換性エディタが表示されます。

  8. 自己非互換性を指定するか、またはエンティティを変更するには、「エンティティ」領域内のエンティティをダブルクリックします。これにより、図13-3に示すように、「エンティティの編集」ダイアログが表示されます。

    図13-3 グローバルな非互換性の「エンティティの編集」ウィンドウ

    グローバルな非互換性の「エンティティの編集」ウィンドウ
    「図13-3 グローバルな非互換性の「エンティティの編集」ウィンドウ」の説明

  9. 自己非互換性を指定するには、「自己非互換」を選択します。

  10. 非互換性を保存します。

13.2.2 ドメインの非互換性の定義方法

Oracle Enterprise Schedulerのドメインの非互換性は、名前、パッケージ、エンティティおよび各エンティティのプロパティによって定義されます。

非互換性を作成する手順は、次のとおりです。

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

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

  3. 「アイテム」「非互換性」を選択して、「OK」をクリックします。これにより、「非互換性の作成」ウィンドウが表示されます。

  4. 「非互換性の作成」ダイアログを使用して、次を指定します。

    1. 「名前」フィールドで、非互換性の名前を入力するか、またはデフォルト名前をそのまま使用します。

    2. 「パッケージ」フィールドで、必要に応じて非互換性のパッケージ名を入力します。

    3. 「場所」フィールドに非互換性ファイルが格納されているディレクトリのフルパスが表示されます。

    4. 図13-4に示すように、「非互換性タイプ」フィールドで「ドメイン」を選択します。

      図13-4 「非互換性の作成」ウィンドウ

      「非互換性の作成」ウィンドウ
      「図13-4 「非互換性の作成」ウィンドウ」の説明

      「OK」をクリックします。これにより非互換性が作成され、「非互換性エディタ」が表示されます。

  5. 「非互換性エディタ」ペインの「説明」フィールドで、非互換性の説明を入力します。

  6. 「非互換性エンティティ」領域で、「追加」をクリックします。

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

  7. 非互換性に追加する1つ以上のジョブまたはジョブ・セットを選択して、「OK」をクリックします。

    非互換性エディタが表示されます。

  8. 自己非互換性を指定するか、またはエンティティやそのプロパティを変更するには、「エンティティ」フィールドでエンティティをダブルクリックします。

    図13-5に示すように、「エンティティの編集」ウィンドウが表示されます。

    図13-5 非互換性の「エンティティの編集」ウィンドウ

    非互換性の「エンティティの編集」ウィンドウ
    「図13-5 非互換性の「エンティティの編集」ウィンドウ」の説明

  9. 自己非互換性を指定するには、「自己非互換」を選択します。

  10. 非互換性を保存します。

13.3 ジョブ非互換性を処理するために実行時に行われる処理

実行時、Oracle Enterprise Schedulerによって、非互換性タイプのグローバルまたはドメイン(プロパティベース)に応じて非互換性定義が処理されます。ジョブ・リクエストが発行されると、Oracle Enterprise Schedulerによって、リクエストの発行に使用されるジョブまたはジョブ・セット定義を参照する非互換性定義が決定されます。各ドメインの非互換性について、その非互換性に対するリソースやプロパティの値も決定されます。リクエストを実行する準備が整うと、すでに実行中の非互換性リクエストがあるかどうかがOracle Enterprise Schedulerによって確認されます。そうである場合、リクエストは、そのリクエストが互換性のないすべてのリクエストが完了するまでブロックされます。


注意:

ドメインの非互換性のプロパティ値はリクエスト発行時に決定され、ジョブ定義または発行時に渡されるリクエスト・パラメータのいずれかから開始します。このようなパラメータが見つからない場合、この非互換性は、後続のリクエスト処理で無視されます。この非互換性定義に関して、リクエストは他のリクエストと互換性を持ちます。リクエストの発行時に指定されたこの初期値は、その後変更されても使用されます。


13.3.1 互換性のない親リクエストを含むサブリクエストについての処理

別のリクエストと互換性のないリクエストは、そのリクエストのサブリクエスト(子)とも互換性がありません。サブリクエストの親によってブロックされたリクエストは、サブリクエストが実行される間、およびサブリクエストの親リクエストが再開されて完了するまでブロックされたままとなります。

13.3.2 リクエスト非互換性のスコープについての処理

すべての検証されたリクエストは、エンタープライズに割り当てられます。非互換性は、同じエンタープライズに関連付けられているリクエスト間でのみサポートされます。あるエンタープライズに対するリクエストと別のエンタープライズに対するリクエストは、これらのリクエストによって使用されるジョブ定義間で非互換性が定義されている場合でも、非互換になることはありません。