Oracle Identity Managerには、ジョブ実行としてスケジュールできる一連のスケジュール済タスクが含まれています。例として、パスワードの期限切れをユーザーに電子メールで送信するパスワード警告タスクをあげることができます。
Oracle Identity Managerには、独自のスケジュール済タスクを作成する機能もあります。事前定義されたスケジュール済タスクがニーズに適合しない場合は、要件に合せてスケジュール済タスクを作成できます。
たとえば、ターゲット・システムで定期的に新しい情報をチェックしてOracle Identity Managerに同じデータを複製するスケジュール済タスクを使用して、リコンシリエーション実行を構成できます。
この章では、カスタム・スケジュール済タスクを作成および実装する方法について説明します。内容は次のとおりです。
この項では、スケジュール済タスクの作成における重要な手順を概説し、プロセスを示す例を紹介します。この後の項では、各手順について詳しく説明します。
新しいスケジュール済タスクを作成する基本手順は、次のとおりです。
Oracle Identity Managerの事前定義されたスケジュール済タスクを確認して、カスタム・タスクが必要かどうかを決定します。
事前定義されたタスクの詳細は、Oracle Fusion Middleware Oracle Identity Managerシステム管理者ガイドのスケジュール済タスクの管理に関する説明を参照してください。
タスク名、タスクが実行するアクションを制御するパラメータなど、スケジュール済タスクの主要な機能を決定します。
詳細は、第26.2項「スケジュール済タスクのメタデータの定義」を参照してください。
タスク・メタデータをスケジュール済タスクXMLファイルに追加します。
詳細は、第26.3項「スケジュール済タスクXMLファイルの構成」を参照してください。
スケジュール済タスクJavaクラスを開発します。
詳細は、第26.4項「スケジュール済タスク・クラスの開発」を参照してください。
新しいスケジュール済タスクをプラグインとして宣言します。
詳細は、第26.5項「プラグインXMLファイルの構成」を参照してください。
Oracle Identity Managerがファイルを検出し、タスクをジョブで使用できるようにするために、タスク・ファイルをパッケージ化します。
詳細は、第26.6項「スケジュール済タスクのディレクトリ構造の作成」を参照してください。
スケジュール済タスクの開発の手順を示すために、特定のITリソースの特定の部門に属する従業員レコードを取得するスケジュール済タスク例を使用します。
また、このスケジュール済タスクでは、ユーザーが取得するレコード数や、無効なレコードを取得に含めるかどうかを指定できる必要があります。
各スケジュール済タスクは、次のメタデータ情報を含みます。
スケジュール済タスクの名前
スケジュール済タスクを実装するJavaクラスの名前
説明
再試行間隔
(オプション)スケジュール済タスクを受け入れるパラメータ。各パラメータには次の追加情報が含まれます。
パラメータ名
パラメータのデータ型
必須/オプション・パラメータ
ヘルプ・テキスト
スケジュール済タスクXMLファイルの構成では、カスタム・スケジュール済タスクの定義が含まれたXMLファイルの更新が伴います。この項では、新しいカスタム・スケジュール済タスクの詳細を使用してタスクXMLファイルを更新する方法について説明します。
Oracle Identity Manager MDSスキーマの/dbネームスペースにあるtask.xmlファイルを変更するか、またはカスタム・スケジュール済タスク・ファイルを作成できます。カスタム・ファイルを作成する場合、そのファイル名はスケジュール済タスク名と同じで、拡張子が.xmlである必要があります。Oracle Identity Manager MDSスキーマの/dbネームスペースに、カスタム・スケジュール済タスク・ファイルをインポートする必要があります。
注意: 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" 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ファイルのエクスポートおよびインポートの詳細は、「ユーザーが修正可能なメタデータ・ファイルの移行」を参照してください。
次の手順では、Javaクラスを作成して、メタデータがXMLファイルで定義されたタスクを実行します。スケジュール済タスクを実装するJavaクラスは、スケジュール済タスク・クラスと呼ばれます。
スケジュール済タスクのJavaクラスを開発するには、次の手順を実行します。
oracle.iam.scheduler.vo.TaskSupport
クラスを拡張したJavaクラス・ファイルを作成し、要件に基づいた処理ロジックでexecute()
メソッドをオーバーライドします。このJavaクラスで、他の抽象メソッドもオーバーライドする必要があります。
public HashMap getAttributes(); public void setAttributes();
作成したJavaクラスのJARファイルを作成します。JARをカスタム・スケジュール済タスクに簡単に関連付けできる名前をJARに付けます。
JARファイルには、Javaクラスの依存クラスを含めることができます。依存クラスに対して個別のJARファイルを作成し、それをlib/ディレクトリに配置することもできます。
JARファイルをlib/ディレクトリにコピーします。
スケジュール済タスクをプラグインとして宣言するには、plugin.xmlファイルを構成する必要があります。プラグインの詳細は、第27章「プラグインの開発」を参照してください。
注意: 1つのスケジュール済タスクに対して1つのplugin.xmlファイルを作成することをお薦めします。これは、プラグインが登録解除されると、対応するパッケージが削除されるためです。 |
plugin.xmlファイルを構成するには、次の手順を実行します。
任意のテキスト・エディタを使用して、plugin.xmlファイルを作成します。
注意: plugin.xmlファイルは、そのようなファイルがない場合にのみ作成します。既存のプラグインがある場合は、新しいプラグイン用の新しいプラグイン要素を追加します。 |
プラグイン要素のpluginpoint
属性の値をoracle.iam.scheduler.vo.TaskSupport
に変更して、スケジュール済タスクのプラグイン・ポイントを指定します。
plugin.xmlファイルの次のXMLコード・ブロックは、プラグイン要素内に入力された値を示しています。
<plugins pluginpoint="oracle.iam.scheduler.vo.TaskSupport">
注意: スケジュール済タスクの場合、<plugins>要素は、すべてのスケジュール済タスクで同じままです。 |
<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>
plugin.xmlファイルを保存して閉じます。
スケジュール済タスクの構成の最後の手順は、例26-2で指定したディレクトリ構造のplugin.zipファイルを作成することです。この例では単一のプラグインが追加されますが、複数のプラグインをplugin.zipファイルに含めることができます。スケジューラでは、ファイルが、特定の構造で圧縮され、特定の命名規則に従って命名されている必要があります。これにより、Oracle Identity Managerがカスタム・スケジュール済タスクを識別し、ジョブの作成中にOracle Identity System Administrationで使用可能になることを確認できます。
次のことに注意してください。
プラグインのXMLファイルは、plugin.xmlという名前である必要があります。
lib/ディレクトリには.JARファイルのみが含まれている必要があります。lib/ディレクトリは、プラグイン・ロジックを実装するクラスが含まれたJARファイル、および依存ライブラリのJARファイルで構成されています。ほとんどの場合、このディレクトリは、plugin.xmlに指定されたすべてのプラグインの実装を含む1つのJARファイルで構成されます。ディレクトリ構造の詳細は、「プラグインの開発」を参照してください。
スケジュール済タスクのディレクトリには、次のファイルが格納されている必要があります。
プラグイン用のXML
JARファイル
作成するすべてのプラグインに対して1つのplugin.zipファイルが存在します。
META-INFフォルダは、メタデータ(タスク定義)ファイルを格納できるオプションのフォルダです。このファイルがMETA-INFフォルダに配置されている場合、MDSにシードする必要はありません。
META-INFフォルダが存在しない場合、またはメタデータ・ファイルがMETA-INFフォルダに配置されていない場合は、ファイルをMDSにシードします。
前述の例では、CLASS_NAME.JARが、第26.4項「スケジュール済タスク・クラスの開発」で作成したJARファイルです。
plugin.zipファイルを作成した後でクラスタ環境にデプロイする場合は、適切なAPIを使用して、そのプラグインをデータベースに登録します。APIを使用してOracle Identity Managerにプラグインを登録する方法の詳細は、APIを使用したプラグインの登録および登録解除に関する説明を参照してください。
注意: プラグインのXMLは、plugin.xmlという名前である必要があります。libディレクトリにJARファイルのみが含まれていることを確認してください。 |
この付録では、スケジューラ・タスクの定義を含む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>
scheduledTasks要素は、スケジュール済タスクの定義に使用されるXMLのルート要素です。
表26-1に、scheduledTasks要素のプロパティの概要を示します。
task要素は、scheduledTasks要素の子要素です。
task要素は、スケジュール済タスクを定義するために使用します。task要素には、スケジュール済タスクの名前、クラス、説明、再試行回数などの情報が含まれます。
表26-2に、task要素のプロパティの概要を示します。
name要素は、task要素の子要素です。name要素は、作成するスケジュール済タスクの名前を指定するために使用します。
表26-3に、name要素のプロパティの概要を示します。
class要素(必須)は、task要素の子要素です。class要素は、スケジュール済タスクを実行するJavaクラスの名前を指定するために使用します。
表26-4に、class要素のプロパティの概要を示します。
表26-4 class要素のプロパティ
プロパティ | 値 |
---|---|
親要素 |
タスク |
属性 |
なし |
子要素 |
なし |
出現回数 |
1回 |
要素値 |
スケジュール済タスクを実行するJavaクラスの名前。スケジュール済タスクのクラスを開発する方法の詳細は、「スケジュール済タスク・クラスの開発」を参照してください。 |
必須かオプションか |
必須 |
description要素(必須)は、task要素の子要素です。description要素は、作成するタスクの説明を追加するために使用します。
表26-5に、description要素のプロパティの概要を示します。
表26-6に、retry要素のプロパティの概要を示します。
スケジュール済タスクでジョブを正常に実行するために必要なパラメータを実行時に指定する場合は、parameters要素を使用する必要があります。たとえば、取得するレコードの数を実行時にユーザーに指定させるスケジュール済タスクを作成できます。
この要素の中で指定するパラメータは、「ジョブの作成」ページの「パラメータ」セクションに表示されます。
表26-7に、parameters要素のプロパティの概要を示します。
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
の場合は、実行時に入力されるパラメータ値はプレーン・テキストで格納されます。
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要素」を参照してください。
boolean-param要素は、ブール・データ型の値をとるフィールドの名前を指定するために使用します。
表26-10に、boolean-param要素のプロパティの概要を示します。
表26-10 boolean-param要素のプロパティ
プロパティ | 値 |
---|---|
親要素 |
パラメータ |
属性 |
required、helpText |
子要素 |
なし |
出現回数 |
ブール・データ型のパラメータごとに1つ |
要素値 |
ブール・データ型を保持できるフィールドの名前 |
必須かオプションか |
オプション |
required属性とhelpText属性の動作および説明は、boolean-param要素とstring-param要素で同じです。require属性とhelpText属性の詳細は、「string-param要素」を参照してください。
表26-11に、カスタムのスケジュール済タスクの作成に変数/定数を使用するためのガイドラインを示します。
表26-11 カスタムのスケジュール済タスクを作成するための変数および定数
タイプ | 例 | 値の格納/検索元 |
---|---|---|
ターゲット・システム接続の詳細 |
ホスト名、ポート番号、SSL |
ITリソース/アプリケーション・インスタンス |
ターゲット・システムの構成 |
属性マッピング、一意属性、ユーザー・オブジェクト・クラス |
参照 |
スケジュール済ジョブ固有の変数/定数 |
アプリケーション・インスタンス名、ITリソース名、ファイル・パス、検索フィルタ、バッチ・サイズ、再試行 |
スケジュール済ジョブ |
スケジュール済ジョブの詳細構成変数/定数 |
属性マッピング、ターゲット・システムの日付書式、定数、属性トランスフォーメーション・クラス |
参照 |
Oracle Identity Manager固有のシステム・ワイドの非常に静的な構成プロパティ/定数/変数 |
デフォルトの日付書式、ユーザー名生成に関するデフォルト・ポリシー |
システム・プロパティ |
電子メール通知 |
件名、本文、宛先、差出人 |
電子メール・テンプレート |
Oracle Identity System Administrationの「スケジューラ」セクションからジョブが停止されても、ジョブは停止されず、そのまま実行されます。スケジュール済タスクを停止するには、次の手順を実行します。
カスタムのスケジュール済タスクを開発すると、実行メソッド内部の様々なステージでisStop()メソッドまたはisStopped()メソッドを呼び出すことができます。このメソッドがtrueを返す場合は、実行メソッドから返されます。実行メソッド内部にループがあれば、ループの反復ごとにisStop()メソッドまたはisStopped()メソッドが必ず呼び出されます。
実行メソッドでは、ジョブ・ステータスを取得するためのチェックを追加します。これは、com.thortech.xl.scheduler.tasks.SchedulerBaseTaskクラスのisStopped()メソッドを呼び出すことで取得できます。isStopped()メソッドによりTRUEが返されると、スケジュール済タスクに対して何も実行せずに実行メソッドが返されます。このコード・スニペットを次に示します。
if(isStopped()) return;
Oracle Identity Manager 11g リリース1 (11.1.1)または11g リリース2 (11.1.2)のTaskSupportクラスを拡張してカスタムのスケジュール済タスクを開発する場合は、実行メソッドでisStop()メソッドを呼び出します。
カスタムのスケジュール済タスク・コードがOracle Identity Managerリリース9.xのレガシーcom.thortech.xl.scheduler.tasks.SchedulerBaseTaskクラスを拡張する場合、実行メソッドでisStopped()メソッドを呼び出します。