ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Identity Manager開発者ガイド
11gリリース2(11.1.2)
B69536-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

26 スケジュール済タスクの開発

Oracle Identity Managerには、ジョブ実行としてスケジュールできる一連のスケジュール済タスクが含まれています。例として、パスワードの期限切れをユーザーに電子メールで送信するパスワード警告タスクをあげることができます。

Oracle Identity Managerには、独自のスケジュール済タスクを作成する機能もあります。事前定義されたスケジュール済タスクがニーズに合わない場合は、要件に合わせてスケジュール済タスクを作成できます。

たとえば、ターゲット・システムで定期的に新しい情報をチェックしてOracle Identity Managerに同じデータを複製するスケジュール済タスクを使用して、リコンシリエーション実行を構成できます。

この章では、カスタム・スケジュール済タスクを作成および実装する方法について説明します。内容は次のとおりです。

26.1 タスク作成の概要

この項では、スケジュール済タスクの作成における重要な手順を概説し、プロセスを示す例を紹介します。この後の項では、各手順について詳しく説明します。

26.1.1 タスク作成の手順

新しいスケジュール済タスクを作成する基本手順は、次のとおりです。

  1. Oracle Identity Managerの事前定義されたスケジュール済タスクを確認して、カスタム・タスクが必要かどうかを決定します。

    事前定義されたタスクの詳細は、Oracle Fusion Middleware Oracle Identity Managerシステム管理者ガイドのスケジュール済タスクの管理に関する説明を参照してください。

  2. タスク名、タスクが実行するアクションを制御するパラメータなど、スケジュール済タスクの主要な機能を決定します。

    詳細は、第26.2項「スケジュール済タスクのメタデータの定義」を参照してください。

  3. タスク・メタデータをスケジュール済タスクXMLファイルに追加します。

    詳細は、第26.3項「スケジュール済タスクXMLファイルの構成」を参照してください。

  4. スケジュール済タスクJavaクラスを開発します。

    詳細は、第26.4項「スケジュール済タスク・クラスの開発」を参照してください。

  5. 新しいスケジュール済タスクをプラグインとして宣言します。

    詳細は、第26.5項「プラグインXMLファイルの構成」を参照してください。

  6. Oracle Identity Managerがファイルを検出し、タスクをジョブで使用できるようにするために、タスク・ファイルをパッケージ化します。

    詳細は、第26.6項「スケジュール済タスクのディレクトリ構造の作成」を参照してください。

26.1.2 スケジュール済タスクの例

スケジュール済タスクの開発の手順を示すために、特定のITリソースの特定の部門に属する従業員レコードを取得するスケジュール済タスク例を使用します。

また、このスケジュール済タスクでは、ユーザーが取得するレコード数や、無効なレコードを取得に含めるかどうかを指定できる必要があります。

26.2 スケジュール済タスクのメタデータの定義

各スケジュール済タスクは、次のメタデータ情報を含みます。

26.3 スケジュール済タスクXMLファイルの構成

スケジュール済タスクXMLファイルの構成では、カスタム・スケジュール済タスクの定義が含まれたXMLファイルの更新が伴います。この項では、新しいカスタム・スケジュール済タスクの詳細を使用してタスクXMLファイルを更新する方法について説明します。

Oracle Identity Manager MDSスキーマの/dbネームスペースにあるtask.xmlファイルを変更するか、またはカスタム・スケジュール済タスク・ファイルを作成できます。カスタム・ファイルを作成する場合、そのファイル名はスケジュール済タスク名と同じで、拡張子が.xmlである必要があります。Oracle Identity Manager MDSスキーマの/dbネームスペースに、カスタム・スケジュール済タスク・ファイルをインポートする必要があります。


関連項目:

プラグインの例は、第27章「プラグインの開発」を参照してください。



注意:

Oracle Enterprise Managerを使用して、スケジュール済タスクXMLファイルをMDSにインポートできます。クラスタ環境では、MDSにファイルを含めることで、クラスタの各ノード上のファイルをコピーする必要がなくなります。

MDSへのファイルのインポートの詳細は、「ユーザーが修正可能なメタデータ・ファイルの移行」を参照してください。


XMLファイル内の要素は、第26.2項「スケジュール済タスクのメタデータの定義」で説明したタスク・パラメータを反映します。

例26-1に、前述の段落で説明したスケジュール済タスクのサンプルXMLコードを示します。この例では、すべてのパラメータが必須パラメータとして宣言されていることに注意してください。

