OIMユーザーのアカウント・データを保持するために、プロセス・フォームおよび子フォームが使用されます。フォームは、フォーム上のフィールドを追加、変更または削除することによってアップグレードできます。たとえば、アップグレード操作の一部として、「入社日」フィールドを追加し、フォームから出生国フィールドを削除できます。さらに、親フォームから子フォームにフィールドを移動できます。Oracle Identity Managerフォーム・バージョン制御(FVC)ユーティリティを使用すると、フォームのアップグレード操作後にフォーム・データの変更を簡単に管理できます。
FVCユーティリティは、Oracle Identity Managerデータベース上で直接機能するコマンドライン・ユーティリティです。Oracle Identity Manager Design Consoleをインストールする場合、このユーティリティはOIM_DC_HOMEディレクトリにあります。このユーティリティで実行する必要があるフォーム・データの更新を指定するには、プロパティ・ファイルを使用します。
このユーティリティは、プロビジョニング・プロセス・フォームおよびその関連子フォームでのフィールド・マッピングとデータ更新をサポートしています。
注意: FVCユーティリティでは、次の機能は実行できません。
さらに、リリース間でフォーム関連の変更がない場合は、FVCユーティリティを実行する必要はありません。 |
この章の内容は次のとおりです。
FVCユーティリティを使用すると、単一の実行で次のフォーム変更に対応するフォーム・データの更新を管理できます。
親フォームのフィールド名が変更される場合。
子フォームのフィールド名が変更される場合。
フィールドが親フォームから子フォームに移動される場合。
フィールドが親フォームから親フォームに移動される場合。
フィールドが子フォームから親フォームに移動される場合。このシナリオは、子フォームに単一のレコードが含まれている場合にのみサポートされます。
フィールドが子フォームから、同じ親フォームの別の子フォームに移動される場合。このシナリオは、移動元の子フォームに単一のレコードが含まれている場合にのみサポートされます。
フィールドが子フォームから、同じ親フォームの別の子フォームに移動される場合。このシナリオは、子フォームに単一のレコードが含まれている場合にのみサポートされます。
フィールドが子フォームから親フォームに移動され、移動されるフィールドのデータ型が、親フォームで「参照フィールド」または「コンボ・ボックス」型から「チェック・ボックス」型に変更される場合。
前述のいずれかのユースケースで、親フォームのフィールドのデータ型が「参照フィールド」または「コンボ・ボックス」型から「チェック・ボックス」型に変更される場合。
前述のいずれかのユースケースで、フィールド名の大文字と小文字が変更される場合。たとえば、フィールド名がMyField
からmyfield
に変更される場合。
フィールドのデータ型が「参照フィールド」または「コンボ・ボックス」型から「チェック・ボックス」型に変更され、フォームに対してそれ以外の変更は行われない場合。
特定のOIMユーザーについて、USR表のユーザー・レコードのステータスがDeleted
でない場合にのみ、ユーティリティでアカウント・データの更新が続行される場合。
USR表のステータスがDeleted
でないOIMユーザーについて、アカウントのステータスがRevoked
でない場合にのみ、ユーティリティでUD_表のアカウント・データが更新される場合。
次のシナリオでは、FVCユーティリティを使用してフォーム・データを更新できません。
フィールドが複数のプロセス(親)フォームにわたって変更される場合。
フィールドが同じフォームの複数のフィールドにマップされる場合。
フィールドが異なる子フォームの複数のフィールドにマップされる場合。
フィールドのデータ型が「参照フィールド」または「コンボ・ボックス」型以外の型から変更される場合。
フィールドのデータ型が、「参照フィールド」または「コンボ・ボックス」型から「チェック・ボックス」型以外の型に変更される場合。
複数のフィールドが1つのフィールドに結合される場合。
FVCユーティリティの各実行中に、次の手順が実行されます。
FVCユーティリティによって実行されるデータ変換処理に関する情報は、プロパティ・ファイルに格納されます。ユーティリティはこのプロパティ・ファイルの内容を読み取ります。
ユーティリティはUSR表のレコードのオブジェクト・ステータスをチェックします。次の手順は、レコードのステータスによって異なります。
ユーザーのレコードがDeleted状態の場合、ユーティリティは次のユーザーのレコードに進みます。
ユーザーのレコードがDeleted状態でない場合、ユーティリティはそのユーザーのコネクタ固有(UD_)表のアカウント・レコードのステータスをチェックします。次の手順は、アカウント・レコードごとに、そのステータスによって異なります。
アカウント・レコードがRevoked状態の場合、ユーティリティはそのユーザーの次のアカウント・レコードに進みます。
アカウント・レコードがRevoked状態でない場合、ユーティリティはプロパティ・ファイルで指定されている更新を実行します。
特定のアカウント・レコードについて、ユーティリティは最初にレコードのバージョンを更新し、次にプロパティ・ファイルで指定されているデータを更新します。
注意: エラーが発生した場合、コマンド・ウィンドウにエラー・メッセージが表示されます。エラーの原因を修正してユーティリティに戻った後、エラーの発生前に更新されていたレコードは再度処理されません。 |
次に、FVCユーティリティのコンポーネントを示します。
注意: Design Consoleをインストールする場合、これらのファイルはOIM_DC_HOMEディレクトリにコピーされます。 |
プロパティ・ファイル: .properties
拡張子の付いたファイルは、ユーティリティを実行するプロセス・フォーム、子フォームおよびリソース・オブジェクトの詳細を指定するために使用します。サンプルとしてfvc.propertiesファイルが提供されています。新しいプロパティ・ファイルを使用する場合は、このファイルの名前をfvcutil.shまたはfvcutil.cmdで変更する必要があります。
xlFvcUtil.jar: このJARファイルには、FVCユーティリティを実行するのに必要なユーティリティのクラスが含まれます。
fvcutil.shおよびfvcutil.cmd: このスクリプトを使用してユーティリティを実行します。
次の項では、FVCユーティリティを使用する手順について説明します。
前述のように、FVCユーティリティで実行するデータ変換処理を定義するには、プロパティ・ファイルを使用します。プロパティ・ファイルを作成または更新する必要があるかどうかは、アップグレードのシナリオによって異なります。
コネクタの事前定義済リリースから事前定義済リリースにアップグレードする場合は、コネクタ・デプロイメント・パッケージでプロパティ・ファイルを見つけます。
カスタム・リリースからアップグレードする場合、またはカスタム・リリースにアップグレードする場合は、プロパティ・ファイルで必要なエントリを追加する必要があります。
コネクタのカスタム・リリースから事前定義済リリースにアップグレードする場合は、コネクタのプロセス・フォームおよび子フォームへの変更に関する情報がコネクタ・ガイドに記載されているかどうかを確認します。この情報を使用して、プロパティ・ファイルで追加する必要があるエントリを決定できます。
次に、プロパティ・ファイルのサンプル・エントリを示します。
ResourceObject;OID User FormName;UD_OID_USR FromVersion;8 ToVersion;9 Parent;UD_OID_USR_DEFTVAL;ABC Child;UD_OID_GRP_NORMALFIELD;XYZ;Update ParentChild;UD_OID_USR_FNAME;UD_OID_GRP_NORMALFIELD ChildChild;UD_OID_GRP_GROUP_NAME;UD_OID_GRP_NORMALFIELD ChildParent;UD_OID_GRP_NORMALFIELD;UD_OID_USR_LNAME ParentParent;UD_OID_USR_FNAME;UD_OID_USR_LOGIN; ParentParentLookupOrComboToCheckBox;UD_OID_USR_PREF_LANG;UD_OID_USR_CHKBOXTEST ChildParentLookupOrComboToCheckBox;UD_OID_GRP_GROUP_NAME;UD_OID_USR_CHKBOXTEST ChildDiffChild;UD_OID_GRP_NORMALFIELD;UD_OID_ROLE_DIFFFIELD
プロパティ・ファイルでエントリを追加または変更する際には、次のガイドラインが適用されます。
注意: ガイドラインをよりよく理解するには、前述のサンプル・エントリを参照してください。 |
プロパティ・ファイルで、各行は、ユースケース名、古いフィールド名および新しいフィールド名で構成されます。これらはセミコロンで区切られます。
たとえば、プロパティ・ファイルの次のエントリについて考えてみます。
ParentChild;UD_OID_USR_FNAME;UD_OID_GRP_NORMALFIELD
ParentChild: 親のフィールドの名前が変更されたか、または親のフィールドが新しい子フォームへ移動されたことを表します。
UD_OID_USR_FNAME: 親フォームでの古いフィールド名を表します。
UD_OID_GRP_NORMALFIELD: 新しいフォームでアップグレードされるフィールドの新しい名前を表します。
注意: セミコロンの直後を除き、値にスペースを含めることができます。 |
プロパティ・ファイルに次の行を含める必要があります。
注意: プロパティ・ファイルでのこれらの4行の場所と順序は重要ではありません。 |
ResourceObject;
RESOURCE_OBJECT_NAME
この行では、RESOURCE_OBJECT_NAME
をリソース・オブジェクトの名前に置き換えます。
サンプル行:
ResourceObject;OID User
FormName;
FORM_NAME
この行では、FORM_NAME
をプロセス(親)フォームの名前に置き換えます。
サンプル行:
FormName;UD_OID_USR
FromVersion;
CURRENT_VERSION_OF_FORM
この行では、CURRENT_VERSION_OF_FORM
をフォームの現在のバージョンに置き換えます。
注意: FVCユーティリティを実行する場合、バージョンが |
サンプル行:
FromVersion;8
ToVersion;
NEW_VERSION_OF_FORM
この行では、NEW_VERSION_OF_FORM
をフォームの新しいバージョンに置き換えます。
注意: バージョンが変更されていないフォームのフォーム・データを更新する場合は、 |
サンプル行:
ToVersion;9
次の行は、任意に組み合せてプロパティ・ファイルに含めることができます。
Parent;
FIELD_NAME;DEFAULT_FIELD_VALUE;
Update
親フォームのすべてのレコードに対して、ユーティリティはFIELD_NAME
フィールドの値をDEFAULT_FIELD_VALUE
で更新します。
注意: 親フォームで必須(必要な)フィールドが追加された場合は、必須フィールドのプロパティ・ファイルにこの行を含める必要があります。 |
サンプル行:
Parent;UD_OID_USR_DEFTVAL;MyString;Update
Child;
FIELD_NAME;DEFAULT_FIELD_VALUE;
Update
子フォームのすべてのレコードに対して、ユーティリティはFIELD_NAME
フィールドの値をDEFAULT_FIELD_VALUE
に更新します。
注意: 子フォームで必須(必要な)フィールドが追加された場合は、プロパティ・ファイルにこの行を含める必要があります。 |
サンプル行:
Child;UD_OID_GRP_NORMALFIELD;XYZ;Update
ParentParent;
OLD_FIELD_NAME;NEW_FIELD_NAME
親フォームで、ユーティリティはデータをOLD_FIELD_NAME
フィールドからNEW_FIELD_NAME
フィールドに移動します。
サンプル行:
ParentParent;UD_OID_USR_FNAME;UD_OID_USR_DEFTVAL;
ParentParentLookupOrComboToCheckBox;OLD_FIELD_NAME;NEW_FIELD_NAME;
親フォームで、「チェック・ボックス」型フィールドに変更され、名前も変更された「参照フィールド」または「コンボ・ボックス」型フィールドについて、このフィールドの値がTrue(大/小文字は区別されません)の場合、ユーティリティは各レコードのチェック・ボックスを選択済の状態に設定します。それ以外の値の場合、ユーティリティはチェック・ボックスを選択解除の状態に設定します。
サンプル値:
ParentParentLookupOrComboToCheckBox;UD_OID_USR_PREF_LANG;UD_OID_USR_CHKBOXTEST
ChildChild;
OLD_FIELD_NAME;NEW_FIELD_NAME
子フォームで、ユーティリティは以前のバージョンのOLD_FIELD_NAME
フィールドから新しいバージョンのNEW_FIELD_NAME
フィールドにデータをコピーします。
サンプル行:
ChildChild;UD_OID_GRP_GROUP_NAME;UD_OID_GRP_NORMALFIELD
ParentChild;
OLD_FIELD_NAME;NEW_FIELD_NAME
OLD_FIELD_NAME
フィールドが親フォームから子フォームへ移動され、NEW_FIELD_NAME
という名前に変更されました。ユーティリティはデータをOLD_FIELD_NAME
フィールドからNEW_FIELD_NAME
フィールドに移動します。
サンプル行:
ParentChild;UD_OID_USR_FNAME;UD_OID_GRP_NORMALFIELD
ChildParent;
OLD_FIELD_NAME;NEW_FIELD_NAME
OLD_FIELD_NAME
フィールドが子フォームから親フォームへ移動され、NEW_FIELD_NAME
という名前に変更されました。ユーティリティはデータをOLD_FIELD_NAME
フィールドからNEW_FIELD_NAME
フィールドに移動します。
サンプル行:
ChildParent;UD_OID_GRP_NORMALFIELD;UD_OID_USR_DEFTVAL
ChildParentLookupOrComboToCheckBox;OLD_FIELD_NAME;NEW_FIELD_NAME
「参照フィールド」または「コンボ・ボックス」型フィールド(OLD_FIELD_NAME
)が「チェック・ボックス」型フィールドに変更され、子フォームから親フォームに移動されます。親フォームで、このフィールドの値がTrue(大/小文字は区別されません)の場合、ユーティリティは各レコードのチェック・ボックスを選択済の状態に設定します。それ以外の値の場合、ユーティリティはチェック・ボックスを選択解除の状態に設定します。
サンプル行:
ChildParentLookupOrComboToCheckBox;UD_OID_GRP_GROUP_NAME;UD_OID_USR_CHKBOXTEST
ChildDiffChild;
OLD_FIELD_NAME;NEW_FIELD_NAME
ユーティリティは、移動元の子フォームのOLD_FIELD_NAME
フィールドから移動先の子フォームのNEW_FIELD_NAME
フィールドへデータを移動します。
注意: この更新は、移動元の子フォームに単一の行が含まれている場合にのみ実行されます。移動元の子フォームに複数の行が含まれているシナリオはサポートされません。 |
サンプル行:
ChildDiffChild;UD_OID_GRP_NORMALFIELD;UD_OID_ROLE_DIFFFIELD
ユーティリティを実行する前に、次の手順を実行します。
FVCユーティリティ・スクリプトで次のようにJavaホーム・ディレクトリ・パスを設定します。
使用しているオペレーティング・システムおよびアプリケーション・サーバーに応じて、テキスト・エディタで次のいずれかのファイルを開きます。
fvcutil.sh
fvcutil.cmd
set JAVA_HOME
を検索します。
次の例に示すように、Javaホーム・ディレクトリ・パスを設定します。
set JAVA_HOME=C:\Java\
ファイルを保存して閉じます。
ユーティリティを実行するプロセス(親)フォームのバージョンがアクティブ・バージョンであることを確認します。
フォームのバージョンがアクティブ・バージョンであるかどうかを確認するには、次の手順を実行します。
Design Consoleにログインします。
「Development Tools」フォルダを開き、「Form Designer」をダブルクリックします。
このフォームを検索して開きます。
フォームのアクティブ・バージョン・フィールドに、フォームのアクティブ・バージョンが表示されます。
ユーティリティは、フィールドがエラー処理アダプタに関連付けられている場合、フォーム・フィールドを更新できません。フィールドがエラー処理アダプタに関連付けられている場合は、次のようにアダプタへの関連付けを解除します。
注意: ユーティリティの実行後、フィールドとそのエラー処理アダプタ間の関連を再度設定できます。その方法については、この章で後述します。 |
Design Consoleにログインします。
「Process Management」フォルダを開き、「Process Definition」をダブルクリックします。
コネクタのプロセス定義を検索して開きます。
フィールドを更新するタスクの名前をメモします。
タスクをダブルクリックします。たとえば、「userID」フィールドにエラー処理アダプタがある場合は、「updateUserID」タスクをダブルクリックします。
「タスクの編集」ダイアログ・ボックスの「統合」タブで、アダプタ変数名とその説明をメモします。
「削除」をクリックします。
イベント・ハンドラ・アダプタを削除することを確認するには、表示されたメッセージで「OK」をクリックします。
「保存」をクリックします。
注意: フォーム・バージョンが変更されるたびにFVCユーティリティを実行する必要があります。 |
次のスクリプトを実行します。
Unixの場合:
sh fvcutil.sh
Windowsの場合:
fvcutil.bat
これにより、次の詳細を入力するように要求されます。
Oracle Identity Manager管理者のユーザー名の入力: Oracle Identity Manager管理者のユーザー名を入力します。
Oracle Identity Manager管理者のパスワードの入力: Oracle Identity Manager管理者のパスワードを入力します。
ロガー・レベルの入力: ロガー・レベルを入力します。DEBUG、WARN、INFOまたはERRORを指定できます。
ロガーの場所の入力: ユーティリティで各実行の終了時に作成するログ・ファイルの場所と名前を入力します。たとえば、<Path name>/FVC.logのようにします。
表22-1に、ログ・ファイルに記録される可能性があるエラー・メッセージ、および問題を修正するために実行できる対応する操作を示します。
表22-1 エラー・メッセージおよび解決策
エラー・メッセージ | 解決策 |
---|---|
名前OBJECT_NAMEのオブジェクトが見つかりませんでした |
プロパティ・ファイルで指定されているリソース・オブジェクトの名前を確認します。名前の綴りが正しいことを確認してください。 |
名前がFORM_NAMEのフォームが見つかりませんでした |
プロパティ・ファイルで指定されているフォームの名前を確認します。名前の綴りが正しいことを確認してください。 |
フォームのアクティブ・バージョンが見つかりませんでした。 |
新規に作成されたフォームがコミットされておらず、Active状態に設定されていない可能性があります。フォームがActive状態であることを確認します。 |
ToVersion値とフォームのアクティブ・バージョンが一致しません。 |
ToVersion値が現在アクティブなフォームのバージョンと同じであることを確認します。 |
ToVersion値またはFromVersion値が有効なバージョンではありません。 |
ToVersion値およびFromVersion値が正しいことを確認します。 |
FIELD_NAMEフィールドがOracle Identity Managerデータベースに存在しません。 |
フィールド名の綴りが正しいことを確認してください。 |