例26-1 スケジュール済タスクのサンプルXML

<scheduledTasks xmlns="http://xmlns.oracle.com/oim/scheduler">
    <task>
        <name>Test_scheduled_task</name>
        <class>oracle.iam.scheduler.TestScheduler</class>
        <description>Retrieve Employee Records For Given Department</description>
        <retry>5</retry>
        <parameters>
            <string-param required="true" helpText="Name of the department">Department Name</string-param>
            <string-param required="true" encrypted="false" helpText="Name of the department">Department Name</string-param>
            <number-param required="true" helpText="Number of Records to Be Retrieved">Number of Records</number-param>
            <boolean-param required="false" helpText="Retrieve disabled employee records?">Get Disabled Employees</boolean-param>
        </parameters>
    </task>
</scheduledTasks>

関連項目:

スケジュール済タスクの構成ファイル内の要素の詳細は、「スケジュール済タスクの構成ファイル」を参照してください。


これは、基本的に、MDSからtask.xmlをエクスポートし、それに必須タグを追加して、MDSにインポートして戻す作業となります。


注意:

プラグインで定義されたタスクでは、MDSへシードするためにメタデータXMLは必要ありません。これは、プラグインZIPファイルのMETA-INFフォルダに含めることができます。詳細は、「スケジュール済タスクのディレクトリ構造の作成」を参照してください。


MDSからtask.xmlファイルをエクスポートし、このファイルに必須タグを追加した後、MDSにインポートして戻す必要があります。MDSファイルのエクスポートおよびインポートの詳細は、「ユーザーが修正可能なメタデータ・ファイルの移行」を参照してください。

26.4 スケジュール済タスク・クラスの開発

次の手順では、Javaクラスを作成して、メタデータがXMLファイルで定義されたタスクを実行します。スケジュール済タスクを実装するJavaクラスは、スケジュール済タスク・クラスと呼ばれます。

スケジュール済タスクのJavaクラスを開発するには、次の手順を実行します。

  1. oracle.iam.scheduler.vo.TaskSupportクラスを拡張したJavaクラス・ファイルを作成し、要件に基づいた処理ロジックでexecute()メソッドをオーバーライドします。

  2. 作成したJavaクラスのJARファイルを作成します。JARをカスタム・スケジュール済タスクに簡単に関連付けできる名前をJARに付けます。

    JARファイルには、Javaクラスの依存クラスを含めることができます。依存クラスに対して個別のJARファイルを作成し、それをlib/ディレクトリに配置することもできます。

  3. JARファイルをlib/ディレクトリにコピーします。

  4. 作成する各Javaクラスに対して手順1から3を繰り返します。

26.5 プラグインXMLファイルの構成

スケジュール済タスクをプラグインとして宣言するには、plugin.xmlファイルを構成する必要があります。プラグインの詳細は、第27章「プラグインの開発」を参照してください。


注意:

1つのスケジュール済タスクに対して1つのplugin.xmlファイルを作成することをお薦めします。これは、プラグインが登録解除されると、対応するパッケージが削除されるためです。


plugin.xmlファイルを構成するには、次の手順を実行します。

  1. 任意のテキスト・エディタを使用して、plugin.xmlファイルを作成します。


    注意:

    plugin.xmlファイルは、そのようなファイルがない場合にのみ作成します。既存のプラグインがある場合は、新しいプラグイン用の新しいプラグイン要素を追加します。


  2. プラグイン要素のpluginpoint属性の値をoracle.iam.scheduler.vo.TaskSupportに変更して、スケジュール済タスクのプラグイン・ポイントを指定します。

    plugin.xmlファイルの次のXMLコード・ブロックは、プラグイン要素内に入力された値を示しています。

    <plugins pluginpoint="oracle.iam.scheduler.vo.TaskSupport">
    

    注意:

    スケジュール済タスクの場合、<plugins>要素は、すべてのスケジュール済タスクで同じままです。


  3. <plugin>要素を、追加する各スケジュール済タスクに追加します。

    プラグイン(この場合はスケジュール済タスク)を実装するクラスを指定するには、プラグイン要素のpluginclass属性の値を、スケジュール済タスクを実装するJavaクラスの名前に変更します。plugin.xmlファイルの次のXMLコード・ブロックは、プラグイン要素内に入力されたサンプル値を示しています。

    <plugin pluginclass= "oracle.iam.scheduler.TestScheduler" version="1.0.1" name="scheduler element"/>
    

    変更後、plugin.xmlファイルは次のようになります。

    <?xml version="1.0" encoding="UTF-8"?>
    <oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <plugins pluginpoint="oracle.iam.scheduler.vo.TaskSupport">
    <plugin pluginclass= "oracle.iam.scheduler.TestScheduler"
    version="1.0.1" name="scheduler element">
    </plugin>
    </plugins>
    </oimplugins>
    
  4. plugin.xmlファイルを保存して閉じます。

26.6 スケジュール済タスクのディレクトリ構造の作成

スケジュール済タスクの構成の最後の手順は、例26-2で指定したディレクトリ構造のplugin.zipファイルを作成することです。この例では単一のプラグインが追加されますが、複数のプラグインをplugin.zipファイルに含めることができます。スケジューラでは、ファイルが、特定の構造で圧縮され、特定のネーミング規則に従って命名されている必要があります。これにより、Oracle Identity Managerがカスタム・スケジュール済タスクを識別し、ジョブの作成中にOracle Identity System Administrationで使用可能になることを確認できます。

例26-2 スケジュール済タスクのディレクトリ構造

plugin/
      lib/
      PLUGIN.JAR
      plugin.xml
      META-INF (optional)
            METADATA.xml

次のことに注意してください。

前述の例では、CLASS_NAME.JARが、第26.4項「スケジュール済タスク・クラスの開発」で作成したJARファイルです。

plugin.zipファイルを作成した後でクラスタ環境にデプロイする場合は、適切なAPIを使用して、そのプラグインをデータベースに登録します。APIを使用してOracle Identity Managerにプラグインを登録する方法の詳細は、APIを使用したプラグインの登録および登録解除に関する説明を参照してください。


注意:

プラグインのXMLは、plugin.xmlという名前である必要があります。libディレクトリにJARファイルのみが含まれていることを確認してください。


26.7 スケジュール済タスクの構成ファイル

この付録では、スケジューラ・タスクの定義を含むXMLファイルの構造および構成要素について説明します。

26.7.1 スケジューラXMLファイルの構造

次に、構成XMLファイル内の要素のリストを示します。

<scheduledTasks xmlns="http://xmlns.oracle.com/oim/scheduler">
    <task>
        <name>
        <class>
        <description>
        <retry>
        <parameters>
            <string-param>
            .....
            </string-param>
            
            <number-param>
            .......
            </number-param>
            
            <boolean-param>
            .......
            </boolean-param>
        </parameters>
    </task>
</scheduledTasks>

26.7.2 scheduledTasks要素

scheduledTasks要素は、スケジュール済タスクの定義に使用されるXMLのルート要素です。

表26-1に、scheduledTasks要素のプロパティの概要を示します。

表26-1 scheduledTasks要素のプロパティ

プロパティ

親要素

該当なし

属性

次のように、XML名前空間をscheduledTasks要素の属性として指定します。

<scheduledTasks xmlns="http://xmlns.oracle.com/oim/scheduler">

注意: xmlnsパラメータは必須です。

子要素

タスク

出現回数

作成するスケジュール済タスクXMLファイルごとに1つ

要素値

該当なし

必須かオプションか

必須


26.7.3 task要素

task要素は、scheduledTasks要素の子要素です。

task要素は、スケジュール済タスクを定義するために使用します。task要素には、スケジュール済タスクの名前、クラス、説明、再試行回数などの情報が含まれます。

表26-2に、task要素のプロパティの概要を示します。

表26-2 task要素のプロパティ

プロパティ

親要素

scheduledTasks

属性

なし

子要素

name、class、description、retryおよびparameters

出現回数

作成するタスクごとに1つ

注意: 単一のスケジュール済タスクXMLファイルに複数のタスクを定義する場合は、定義するスケジュール済タスクごとに1つのtask要素を使用する必要があります。

要素値

該当なし

必須かオプションか

必須


26.7.4 name要素

name要素は、task要素の子要素です。name要素は、作成するスケジュール済タスクの名前を指定するために使用します。

表26-3に、name要素のプロパティの概要を示します。

表26-3 name要素のプロパティ

プロパティ

親要素

タスク

属性

なし

子要素

なし

出現回数

1回

要素値

作成するスケジュール済タスクの名前。

注意: スケジュール済タスクの名前は一意にする必要があります。

必須かオプションか

必須


26.7.5 class要素

class要素(必須)は、task要素の子要素です。class要素は、スケジュール済タスクを実行するJavaクラスの名前を指定するために使用します。

表26-4に、class要素のプロパティの概要を示します。

表26-4 class要素のプロパティ

プロパティ

親要素

タスク

属性

なし

子要素

なし

出現回数

1回

要素値

スケジュール済タスクを実行するJavaクラスの名前。スケジュール済タスクのクラスを開発する方法の詳細は、「スケジュール済タスク・クラスの開発」を参照してください。

必須かオプションか

必須


26.7.6 description要素

description要素(必須)は、task要素の子要素です。description要素は、作成するタスクの説明を追加するために使用します。

表26-5に、description要素のプロパティの概要を示します。

表26-5 description要素のプロパティ

プロパティ

親要素

タスク

属性

なし

子要素

なし

出現回数

1回

要素値

作成するタスクの説明

必須かオプションか

必須


26.7.7 retry要素

表26-6に、retry要素のプロパティの概要を示します。

表26-6 retry要素のプロパティ

プロパティ

親要素

タスク

属性

なし

子要素

なし

出現回数

1回

要素値

スケジューラによってタスクが再スケジュールされるまでの待機時間(秒数)

必須かオプションか

必須


26.7.8 parameters要素

スケジュール済タスクでジョブを正常に実行するために必要なパラメータを実行時に指定する場合は、parameters要素を使用する必要があります。たとえば、取得するレコードの数を実行時にユーザーに指定させるスケジュール済タスクを作成できます。

この要素の中で指定するパラメータは、「ジョブの作成」ページの「パラメータ」セクションに表示されます。

表26-7に、parameters要素のプロパティの概要を示します。

表26-7 parameters要素のプロパティ

プロパティ

親要素

タスク

属性

なし

子要素

string-param、number-param、boolean-param

出現回数

1回

要素値

該当なし

必須かオプションか

オプション


26.7.9 string-param要素

string-param要素は、文字列データ型の値をとるフィールドの名前を指定するために使用します。言い換えると、string-param要素では、文字列データ型の値を保持できるフィールドのラベルを指定します。

表26-8に、string-param要素のプロパティの概要を示します。

表26-8 string-param要素のプロパティ

プロパティ

親要素

パラメータ

属性

required、helpText、encrypted

子要素

なし

出現回数

Stringデータ型のパラメータごとに1つ

要素値

文字列パラメータの名前

必須かオプションか

オプション


表26-8に示すように、string-param要素には次の属性が含まれています。

  • required

    これは必須の属性で、値はtrueまたはfalseのいずれかです。

    required属性の値がtrueの場合は、パラメータの値を実行時に必ず入力する必要があります。

    required属性の値がfalseの場合は、パラメータの値を実行時に入力することは必須ではありません。

  • helpText

    この属性では、フィールドへの入力内容をユーザーが把握できるように、実行時に表示するテキストを指定します。通常は、パラメータによって作成されるフィールドの説明を指定します。

  • encrypted

    デフォルトでは、値はfalseになりますが、trueまたはfalseのどちらも指定できます。

    encrypted属性の値がtrueの場合は、実行時に入力されるパラメータ値は暗号化された形式で格納されます。

    required属性の値がfalseの場合は、実行時に入力されるパラメータ値はプレーン・テキストで格納されます。

26.7.10 number-param要素

number-param要素は、longデータ型の値をとるフィールドの名前を指定するために使用します。

表26-9に、number-param要素のプロパティの概要を示します。

表26-9 number-param要素のプロパティ

プロパティ

親要素

パラメータ

属性

required、helpText

子要素

なし

出現回数

longデータ型のパラメータごとに1つ

要素値

longデータ型を保持できるフィールドの名前

必須かオプションか

オプション


require属性とhelpText属性の動作および説明は、number-param要素とstring-param要素で同じです。require属性とhelpText属性の詳細は、「string-param要素」を参照してください。

26.7.11 boolean-param要素

boolean-param要素は、ブール・データ型の値をとるフィールドの名前を指定するために使用します。

表26-10に、boolean-param要素のプロパティの概要を示します。

表26-10 boolean-param要素のプロパティ

プロパティ

親要素

パラメータ

属性

required、helpText

子要素

なし

出現回数

ブール・データ型のパラメータごとに1つ

要素値

ブール・データ型を保持できるフィールドの名前

必須かオプションか

オプション


required属性とhelpText属性の動作および説明は、boolean-param要素とstring-param要素で同じです。require属性とhelpText属性の詳細は、「string-param要素」を参照してください。