19 インタフェースのカスタマイズ
この章では、UIをカスタマイズする方法について説明します。次の項目が含まれます。
ノート:
Oracle Identity Managerのこのリリースには、暫定UIと呼ばれる、従来のUIテクノロジに基づく多数のUIページが含まれています。技術上の相違のために、暫定UIはポップアップ・ウィンドウに表示され、そのルック・アンド・フィールは異なります。これらのUIについては、この章の関連する項で説明します。
19.1 サンドボックスの管理
すべてのカスタマイズとフォーム管理は、サンドボックスで実行されます。
この項では、サンドボックスに関連する概念およびサンドボックスを管理する方法について説明します。次の項目が含まれます。
19.1.1 サンドボックス操作の理解
サンドボックスを使用すると、他のユーザーの環境に影響を与えることなく、カスタマイズを分離し、テストすることができます。
サンドボックスに加えたユーザー・インタフェースの変更は、サンドボックス内でのみ参照可能です。カスタマイズおよびフォーム管理機能の使用を開始するには、サンドボックスを作成してアクティブにする必要があります。フォームのカスタマイズおよび拡張が完了したら、サンドボックスを公開してそのカスタマイズを他のユーザーが使用できるようにします。
いくつかのサンドボックス操作を、次に示します。
-
アクティブ化: サンドボックスを使用するには、アクティブにする必要があります。サンドボックスをアクティブにした後、UIメタデータ・オブジェクトへの変更はすべて(たとえば、ページやフォームなど)、サンドボックスにのみ格納されます。アクティブなサンドボックスは、一度に1つのみ存在できます。アクティブなサンドボックスに関する情報は、セッションに格納されます。したがって、カスタマイズを続行するには、Oracle Identity Managerにログインするたびに、サンドボックスをアクティブにする必要があります。
-
非アクティブ化: サンドボックスのアクティブに対する逆の操作です。アクティブなサンドボックスがない場合、メタデータ・オブジェクトへの変更は許可されず、UIカスタマイズも許可されません。
-
公開: サンドボックスに格納されている変更をメインラインにマージして、それを他のユーザーに使用可能にするには、サンドボックスを公開する必要があります。サンドボックスを公開すると、その変更はメインラインにマージされ、元に戻すことはできません。そのサンドボックスは、アクティブ化、非アクティブ化、エクスポートまたは削除できなくなります。
ノート:
サンドボックスを公開する前に、サンドボックスをZIPファイルにエクスポートしてUIカスタマイズのバックアップを実行します。
すべてのサンドボックスについて、その公開前にMDSのバックアップを作成することをお薦めします。MDSバックアップは、Oracle Enterprise Managerなどのツールを使用して作成できます。Oracle Enterprise Managerを使用したMDSのバックアップの作成の詳細は、MDSバックアップの作成を参照してください。
-
一括および順番に公開: 複数のサンドボックスに様々なタイプの変更を格納していた場合は、複数またはすべてのサンドボックスを一括して公開して、メインラインに対するすべての変更をマージし、それらを他のユーザーが使用できるようにすることができます。サンドボックスを一括して公開する際に、サンドボックスを公開する順番を指定できます。サンドボックスを一括および順番に公開する手順については、サンドボックスを一括および順番に公開を参照してください。
-
エクスポート: サンドボックス・メタデータなど、サンドボックスに格納されているすべての変更を、ZIPファイルにエクスポートできます。これらの変更は、同じ環境または別の環境にインポートできます。
-
インポート: サンドボックス・アーカイブ(ZIPファイル)を、任意の環境にインポートできます。通常、インポートされたサンドボックスは、その環境で作成されたように使用できます。サンドボックスをインポートすると、同じ名前を持つ使用可能なすべてのサンドボックスが、インポートされるサンドボックスによって上書きされることに注意してください。
注意:
同じ名前を持つ使用可能なすべてのサンドボックスが、インポートされるサンドボックスによって上書きされます。
サンドボックスの管理およびサンドボックスの操作は、同時バージョニング・システムでの操作に似ています。サンドボックスをバージョニング・システムのブランチと見なすことができます。サンドボックスの作成方法は、ブランチの作成方法に似ています。サンドボックスのアクティブ化はブランチの最上位での変更と似ており、サンドボックスの公開はメイン・ブランチ(トランクと呼ばれる場合もある)にブランチ・コンテンツをマージすることと似ています。
ノート:
サンドボックスを作成すると、新しいブランチが作成されます。そのブランチ内でMDSの内容を変更できます。後で作成してメイン・ブランチに公開した、他のサンドボックスで行った変更を表示することはできません。同様に、このサンドボックスをマージしようとすると、同時変更例外が生成されます。サンドボックスの内容を手動で編集し、競合するファイル削除することをお薦めします。ただし、手動による編集ができない場合は、新しいサンドボックスを再度作成し、変更をやり直します。
19.1.2 同時実行の競合への対処
複数のユーザーがサンドボックスを使用してアプリケーションをカスタマイズできるため、同時実行の競合が発生する可能性があります。
この項では、同時実行の競合およびそれに対処する方法について説明します。次の項目が含まれます。
19.1.2.1 同時実行の競合の理解
複数のユーザーがサンドボックスを使用してアプリケーションをカスタマイズしている場合は、次のタイプの同時実行の競合が発生する可能性があります。
-
サンドボックス内の競合: ユーザーが、他のユーザーによって作成された変更を、直接的に同じアーティファクトを変更するか、間接的にアーティファクト間で共有されるファイルに影響を与えることによって上書きする場合。
複数のユーザーが同時に同じサンドボックスを使用してアプリケーションをカスタマイズしている場合に、複数のユーザーが同じアーティファクトをカスタマイズしようとしたか、または他の共有ファイルに間接的に影響を与えるカスタマイズ・タスクを実行したことが原因で、サンドボックス内の競合が発生する可能性があります。直接的な競合の1つの例は、異なるユーザーが同じレイヤー内の同じページ、同じフラグメント、または同じメタデータ・ファイルをカスタマイズしようとした場合です。間接的な競合の1つの例は、2人のユーザーが、それぞれ自分自身のオブジェクトを作成中に、どちらも同時間帯に自分の変更を保存したことによって、新しいオブジェクトの作成を追跡するメタデータ・ファイルで競合が発生した場合です。ユーザーが翻訳可能な文字列を追加または編集する操作を実行した場合など、ユーザーが共有アーティファクトの編集中に競合が発生することもあります。たとえば、あるユーザーがフィールドの表示ラベルやヘルプ・テキスト、検証ルールのエラー・メッセージを編集している一方で、別のユーザーが同時間帯に翻訳可能な文字列に同様に影響を与える操作を実行することがあります。共有アーティファクトの競合のもう1つの例として、アプリケーション全体で共有されるナビゲータ・メニューで複数のユーザーが作業する場合があります。
-
公開を目的とするサンドボックス間の競合: メインラインに公開される同じカスタマイズ済アーティファクトを持つ複数のサンドボックスがある場合。
公開を目的とする使用中のサンドボックスが複数存在する場合、サンドボックス間に競合が発生する可能性があります。同じアーティファクトに対する競合するカスタマイズ変更が2つのサンドボックスに含まれるときに、その両方を公開しようとすると、後に公開するサンドボックスについては公開が許可されず、競合について説明するエラーが表示されます。このような競合を回避するには、一度に1つのサンドボックスのみを作成して使用することをお薦めします。この種の競合は、翻訳可能な文字列を格納するリソース・バンドルなど、共有メタデータ・ファイルで発生する可能性もあります。
19.1.2.2 複数のユーザーが単一のサンドボックスで作業している場合に競合を回避するためのガイドライン
複数のユーザーが単一のサンドボックスで作業する場合、次のガイドラインに従う必要があります。
-
同じサンドボックスの複数の同時ユーザーは、別の無関係なオブジェクトのみを操作する必要があります。たとえば、user1がobject1を更新する場合、user2はobject2を更新できますが、object1は更新しないでください。両方の修正に、翻訳可能な文字列に対する変更が含まれている場合、別々のオブジェクトに対する変更でも同時間帯に保存すると、翻訳可能な文字列を格納するリソース・バンドルで競合が発生する可能性があることに注意してください。
-
同じサンドボックスのユーザーは、お互いが作成した変更を確認できます。各オブジェクトの最新バージョンは、それが最初に表示されるときにオンデマンドでロードされます。ADF Business Componentsのカスタマイズがある場合、ユーザーはログアウトしてから再度ログインし、変更がUIに反映されていることを確認する必要があります。
19.1.2.3 複数のユーザーが複数のサンドボックスで作業している場合に競合を回避するためのガイドライン
複数のユーザーが複数のサンドボックスで作業している場合は、単一のサンドボックスで作業する複数のユーザーに適用されるすべてのガイドラインに加えて、次のガイドラインに従う必要があります。
-
テストのみのサンドボックスについては、任意の数のサンドボックスが同時に存在できます。これらのサンドボックスが公開されない場合でも、複数のユーザーがテスト用の複数のサンドボックスを同時に使用できます。テストのみに使用される、公開されないサンドボックスは相互に競合を引き起こしませんが、単一のサンドボックスで動作している複数のユーザーを対象とするすべてのガイドラインに従う必要があります。ただし、サンドボックスが削除されると、すべての変更が失われます。
-
公開されるサンドボックスについては、互いに排他的なアーティファクトで動作する場合にのみ、複数のサンドボックスを同時に持つことができます。たとえば、タスク・フローを追加するためにカスタマイズするページが含まれるサンドボックスと、異なるアプリケーションからの異なるページが含まれるサンドボックスを持つことができます。
-
1つのアーティファクトがメインラインとサンドボックスの両方(または2つの異なるサンドボックス)で更新された場合に、そのサンドボックスを公開すると、その競合が検出され、エラーが生成されます。
19.1.2.4 同時実行の問題のトラブルシューティング
表19-1に、サンドボックスの使用方法に同時実行性の競合がある場合に直面する問題点および考えられる解決策を示します。
表19-1 同時実行性の問題のトラブルシューティング
シナリオ例 | 問題 | 解決策 |
---|---|---|
同時公開のため複数のサンドボックスで作業: サンドボックスS1を作成し、サンドボックスS2を作成し、S2に変更を加え、S2を公開し、S1に変更を加え、S1を公開します。 |
S1の公開を試行すると、エラーがスローされます。 |
新しいサンドボックスを作成して、変更をやり直します。 |
正常に動作しないサンドボックスの移行: 環境1で、サンドボックスS1を作成し、S1に変更を加え、S1をエクスポートおよび公開します。S2に対しても同様の操作を繰り返します。 環境2で、S2をインポートし、S2を公開します。その後、S1をインポートし、S1を公開します。 サンドボックスS1とサンドボックスS2は異なる順序で公開されます。 |
S1とS2の間で重複がある場合(たとえば、2つのサンドボックスが同じMDSドキュメントを更新した場合)、S2の一部として加えられた変更がS1により上書きされます。 たとえば、ADコネクタ・フォームがS1の一部として作成され、EBSコネクタ・フォームがS2の一部として作成されている場合、CatalogAM.xml.xmlおよびBizEditorリソース・バンドル・ファイルの間に重複が生じます。移行後、CatalogAM.xml.xmlおよびBizEditorリソース・バンドルには、S1の一部として開発されたADコネクタの変更のみ含まれます。 |
正しい順序でサンドボックスを公開します。これにより、再公開できます。 |
移行時のサンドボックスのスキップ: 環境1で、サンドボックスS1を作成し、S1に変更を加え、S1をエクスポートおよび公開します。S2に対しても同様の操作を繰り返します。 環境2で、S2をインポートし、S2を公開します。S1は移行しません。 環境1で公開されるS1は環境2へ移行しません。 |
S2が、S1の一部として加えられた変更に依存している場合、それらの変更は環境2では失われます。 |
両方のサンドボックスを公開します。これにより、再公開できます。 |
複数のソース環境からのサンドボックスの移行: 環境1で、サンドボックスS1を作成し、S1に変更を加え、S1をエクスポートおよび公開します。 環境2で、サンドボックスS2を作成し、S2に変更を加え、S2をエクスポートおよび公開します。 環境3で、S1をインポートし、S1を公開します。S2をインポートし、S2を公開します。 |
S1とS2の間で重複がある場合(たとえば、2つのサンドボックスが同じMDSドキュメントを更新した場合)、S1の一部として加えられた変更が失われます。 たとえば、ADコネクタ・フォームがS1の一部として作成され、EBSコネクタ・フォームがS2の一部として作成されている場合、CatalogAM.xml.xmlおよびBizEditorリソース・バンドル・ファイルの間に重複が生じます。移行後、CatalogAM.xml.xmlおよびBizEditorリソース・バンドルには、S2の一部として開発されたEBSコネクタの変更のみ含まれます。 |
手動により、サンドボックスを1つにマージします。 |
19.1.3 サンドボックスの作成
Identity Self ServiceまたはIdentity System Administrationからサンドボックスを作成できます。
サンドボックスを作成するには:
19.1.5 サンドボックスの非アクティブ化
サンドボックスを非アクティブ化すると、メタデータ・オブジェクトへの変更を禁止して、UIをカスタマイズできないようにすることができます。
サンドボックスを非アクティブ化するには:
19.1.7 サンドボックスのエクスポート
サンドボックス・メタデータなど、サンドボックスに格納されているすべての変更をZIPファイルにエクスポートします。
Oracle Identity Managerデプロイメント間でサンドボックスをエクスポートするには:
19.1.8 サンドボックスのインポート
サンドボックス・アーカイブ(ZIPファイル)を環境にインポートします。
Oracle Identity Managerデプロイメント間でサンドボックスをインポートするには:
- ツールバーで、「サンドボックスのインポート」をクリックします。「サンドボックスのインポート」ダイアログ・ボックスが表示されます。
- 「サンドボックス・アーカイブ」フィールドに、エクスポートしたサンドボックス・アーカイブへのパスを入力します。
- 「インポート」をクリックします。
- 「リフレッシュ」をクリックします。ターゲット・デプロイメントにインポートされたサンドボックスが、「使用可能なサンドボックス」タブに表示されます。
19.1.9 サンドボックスの公開
サンドボックスに格納されている変更をメインラインにマージし、それを他のユーザーが使用できるように、サンドボックスを公開します。
サンドボックスを公開するには:
ノート:
-
サンドボックスを公開する前にエクスポートしてください。サンドボックスの公開後はエクスポートできなくなるため、別の環境に移行する方法はありません。
-
サンドボックスを公開する前に、MDSのバックアップを作成することをお薦めします。MDSのバックアップは、Oracle Enterprise Managerを使用して作成できます。Oracle Enterprise Managerを使用したMDSのバックアップの作成の詳細は、MDSバックアップの作成を参照してください。
- 「サンドボックスの管理」ページの使用可能なサンドボックスが表示される表から、公開するサンドボックスを選択します。
- ツールバーで、「サンドボックスの公開」をクリックします確認を求めるメッセージが表示されます。
- 「はい」をクリックして確認します。サンドボックスが公開され、それに含まれるカスタマイズがメインラインとマージされます。
- 「公開済サンドボックス」タブをクリックすると、公開されたサンドボックスのリストを表示できます。
19.1.10 サンドボックスを一括および順番に公開
複数のサンドボックスを一括および順番に公開するには、サンドボックスの名前を公開順に記載したCSVファイルを作成して使用します。
19.1.11 サンドボックスの削除
不要になったらサンドボックスを削除します。
サンドボックスを削除するには:
- 「サンドボックスの管理」ページの使用可能なサンドボックスが表示される表から、削除するサンドボックスを選択します。
- ツールバーで、「サンドボックスの削除」をクリックします。確認を求めるメッセージが表示されます。
- 「はい」をクリックして確認します。サンドボックスが削除され、「サンドボックスの管理」ページに表示されなくなります。
ノート:
サンドボックスを削除しても、サンドボックスがアクティブなときに作成されたフォームは削除されません。フォームの削除は、このリリースのOracle Identity Managerではサポートされていません。
19.1.12 変更を元に戻す
サンドボックスを公開する前に、サンドボックス内のすべてのカスタマイズをデフォルト設定に戻すことができます。
この項では、サンドボックスで行った変更を元に戻す方法について説明します。次の項目が含まれます。
19.1.12.1 変更をデフォルト設定に戻す
すべてのカスタマイズを1つのサンドボックスで実行する必要があります。サンドボックスが公開されるまでは、変更はそのユーザーのみが表示可能で、このサンドボックスを非アクティブ化または削除することで簡単に元に戻すことができます。サンドボックスが公開された後は、実行された変更を元に戻すことはできません。
次の方法のいずれかで、サンドボックスから特定の変更を削除できます。
-
サンドボックスをエクスポートし、手動でそれを変更します。
-
「サンドボックスの管理」ページに移動し、サンドボックスの詳細を開き、変更を選択し、「カスタマイズの削除」をクリックして削除します。
MDSサンドボックスを公開すると、それらのドキュメントがメインラインにコミットされます。これらのドキュメントを使用してアプリケーションがただちに起動され、サンドボックスを公開した効果がアプリケーション・ユーザーに表示されます。場合によっては、意図せずに不完全なまたは誤ったサンドボックスを公開してしまうことがあります。そのような場合、誤ったサンドボックスを作成する直前の状態にメインラインを戻すことができます。
たとえば、時刻T1にShowAdminFeatureというサンドボックスを作成し、その中で時刻T2に公開したJSFFフラグメントをカスタマイズしたとします。公開したサンドボックスが誤りであった場合、時刻T1の状態を戻すことが必要になります。また、インタフェースのカスタマイズおよびサンドボックスの公開後にOracle Identity System Administrationにログインできない場合は、Identity System Administrationにログインできない場合に変更を元に戻すで説明している手順を実行します。
19.2 Oracle Identity Governanceでのスキンのカスタマイズ
Oracle ADFでは、アプリケーションの外観をカスタマイズするためにスタイルとともにスキンを使用します。これらの概念は、暫定UIのポップアップを除き、Oracle Identity Governanceのすべてのインタフェースに適用されます。
次の各項では、Oracle Identity Managerでのスキンのカスタマイズを実行する方法について説明します。
関連項目:
スタイルシートをカスタマイズする前に、次のURLでFusion Middleware Webユーザー・インタフェース開発者ガイドのスタイルおよびスキンを使用した外観のカスタマイズに関する説明を参照してください。
http://docs.oracle.com/cd/E15523_01/web.1111/b31973/af_skin.htm#ADFUI330
次のURLでは、スタイルシートをカスタマイズするために使用できるCSSスタイル・セレクタすべてがリストされています。
http://download.oracle.com/docs/cd/E15523_01/apirefs.1111/e15862/toc.htm
19.2.1 新しいスキンの構成
oim-alta
スキンを拡張してカスタム・スキンを構成できます。oim-alta
スキンはOracle Identity Managerに付属しています。カスタム・スキン・ファイルとスキン定義はoracle.iam.ui.custom-dev-starter-pack.war
共有ライブラリの一部としてデプロイされます。
oim-alta
スキンを拡張するカスタム・スキンを作成、デプロイおよび構成するには、次の手順を実行します。
19.2.2 ブランドおよびロゴの変更
UIアーティファクト(ロゴ、ボタン、メニュー項目など)のカスタマイズまたは変更は、実行時に実行できます。
ノート:
この項で説明する手順は、Oracle Identity Self Serviceをカスタマイズすることでブランドおよびロゴを変更するためのものです。Oracle Identity System Administration (レガシー拡張コンソールとも呼ぶ)から開くウィンドウ(たとえば、「システム構成」の下の「構成プロパティ」をクリックしたときに開くウィンドウ)のUIアーティファクトをカスタマイズする場合は、次を参照してください。
http://docs.oracle.com/cd/E21764_01/doc.1111/e14309/uicust.htm#BABFCFID
ロゴ・イメージを変更するには:
ノート:
ロゴ・イメージを変更するには、カスタム・ロゴを$OIM_HOME/server/apps/oim.ear/iam-consoles-faces.war/images/
フォルダに配置する必要があります。ここで、OIM_HOMEはOracle Identity Managerホームのフルパスです。
-
システム管理者としてOracle Identity Self Serviceにログインします。
-
サンドボックスを作成してアクティブ化します。
ノート:
Web Composerを使用してUIをカスタマイズするには、サンドボックスの作成およびアクティブ化が必須です。アクティブなサンドボックスがないと、Oracle Identity Managerでページをカスタマイズ・モードで開くことができません。
-
「カスタマイズ」をクリックします。カスタマイズ・パネルがページの上部に表示されます。
-
「構造」をクリックします。コンポーネント・ツリーが表示されます。コンポーネント・ツリーに、ページのすべてのADFコンポーネントが表示されます。
-
ロゴをクリックします。確認を求める共有コンポーネント編集の確認ダイアログ・ボックスが表示されます。
-
「編集」をクリックします。図19-1に示すように、コンポーネント・ツリーでロゴ・オブジェクトが選択されます。
-
アイコンをクリックします。「コンポーネント・プロパティ」ダイアログ・ボックスが表示されます。
-
「コンポーネントのプロパティ」で、
Icon
プロパティの横の下矢印アイコンをクリックし、「式ビルダー」を選択します。 -
「式ビルダー」で、
#{attrs.logoImagePath}
のデフォルト値をロゴ・パス、つまり/../oim/images/$LOGO_NAME
に置き換えます。ここで、LOGO_NAMEはカスタム・ロゴの名前です。ヒント:
-
デフォルトのEARファイルおよびWARファイル(セルフ・サービスEAR、システム管理EARおよびxlWebApp.warなど)のカスタマイズはサポートされていません。
-
デフォルトでは、Oracleロゴは119x25ピクセルです。したがって、同じ寸法のカスタム・ロゴを使用できます。これよりも大きいロゴを使用する場合は、CSSを変更する必要があります。
-
「コンポーネント・プロパティ」ダイアログ・ボックスの「スタイル」タブを使用することで、いずれかのADFコンポーネントのフォントを指定する場合は、ターゲット・ブラウザおよびプラットフォームで、その特定のフォント名がサポートされていることを確認してください。Mozilla Firefoxに対してサポートされているリストを調べるには、「ツール」→「オプション」→「コンテンツ」→「フォントと配色」を選択します。Microsoft Internet Explorerの場合は、「ツール」→「インターネット オプション」→「全般」→「フォント」を選択します。
-
-
「適用」をクリックします。ロゴは、指定した新しいロゴに変更されました。
-
Identity Self Serviceのグローバル・バナーを変更するには、Identity Self Serviceのテキストをクリックし、「コンポーネントのプロパティ」ダイアログ・ボックスを開きます。
ヒント:
Oracle Identity Managerログイン・ページのバナーを変更するには、ログイン・ページをカスタマイズ・モードで開く必要があります。ただし、ログイン・ページに「カスタマイズ」リンクはありません。したがって、カスタマイズ・モードでログイン・ページを開くには、次の手順を実行します。
-
UIをカスタマイズする権限を持つ管理者として、Oracle Identity Self Serviceにログインします。
-
アクティブなサンドボックスで、「カスタマイズ」リンクをクリックします。Oracle Identity Self Serviceは、カスタマイズ・モードになりました。
-
認証されていないページのカスタマイズに記載されたステップを実行します。
-
-
「コンポーネントのプロパティ」ダイアログ・ボックスの「表示オプション」タブで、「値」フィールドの横の下矢印アイコンをクリックし、「式ビルダー」を選択します。「式エディタ」ダイアログ・ボックスが表示されます。
-
値または式の入力が選択された状態で、テキストを入力してIdentity Self Serviceを置換し、「OK」をクリックします。
-
「適用」をクリックします。
-
「閉じる」をクリックして、WebCenter Composerを閉じます。
-
サンドボックスを公開します。
19.3 実行時のページのカスタマイズ
Oracle Identity Managerのカスタマイズを大きく分類すると、UIのカスタマイズ、またはユーザー、ロール、組織、カタログおよびプロビジョニング・ターゲット・リソース・エンティティのオブジェクト定義の拡張に分けられます。
次の各項では、カスタマイズについて説明します。
19.3.1 カスタマイズ可能なエンティティ・アーティファクト
ユーザー、ロール、組織、カタログなどの様々なエンティティと、ターゲット・リソース・フォームのプロビジョニングのアーティファクトをカスタマイズできます。
表19-2に、各エンティティのカスタマイズ可能なアーティファクトを示します。
表19-2 カスタマイズ可能なエンティティ・アーティファクト
エンティティ | アーティファクト |
---|---|
ユーザー |
ページの作成 ページの変更 ユーザー属性の詳細 「拡張検索」インタフェース 本人情報 自己登録 |
ロール |
ページの作成 ページの変更 「拡張検索」インタフェースとその内容: - 問合せ基準 - 結果表の列 |
組織 |
ページの作成 ページの変更 「拡張検索」インタフェースとその内容: - 問合せ基準 - 結果表の列 |
カタログ |
カタログ検索ページとその内容: - 結果表の列 - カタログ項目詳細 |
ターゲット・リソースのプロビジョニング |
ターゲット・リソース作成フォームのプロビジョニング ターゲット・リソース変更フォームのプロビジョニング ターゲット・リソース・バルク・フォームのプロビジョニング |
19.3.2 UIカスタマイズでの式言語の使用
式言語(EL)は、JavaBeansコンポーネントに格納されているアプリケーション・データへのアクセスを許可します。
ELおよびEL式構文の概要については、次のURLを参照してください。
http://docs.oracle.com/javaee/6/tutorial/doc/gjddd.html
この項の内容は次のとおりです。
19.3.2.1 ユーザー・コンテキストで使用可能なEL式
OIMContext Beanは、ADFセッションスコープBeanとして定義され、ログイン・ユーザーに関する情報にアクセスできるようにします。
表19-3に、Oracle Identity Managerユーザー・コンテキストで使用可能なEL式を示します。
表19-3 ユーザー・コンテキストのEL式
EL | 説明 |
---|---|
#{oimcontext.currentUser['ATTRIBUTE_NAME']} |
ログイン中のユーザーのATTRIBUTE_NAME属性の値にアクセスします。 |
#{oimcontext.currentUser['UDF_NAME']} |
ログイン中のユーザーのUDF_NAME属性の値にアクセスします。UDF属性は、フォーム・デザイナを使用して定義できます。 |
#{oimcontext.currentUser.roles} |
ログイン中のユーザーに割り当てられているロールを含むROLE_NAMEおよびRoleEntityマッピングにアクセスします。RoleEntityは、name、description、keyおよびdisplayNameプロパティがあるJava Beanです。 |
#{oimcontext.currentUser.roles['SYSTEM ADMINISTRATORS'] != null} |
ログイン中のユーザーがシステム管理者の管理ロールを持つ場合にtrueと評価されるブールEL。同様に、その他のロールを持つかどうかを調べるようにELを変更することもできます。 |
#{oimcontext.currentUser.adminRoleMap['OrclOIMSystemAdministrator'] != null} |
ログイン中のユーザーがOrclOIMSystemAdministrator管理ロールを持つ場合にtrueと評価されるブールEL。同様に、その他の管理ロールを持つかどうかを調べるようにELを変更することもできます。 |
19.3.2.2 OIMContext Beanからのユーザー属性値の取得
次の例に示すように、EL式を使用して、oimcontext Beanからすべての使用可能なユーザー属性値を取得することができます。
-
現在ログイン中のユーザーのユーザー・キーを取得するには:
#{oimcontext.currentUser.usr_key}
または
#{oimcontext.currentUser['usr_key']}
-
現在ログイン中のユーザーのロール名のリストを取得するには:
#{oimcontext.currentUser.roles}
-
現在ログイン中のユーザーの管理ロール名のリストを取得するには:
#{oimcontext.currentUser.adminRoles}
たとえば、ユーザーがOracle Identity Self Serviceにログインするときにユーザー・ログイン名を含むメッセージを表示する場合は、EL式を使用して現在ログイン中のユーザーのログイン名を取得し、それをページに表示できます。ユーザー・ログイン名を取得する式を次に示します。
#{oimcontext.currentUser['User Login']}
19.3.2.3 RequestFormContextで使用可能なEL式
RequestFormContextは、エンティティ・フォーム詳細タスク・フローのpageFlowScopeで使用可能なBeanです。エンティティ・フォームには、ユーザー・フォーム、アプリケーション・インスタンス・フォーム、ロール・フォームおよび権限フォームが含まれます。RequestFormContextは、様々なコンテキスト情報を提供します。このコンテキスト情報を使用すると、特定のビジネス要件に基づいてフォームをカスタマイズできます。
表19-4に、RequestFormContextに関わるEL式を示します。
表19-4 RequestFormContextに関わるEL式
EL | 説明 |
---|---|
#{pageFlowScope.requestFormContext} |
RequestFormContextの現在のインスタンスにアクセスします。 |
#{pageFlowScope.requestFormContext.operation} |
エンティティで実行されている操作タイプにアクセスします。可能な値は、CREATE、MODIFY、ENABLE、DISABLEおよびREMOVEです。 |
#{pageFlowScope.requestFormContext.operation == 'MODIFY'} |
エンティティで実行中の現在の操作がMODIFYである場合にtrueと評価されるブールEL。 |
#{pageFlowScope.requestFormContext.actionType} |
エンティティ・フォームが表示されている場合に、ユーザーが実行中のアクションにアクセスします。可能な値は、APPROVAL、FULFILL、REQUEST、VIEWおよびSUMMARYです。 |
#{pageFlowScope.requestFormContext.actionType == 'REQUEST'} |
エンティティ・フォームが表示される場合にユーザーが実行中のアクションがREQUESTの場合、たとえば、ロールまたはアプリケーション・インスタンスをリクエストする場合に、trueと評価されるブールEL。 |
#{pageFlowScope.requestFormContext.bulk} |
実行中の操作がバルク操作である場合、たとえば、一度に複数のアプリケーション・インスタンスをリクエストする場合に、trueと評価されるブールEL。 |
#{pageFlowScope.requestFormContext.beneficiaryIds} |
受益者またはターゲット・ユーザーIDのリストにアクセスします。たとえば、ユーザーJohn Doe用のアプリケーション・インスタンスをリクエストしている場合、リストにはJohn DoeのユーザーIDが含まれます。 ノート: Javaコードを使用して、リストにアクセスし、それに対して操作を実行することをお薦めします。 |
#{pageFlowScope.requestFormContext.cartItemIds} |
カート・アイテムIDのリストにアクセスします。たとえば、ユーザーのアプリケーション・インスタンスをリクエストしている場合、リストにはリクエスト中のアプリケーション・インスタンスIDが含まれます。 ノート: Javaコードを使用して、リストにアクセスし、それに対して操作を実行することをお薦めします。 |
#{pageFlowScope.requestFormContext.requestEntityType} |
リクエストされているエンティティ・タイプを取得します。可能な値は、ROLE、ENTITLEMENT、APP_INSTANCEおよびUSERです。 |
#{pageFlowScope.requestFormContext.requestEntityType == 'APP_INSTANCE'} |
リクエストされているエンティティ・タイプがAPP_INSTANCEの場合にtrueと評価されるブールEL。 |
#{pageFlowScope.requestFormContext.requestEntitySubType} |
リクエスト中のエンティティのサブタイプにアクセスします。たとえば、APP_INSTANCEをリクエスト中の場合、requestEntitySubTypeがアプリケーション・インスタンス・キーです。 |
#{pageFlowScope.requestFormContext.instanceKey} |
変更中のインスタンスのキーにアクセスします。 |
19.3.3 UIコンポーネントの条件付き表示または非表示
条件付きでUIコンポーネントを表示または非表示にするには、コンポーネントのrenderedプロパティを使用して、ブール値に評価されるEL式を割り当てます。EL式がtrueと評価された場合に、コンポーネントが表示されます。
次の例を参考にしてください。
ノート:
コンポーネントのrenderedプロパティは、Oracle Web Composerの「コンポーネントの表示」オプションに対応します。
-
ログイン中のユーザーがシステム管理者の管理ロールを持つ場合にUIコンポーネントを表示するには:
#{oimcontext.currentUser.roles['SYSTEM ADMINISTRATORS'] != null}
同様に、ログイン中のユーザーがその他のロールを持つかどうかを調べるように、EL式を変更することもできます。
-
サインイン済のユーザーがシステム管理者の管理ロールを持つ場合にUIコンポーネントを表示するには:
#{oimcontext.currentUser.adminRoles['OrclOIMSystemAdministrator'] != null}
同様に、ログイン中のユーザーがその他の管理ロールを持つかどうかを調べるように、EL式を変更することもできます。
-
ログイン中のユーザーのusr_key属性が1の場合にUIコンポーネントを表示するには:
#{oimcontext.currentUser['usr_key'] == 1}
-
ログイン中のユーザーの姓がDoeの場合にUIコンポーネントを表示するには:
#{oimcontext.currentUser['Last Name'] == 'Doe'}
-
ログイン中のユーザーがXellerateユーザー組織に属している場合にUIコンポーネントを表示するには:
#{oimcontext.currentUser['Organization Name'] == 'Xellerate Users'}
-
ユーザーのUDF_NAMEというUDF属性がUDF_VALUEである場合にUIコンポーネントを表示するには:
#{oimcontext.currentUser['UDF_NAME'] == 'UDF_VALUE'}
ノート:
コンポーネントの条件付き表示では、カスタム・マネージドBeanを実装することで、特定の条件に基づいてコンポーネントを表示する方法について説明しています。
19.3.5 ADFバリデータを使用した入力データの検証
事前定義されたADFバリデータを使用して入力コンポーネント・データを検証するには、JSFFページ・フラグメントを変更し、入力コンポーネントの子要素としてADFバリデータのいずれかを含める必要があります。
表19-5に、ADFバリデータを示します。
表19-5 ADFバリデータ
バリデータ | 説明 |
---|---|
<af:validateByteLength> |
エンコード時に文字列のバイト長を検証します。 |
<af:validateDateRestriction> |
入力された日付が、指定された制限内かどうかを検証します。 |
<af:validateDateTimeRange> |
入力された日付が、指定された範囲内かどうかを検証します。 |
<af:validateDoubleRange> |
入力された日付が、指定された範囲内かどうかを検証します。 |
<af:validateLength> |
入力された値が、指定された長さに収まっているかどうかを検証します。 |
<af:validateLongRange> |
入力された値が、指定された範囲内かどうかを検証します。 |
<af:validateRegExp> |
Javaの正規表現構文を使用して式を検証します。 |
たとえば、「ユーザー・ログイン」属性に許可された文字が英数字ASCII文字のみであることを検証するために、「ユーザー・ログイン」入力コンポーネントの子要素として次のRegExpバリデータを含めることができます。
<af:validateRegExp pattern="[a-zA-Z0-9]*"/>
ADFバリデータは、Web Composerを使用して直接追加することはできません。かわりに、別のコンポーネント(たとえば、別の入力テキスト)を、「ユーザー・ログイン」コンポーネントの子コンポーネントとして追加することができます。その後、この変更を含むサンドボックスをエクスポートできます。最後に、エクスポートされたサンドボックス内のフォームのJSFFページ・フラグメントを更新し、そのサンドボックスをインポートします。
ノート:
カスタム・フィールド検証の実装では、カスタム・マネージドBeanを使用してカスタム・フィールド・バリデータを実装する方法について説明しています。
19.3.6 必要に応じた入力属性のマーキング
条件付きで入力フィールドを必須にするには、コンポーネントのrequiredプロパティを使用して、それにブールEL式を割り当てることができます。EL式がtrueと評価された場合に、コンポーネントは必須とマークされ、必要な検証がトリガーされます。
EL式の例については、UIコンポーネントの条件付き表示または非表示を参照してください。
フィールドを別のフィールドの値に基づいて条件付きで必須にする方法の詳細は、条件付き必須フィールドの設定を参照してください。
19.3.7 リンクまたはボタンの追加
「コンテンツの追加」ダイアログ・ボックスを使用して、UIページにリンクまたはボタンを追加します。
Oracle Identity Self Serviceにリンクを追加するには:
19.3.8 ADFコンポーネントの非表示および削除
ADFコンポーネントを非表示にすると、そのUIアーティファクトはユーザーから非表示になります。
この項では、ADFコンポーネントを非表示および削除する方法について説明します。次の項目が含まれます。
19.3.8.1 ADFコンポーネントの非表示
ADFコンポーネントを非表示にするには:
- Oracle Identity Self Serviceで、コンポーネントを非表示にするページに移動します。
- 「カスタマイズ」をクリックして、WebCenter Composerを開きます。
- 「構造」をクリックしてコンポーネント・ツリーを開きます。
- 非表示にするページ上のコンポーネントをクリックします。コンポーネント・ツリーで対応するADFコンポーネントが選択されます。
- コンポーネント・ツリーで選択されたADFコンポーネントを右クリックし、「非表示」を選択します。
19.3.9 属性の表示および非表示
「コンポーネント・プロパティ」ダイアログ・ボックスの「子コンポーネント」タブを使用して、ページで属性を表示または非表示にします。
ページの属性を表示または非表示にするには:
19.3.10 認証されていないページのカスタマイズ
「ユーザー登録」ページや「サイン・イン」ページなど、Identity Self Serviceの認証されていないページをカスタマイズできます。
認証されていないページをカスタマイズするには:
19.3.11 ツールバーの内容のカスタマイズ
「コンポーネント・プロパティ」ダイアログ・ボックスのツールバー・コンポーネント・タブを使用して、ツールバーでボタンを表示または非表示にします。
19.3.12 証明ページのカスタマイズ
Identity Self Serviceで証明機能に関連するページをカスタマイズするには、証明詳細ペインをカスタマイズし、証明表にカスタム属性を追加し、証明表をカスタマイズします。
この項の内容は次のとおりです。
19.3.12.1 証明詳細ペインのカスタマイズ
証明表で選択した行からの情報は、表の下部にある詳細ペインのカスタマイズに使用できます。この項の手順を使用して、ユーザー証明詳細ペインをカスタマイズできます。どの証明タイプでも、同様の手順が実行されます。
カスタマイズ・モードで、次のステップを実行します。
19.3.12.2 証明表へのカスタム属性の追加
UDFを作成し、それを証明表に追加するには:
ノート:
証明表にデフォルト属性を追加するには、「表示」メニューから、「列」、「ATTRIBUTE_NAME」を選択します。デフォルト属性列が表に追加されます。同様に、「表示」、「列」から選択することで、証明表から属性を非表示にできます。
19.4 EL式を使用したタスク・フロー・リージョンの保護
新しいタスクフローごとに、jazn-data.xmlファイル内にエントリがあります。
次に、例を示します。
<permission> <class>oracle.adf.controller.security.TaskFlowPermission</class> <name>/WEB-INF/oracle/iam/ui/catalog/tfs/request-summary-details-tf.xml#request-summary-details-tf</name> <actions>view</actions> </permission>
これは、任意のタスク・フローがIdentity Self Service UIで表示されるために必要な基本的な権限レベルです。管理ロールに依存する高度な権限の場合は、機能セキュリティの強制にEL式を使用できます。
タスク・フローを保護するには、タスク・フローを親JSFFファイル内のリージョンとして使用する必要があります。リージョンに対してEL式を定義すると、ログイン中のユーザーに対するタスク・フローの表示または非表示を、ユーザーの権限に基づいて実施できるようになります。
リージョンを保護する場合は、次の例を検討してください。
my-access-accounts.jsffページで、details-information-tfタスク・フローは、次のEL式を使用してユーザーに対して選択的にレンダリングされます。
rendered="# {oimappinstanceAuth.view [bindings.appInstanceKey].allowed}"
説明:
-
oimappinstanceAuthは、adfc-config.xmlファイルでの、ApplicationInstanceAuthz.java認可Beanのマップ名です。
-
viewは、チェックする必要があるUIPermissionの名前です。oimappinstanceAuth参照用の実際のBeanファイルであるApplicationInstanceAuthz.javaでは、次の権限が定義されています。
Private UIPermission view = new UIPermission (PolicyConstants.Resources.APPLICATION_INSTANCE.getId(), PolicyConstants.ApplicationInstanceActions.VIEW_SEARCH.getId());
-
appInstanceKeyは、ユーザーが表示しようとしているアプリケーション・インスタンスのIDで、これはパラメータとして渡されます。
19.5 Oracle Identity Governanceヘルプのカスタマイズ
Oracle Identity Governanceは、Oracle Identity Self ServiceとOracle Identity System Administrationでオンライン・ヘルプ・システムを開発して使用できます。
この項では、オンライン・ヘルプ・システムを開発する方法について説明します。次の項目が含まれます。
19.5.1 カスタム・ヘルプ・トピックの追加
Oracle Identity Managerヘルプ・トピックに加えて、カスタム・ヘルプ・トピックを作成して使用することもできます。
この項では、カスタム・ヘルプ・トピックを作成、構成および表示する方法について説明します。次の項目が含まれます。
19.5.1.1 カスタム・ヘルプ・トピックの作成
カスタム・ヘルプ・ブックは、別のJARファイルとして提供されます。これは、OIM_HOME/help/CUSTOMOHW.jarファイルです。独自のヘルプ・トピックおよびカスタム・ヘルプ・ブックJARを作成し、UIでこのカスタム・ヘルプ・トピックが表示されるようにCUSTOMOHW.jarファイルを置き換えます。
Oracle Help for the Web (OHW)を使用して、カスタム・ヘルプ・トピックを作成します。カスタムOHWヘルプ・トピックの作成方法の詳細は、Oracle Helpによるヘルプ・システムの開発のOHWデプロイメントの理解を参照してください。
19.5.1.2 カスタム・ヘルプ・トピックの参照
新しいカスタム・ヘルプ・ブックを作成した後に、OIM_HOME/help/ディレクトリの次の構成ファイルを変更して、新しいヘルプ・ブックが参照されるようにします。
-
ohwconfig_identity.xml: Oracle Identity Self Serviceのカスタム・ヘルプ・トピックの構成ファイル
-
ohwconfig_sysadmin.xml: Oracle Identity System Administrationのカスタム・ヘルプ・トピックの構成ファイル
ノート:
Oracle Identity Managerをアップグレードするとこの構成ファイルが上書きされるため、カスタム・ヘルプ・ブックを参照するには再び構成ファイルを変更する必要があります。
19.5.1.3 Identity Self Serviceへのカスタム・ヘルプ・トピックの追加
カスタム・ヘルプ・トピックを作成した後に、カスタム・ヘルプJARファイルを作成し、CUSTOMOHW.jarファイルを新しいJARファイルと置き換えます。これで、このUIページに関するカスタム・ヘルプ・トピックを追加できます。次の手順は、Oracle Identity Self Serviceでカスタム・ヘルプ・トピックをホーム・ページに追加する方法を示しています。
- Oracle Identity Self Serviceの「サンドボックスの管理」で、サンドボックスをアクティブ化します。
- 「セルフ・サービス」、「コンプライアンス」または「管理」のホームページの1つに移動し、「カスタマイズ」をクリックします。
- 「構造」をクリックしてコンポーネント・ツリーを開きます。
- ヘルプ・トピックを追加するホーム・ページのセクションをクリックします。「編集の確認タスク・フロー」ポップアップで、「編集」をクリックします。
- プラス(+)アイコンをクリックして「コンテンツの追加」ダイアログ・ボックスを開きます。
- 下にスクロールし、Webコンポーネントをクリックします。
- コマンド・イメージ・リンクで、「追加」をクリックします。選択したコンポーネントがホーム・ページに追加されます。
- 追加したコンポーネントを選択して、「編集」をクリックします。「コンポーネントのプロパティ」ダイアログ・ボックスを開きます。
- 「表示オプション」タブをクリックします。
- 「テキスト」フィールドに、ページに表示されるヘルプ・トピックのテキストを入力します。
- 「イメージ」フィールドに、ヘルプ・アイコン・イメージのパスおよびファイル名を入力します。
- アクション・リスナー・フィールドに、カスタム・ヘルプ・トピックのHelpTopicIDを含むURLを入力します。
- 「Apply」をクリックし、「OK」をクリックします。
- 保存し、カスタマイズ・モードを閉じます。ヘルプ・トピックがホーム・ページに追加されます。ヘルプ・トピックをクリックすると、カスタム・ヘルプ・ブックJARファイルのヘルプ・トピックが表示されます。
19.5.2 インライン・ヘルプの追加
Oracle Identity Managerは、デフォルトではインライン・ヘルプを提供しません。ただし、フィールドおよびボタンのツールチップ・テキストの追加など、様々なUIコンポーネントに対してインライン・ヘルプを追加できます。
この項では、インライン・ヘルプの構成およびインライン・ヘルプの追加方法について説明します。次の項目が含まれます。
19.5.2.1 インライン・ヘルプの構成
インライン・ヘルプのコンテンツは、カスタムWARライブラリ(oracle.iam.ui.custom-dev-starter-pack.war)のファイルから取得されます(/oracle/iam/ui/custom/help/CustomHelpResourceBundle.propertiesファイルなど)。WARライブラリでCustomHelpResourceBundle.propertiesファイルを使用できない場合は、作成できます。
CustomHelpResourceBundle.propertiesファイルのエントリを使用して、インライン・ヘルプ・コンテンツを指定できます。エントリには、CUSTOMRB接頭辞が付き、次の接尾辞のいずれか1つが付きます。
-
_DEFINITION: これは、インライン・ヘルプをフィールドまたはUIコンポーネントに対して指定します。たとえば:
CUSTOMRB_EMAIL_DEFINITION=使用可能な場合は、公式な電子メールIDを入力してください。
EMAILはフィールド名で、このエントリの値はマウス・ポインタをこのフィールド上に置いたときに表示されるインライン・ヘルプ・テキストです。
-
_INSTRUCTIONS: これはページ・レイアウトに対するインライン・ヘルプを指定します。たとえば:
CUSTOMRB_MY_INFO_INSTRUCTIONS=プロファイルの更新は承認後に反映されます。
MY_INFOはページであり、このエントリの値はページ上部に表示されるインライン・ヘルプ・テキストです。
19.5.2.2 インライン・ヘルプの追加
たとえば、次の手順はOracle Identity Self Serviceの「本人情報」ページの「電話」フィールドに対してインライン・ヘルプを追加する方法を示しています。
関連項目:
ヒントおよびメッセージの定義、ADFコンポーネントのヘルプ情報の提供の詳細は、Oracle Application Development Framework Webユーザー・インタフェース開発者ガイドのヒント、メッセージおよびヘルプの表示を参照してください
19.6 ホーム・ページのカスタマイズ
ホーム・ページでは、Oracle Identity Self Serviceの様々な機能が一目でわかります。ホーム・ページは、コンテナまたはタイルを追加、削除および再配置することでカスタマイズできます。
この項では、ホーム・ページのカスタマイズ方法について説明します。次の項目が含まれます。
19.6.1 ホーム・ページへのタイルの追加
UIをカスタマイズすることで、Identity Self Serviceホーム・ページにタイルを追加します。
ホーム・ページにタイルを追加するには:
-
サンドボックスを作成してアクティブ化します。
-
タイルの追加先のホーム・ページに移動します。
ホーム・ページは、ページが1つ以上のグリッド行に分割され、各グリッド行が最大4つのグリッド・セルを持つことができる「パネル・グリッド・レイアウト」から構成されます。図19-7に、ホーム・ページがグリッド行とグリッド・セルにどのように分割されるかを示します。
-
「カスタマイズ」をクリックしてカスタマイズ・モードに切り替えます。
-
「構造」をクリックして、「構造」ビューに切り替えます。
-
新規タイルを追加するホーム・ページの位置を識別します。
新規タイルを追加する前に、新規グリッド・セルとオプションで新規グリッド行を追加する必要があります。
-
グリッド行を追加するには:
-
図19-8に示すように「パネル・グリッド・レイアウト」コンポーネントを選択します。
-
「追加」アイコンをクリックします。
-
リソース・カタログで、Webコンポーネントに移動し、グリッド行コンポーネントの横の「追加」リンクをクリックします。新規グリッド行がpanelGridLayoutコンポーネントの最初の子としてページに追加されます。
-
グリッド行コンポーネントを追加した後、「高さ」、上部マージンおよび下部マージン・プロパティの値を変更して既存のグリッド行に揃えることができます。
-
-
グリッド・セルを追加するには:
-
図19-8に示すように「パネル・グリッド・レイアウト」コンポーネントを選択します。
-
右側のコンポーネント・ツリーを使用して、新規グリッド・セルを追加する子グリッド行の1つを選択します。
-
「追加」アイコンをクリックします。
-
リソース・カタログで、Webコンポーネントに移動し、グリッド・セル・コンポーネントの横の「追加」リンクをクリックします。新規グリッド・セルが選択したグリッド行コンポーネントの最初の子としてページに追加されます。
-
グリッド・セル・コンポーネントを追加した後、「位置合せ」、終了マージン、開始マージンおよび「幅」プロパティの値を変更して既存のグリッド・セルに揃えることができます。
-
-
新規グリッド・セルが追加された後で、それを選択し、「追加」アイコンをクリックします。リソース・カタログで、Webコンポーネントに移動し、ダッシュボード・ボックス・コンポーネントの横の「追加」リンクをクリックします。新規ダッシュボード・タイルがページに追加されます。
ノート:
新規タイルがページに表示されていない場合、ページをリフレッシュします。
-
タイル(DashboardBoxコンポーネントをコンポーネント・ツリーで選択する必要があります)を選択し、「編集」アイコンをクリックし、ホバー・イメージ、「イメージ」、「指示テキスト」および「タイトル・テキスト」プロパティの値を変更します。
ノート:
タイルを追加した後で、次のいずれかの項で説明するステップを実行して、タイルをクリックして新規ページを起動します。
サンドボックスはまだ公開しないでください。
19.6.2 タイル・アイコンからの新規ページの起動
タイル・アイコンから新規ページを起動するようにホーム・ページのjsff.xmlファイルを編集します。
タイル・アイコンをクリックしてページを起動するには:
19.6.3 「タイル」メニューからの新規ページの起動
タイル・メニューから新規ページを起動するようにホーム・ページのjsff.xmlファイルを編集します。
タイル・メニュー項目をクリックしてページを起動するには:
19.6.4 タイルの条件付き表示
デフォルトでは、すべてのホーム・ページ・タイルが表示されます。ただし、特定のユーザーに対して一部のタイルを非表示にすることが必要な場合があります。たとえば、エンド・ユーザーに対して「プロビジョニング・タスク」タイルを非表示にすることが必要な場合があります。
そのためには、「プロビジョニング・タスク」タイルを含むグリッド・セル・コンポーネントを選択し、レンダリングされたプロパティに対して次のELを使用します(Web Composerに「コンポーネントの表示」として表示されます)。
#{oimcontext.currentUser.adminRoles['OrclOIMSystemAdministrator'] != null}
詳細は、UIコンポーネントの条件付き表示または非表示を参照してください。
19.7 マネージドBeanおよびタスク・フローの開発
Oracle Identity Managerに高度なカスタマイズを実装するには、JDeveloper IDEを使用して新しいタスク・フローおよびマネージドBeanを開発し、カスタムWARファイル(oracle.iam.ui.custom-dev-starter-pack.war
)にパッケージ化します。
この項では、マネージドBeanとタスクフローを使用した高度なカスタマイズについて説明します。次の項目が含まれます。
19.7.1 マネージドBeanのタイプ
マネージドBeanは、リクエストBeanまたは状態Beanにすることも可能です。
次のタイプのBeanがあります。
-
リクエストBean: すべてのリクエストに対してBeanの新規インスタンスが作成されます。JSFFコンポーネント・バインディングおよびリスナーは、通常はリクエストBeanにバインドされます。
-
状態Bean: アプリケーション、ユーザー・セッションまたは特定のフローの状態を保持するBean。コンポーネントの値(af: inputTextなど)は、状態Beanにバインドできます。ADFがリクエスト間でこれらのBeanをシリアライズ/シリアライズ解除するため、状態Beanはシリアライズ可能(java.io.Serializableを実装)である必要があります。
19.7.2 マネージドBeanおよびタスク・フローを開発するための前提条件
カスタム・タスク詳細タスクフローを開発する前に、次のソフトウェアをインストールしておく必要があります。
- Oracle Identity Governance 12c (12.2.1.3.0)
- JDeveloper 12c (SOAクイック・スタート・インストーラ12.2.1.3.0を実行してインストール)
ノート:
ヒューマン・タスクが同じ結果セットを持ち、同じペイロード構造を共有しているかぎり、同じタスク詳細タスクフローを複数のヒューマン・タスクに使用できます。したがって、承認、チャレンジ、情報の提供および手動履行タスクに対して異なるタスクフローを作成する必要があります。19.7.3 ViewControllerプロジェクトの設定
マネージドBeanは、ViewControllerプロジェクトで作成します。すべてのカスタム・タスク・フロー、ページおよびマネージドBeanが、ViewControllerプロジェクトに存在する必要があります。
ViewControllerプロジェクトを設定するには:
-
新しいJDeveloperアプリケーションを作成します。そのように行うには:
-
JDeveloperを起動します。
-
「ファイル」、「新規」を選択します。
-
「汎用アプリケーション」を選択し、「OK」をクリックします。
-
アプリケーション名およびディレクトリを指定し、「終了」をクリックします。アプリケーションは、サンプル・プロジェクトを使用して作成されます。
-
サンプル・プロジェクトを削除するには、プロジェクトを右クリックして「削除」を選択します。
-
-
ViewControllerプロジェクトを設定します。そのように行うには:
-
「ファイル」、「新規」を選択します。
-
「ADF ViewControllerプロジェクト」を見つけて選択し、「OK」をクリックします。
-
プロジェクト名(CustomUIなど)およびプロジェクト・ディレクトリを指定し、「次へ」をクリックします。
-
デフォルトのパッケージ名をoracle.iam.ui.customとして入力し、「終了」をクリックします。新しいプロジェクトが作成されます。
-
-
Oracle Identity Managerライブラリをプロジェクト・クラスパスに追加します。そのように行うには:
-
新しいプロジェクトを右クリックして、「プロジェクト・プロパティ」を選択します。
-
左側のナビゲーション・バーで、「ライブラリとクラスパス」を選択します。
-
「ライブラリの追加」をクリックします。ADFモデル・ランタイムを追加します。
-
「ライブラリの追加」、「ディレクトリ」の順にクリックし、パスをIDM_HOME/server/jdev.libとして指定し、「OK」をクリックします。
-
ライブラリのリストから、次を選択します。
-
OIMビュー共有ライブラリ
-
OIMモデル共有ライブラリ
-
OIMクライアント・ライブラリ
-
-
「OK」をクリックします。
-
-
新しく作成されたViewControllerプロジェクトのデプロイメント・プロファイルを定義します。そのように行うには:
-
プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。
-
左側のナビゲーション・バーで、「デプロイメント」を選択します。
-
既存のデプロイメント・プロファイルを削除します。
-
「新規」をクリックし、アーカイブ・タイプとして「ADFライブラリのJARファイル」を選択します。
ノート:
ADFライブラリのJARファイルとJARファイル・アーカイブ・タイプは異なります。必ず、「ADFライブラリのJARファイル」アーカイブ・タイプを選択してください。
-
adflibCustomUIなど、アーカイブ名を指定して確認し、「OK」をクリックします。
ViewControllerプロジェクトの設定は完了です。これで、カスタム・タスク・フロー、ページおよびマネージドBeanの追加を開始できます。
ノート:
このドキュメントの後続のセクションの例の一部では、FacesUtilsクラスが使用されます。このクラスの詳細は、FacesUtilsクラスを参照してください。
-
19.7.4 モデル・プロジェクトの設定
Oracle Identity Manager APIと直接対話するすべてのカスタムEO/VOおよびクラスが、モデル・プロジェクト内に存在する必要があります。
モデル・プロジェクトを設定するには:
-
「ファイル」、「新規」をクリックします。
-
「ADFモデル・プロジェクト」を見つけて選択し、「OK」をクリックします。
-
「プロジェクト名」(CustomModelなど)および「プロジェクト・ディレクトリ」を指定し、「次へ」をクリックします。
-
デフォルトのパッケージ名をoracle.iam.ui.customとして入力し、「終了」をクリックします。新しいプロジェクトが作成されます。
-
Oracle Identity Managerライブラリをプロジェクト・クラスパスに追加します。
-
プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。
-
左側のナビゲーション・バーで、「ライブラリとクラスパス」を選択します。
-
「ライブラリの追加」をクリックします。
-
「ディレクトリ」をクリックし、パスをIDM_HOME/server/jdev.libとして指定し、「OK」をクリックします。
-
ライブラリのリストから、次を選択します。
-
OIMモデル共有ライブラリ
-
OIMクライアント・ライブラリ
-
-
「OK」をクリックします。
-
-
新しく作成されたモデル・プロジェクトのデプロイメント・プロファイルを定義します。そのように行うには:
-
プロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。
-
左側のナビゲーション・バーで、「デプロイメント」を選択します。
-
既存のデプロイメント・プロファイルを削除します。
-
「新規」をクリックし、アーカイブ・タイプとして「ADFライブラリのJARファイル」を選択します。
ノート:
ADFライブラリのJARファイルとJARファイル・アーカイブ・タイプは異なります。必ず、「ADFライブラリのJARファイル」アーカイブ・タイプを選択してください。
-
adflibCustomModelなど、アーカイブ名を指定して確認し、「OK」をクリックします。
モデル・プロジェクトの設定は完了です。これで、Oracle Identity Manager APIと対話するためのカスタムEO、VOおよびクラスの追加を開始できます。
ノート:
このドキュメントの後続のセクションの例の一部では、FacesUtilsクラスが使用されます。このクラスの詳細は、FacesUtilsクラスを参照してください。
-
19.7.5 カスタム・マネージドBeanの追加
クラスを作成してタスクフローに登録することで、カスタム・マネージドBeanを追加します。
カスタム・マネージドBeanを追加するには:
-
ViewControllerプロジェクトを右クリックし、「新規」を選択します。
-
Javaクラス・カテゴリを選択します。
-
クラス名(CustomReqBean、CustomStateBeanなど)、およびパッケージ名を指定します。
-
クラスの作成後に、タスクフローに登録するには、次の手順を実行します。
-
独自のバインド・タスク・フローを開発する場合は、タスク・フロー定義ファイルに移動し、それを開きます。それ以外の場合は、ViewControllerプロジェクトのadfc-config.xmlファイルを見つけ、それを開きます。
-
「概要」タブをクリックし、次に「マネージドBean」を選択します。
-
新しいマネージドBeanエントリを追加します。そのように行うには:
i) マネージドBean名を指定します(customReqBean、customStateBeanなど)。この名前は、後でこのBeanのインスタンスを参照するために使用します。
ii) マネージドBeanのクラス名を指定します。
iii) スコープを指定します。リクエストBeanの場合は、backingBeanスコープを使用します。状態Beanの場合は、pageFlowスコープを使用します。
ノート:
-
pageFlowスコープBeanは、それが定義されるタスク・フローでのみ参照可能です。
-
JSFF/タスク・フロー定義またはその他の場所からマネージドBeanを参照する場合は、EL式を使用できます。たとえば、BeanをcustomReqBeanという名前で登録し、backingBeanスコープに入れた場合、次のEL式を使用してこのBeanを参照することができます。
#{backingBeanScope.customReqBean}
BeanをpageFlowスコープに入れた場合は、次のEL式を使用してこのBeanを参照できます。
#{pageFlowScope.customStateBean}
-
-
19.7.6 Oracle Identity Governanceへのカスタム・コードのデプロイ
カスタムJARファイルをdev-starter-pack.warファイルに追加し、WebLogic管理コンソールのカスタム・ライブラリを更新することで、カスタム・コードをデプロイします。
カスタム・モデルまたはViewControllerプロジェクトで生成されたADFライブラリJARファイルをデプロイするには:
- oracle.iam.ui.custom-dev-starter-pack.warを一時的な場所にコピーします。
- oracle.iam.ui.custom-dev-starter-pack.warを開きます。
- カスタムjarファイルをWEB-INF/libディレクトリに追加します。libディレクトリが存在しない場合は、作成します。
- oracle.iam.ui.custom-dev-starter-pack.warファイルを保存します。
- oracle.iam.ui.custom-dev-starter-pack.warファイルのコピーを$OIM_ORACLE_HOME/server/apps/ディレクトリ内の元の場所に戻します。
- Oracle Identity Manager管理対象サーバーを停止します。
- WebLogic管理コンソールで、oracle.iam.ui.customライブラリ・デプロイメントを更新し、変更をアクティブにします。
- Oracle Identity Manager管理対象サーバーを起動します。
19.7.7 マネージドBeanの使用
Oracle Identity ManagerインタフェースをカスタマイズするためのマネージドBeanを開発できます。
この項では、Oracle Identity ManagerインタフェースをカスタマイズするためのマネージドBeanの開発について、次の各ユースケースを示します。
ノート:
この項の例では、FacesUtilsクラスを使用します。このクラスの詳細は、FacesUtilsクラスを参照してください。
19.7.7.1 コンポーネントの条件付き表示
他のフィールドの値に基づいて、条件付きで特定のフィールドを表示または非表示にできます。たとえば、「ユーザー・タイプ」が「フルタイムの従業員」である場合にのみ、「ユーザーの作成」ページで「連絡先情報」パネルを表示するには、次のステップを実行します。
-
カスタム・リクエストBeanでは、「ユーザー・タイプ」フィールドと、「連絡先情報」パネルの任意の親コンポーネント(フォーム・ルート・パネルなど)のコンポーネント・バインディングのプロパティを定義します。それには、次のコードを使用します。
private UIComponent rootPanelPGL; private UIComponent userTypeSOC; public void setRootPanelPGL(UIComponent rootPanelPGL) { this.rootPanelPGL = rootPanelPGL; } public UIComponent getRootPanelPGL() { return rootPanelPGL; } public void setUserTypeSOC(UIComponent userTypeSOC) { this.userTypeSOC = userTypeSOC; } public UIComponent getUserTypeSOC() { return userTypeSOC; }
-
ユーザーが「ユーザー・タイプ」リストで新しい値を選択すると起動される既存のvalueChangeListenerを作成するか、拡張します。それには、次のコードを使用します。
ノート:
リスナーは、このフォームをリフレッシュします。
public void valueChangeListener(ValueChangeEvent valueChangeEvent) { if (valueChangeEvent.getSource().equals(userTypeSOC)) { // refresh form FacesUtils.partialRender(rootPanelPGL); } }
-
ブール値を戻すメソッドを作成します。ページのレンダリング時に「連絡先情報」パネルが表示されるかどうかが、このメソッドによって決定されます。この例では、「ユーザー・タイプ」が「フルタイムの従業員」の場合に、「連絡先情報」パネルが表示されます。
メソッドは次のとおりです。
private static final String USER_TYPE_ATTRIBUTE = "usr_emp_type__c"; public boolean isFullTimeEmployeeUserTypeSelected() { // return true if value of "usr_emp_type__c" binding attribute equals to "Full-Time" // "usr_emp_type__c" binding attribute is used to display value of User Type in the User Type drop-down return "Full-Time".equals(FacesUtils.getListBindingValue(USER_TYPE_ATTRIBUTE, String.class)); }
-
Oracle Identity Governanceへのカスタム・コードのデプロイで説明するように、マネージドBeanをパッケージ化し、デプロイします。
-
コードをJSFFとバインドするには:
-
定義したプロパティを指すように、「ユーザー・タイプ」リストと、ルート・パネル・コンポーネントのコンポーネント・バインディングを設定します。
-
「ユーザー・タイプ」リストに対して、valueChangeListenerを定義します。
ノート:
「ユーザー・タイプ」リストに対してautosubmitプロパティがtrueに設定されていることを確認します。
-
ステップ3で定義したisFullTimeEmployeeUserTypeSelected()メソッドを指すように、「連絡先情報」パネルのrenderedプロパティ(Web Composerでの「コンポーネントの表示」)に、EL式を設定します。
ノート:
renderedプロパティにEL式を設定している間に、次のエラーが表示された場合は無視します。
"javax.faces.validator.ValidatorException: java.lang.IllegalArgumentException: Control Binding 'usr_emp_type__c' not found"
-
19.7.7.2 フィールドの条件付き事前移入
他のフィールドの値に基づいて、特定のフィールドを事前移入します。たとえば、「名」および「姓」フィールドの値に基づいて、「ユーザーの作成」ページの「ユーザー・ログイン」および「電子メール」フィールドに値を事前移入するには、次のステップを実行します。
-
カスタム・リクエストBeanで、「名」および「姓」フィールドと、「ユーザー・ログイン」および「電子メール」フィールドの任意の親コンポーネント(フォーム・ルート・パネルなど)のコンポーネント・バインディングのプロパティを定義します。それには、次のコードを使用します。
private UIComponent firstNameIT; private UIComponent lastNameIT; private UIComponent rootPanelPGL; public void setFirstNameIT(UIComponent firstNameIT) { this.firstNameIT = firstNameIT; } public UIComponent getFirstNameIT() { return firstNameIT; } public void setLastNameIT(UIComponent lastNameIT) { this.lastNameIT = lastNameIT; } public UIComponent getLastNameIT() { return lastNameIT; } public void setRootPanelPGL(UIComponent rootPanelPGL) { this.rootPanelPGL = rootPanelPGL; } public UIComponent getRootPanelPGL() { return rootPanelPGL; }
-
ユーザーが「名」または「姓」フィールドを更新すると起動される既存のvalueChangeListenerを作成するか、拡張します。それには、次のコードを使用します。
ノート:
リスナーはそれに応じて「ユーザー・ログイン」および「電子メール」を更新し、フォームをリフレッシュします。
private static final String USER_LOGIN_ATTRIBUTE = "usr_login__c"; private static final String EMAIL_ATTRIBUTE = "usr_email__c"; private static final String LAST_NAME_ATTRIBUTE = "usr_last_name__c"; private static final String FIRST_NAME_ATTRIBUTE = "usr_first_name__c"; public void valueChangeListener(ValueChangeEvent valueChangeEvent) { if (valueChangeEvent.getSource().equals(firstNameIT)) { // get new value of first name from the event String firstName = (String)valueChangeEvent.getNewValue(); // get existing value of last name through binding String lastName = FacesUtils.getAttributeBindingValue(LAST_NAME_ATTRIBUTE, String.class); setUserLoginAndEmail(firstName, lastName); } else if (valueChangeEvent.getSource().equals(lastNameIT)) { // get existing value of first name through binding String firstName = FacesUtils.getAttributeBindingValue(FIRST_NAME_ATTRIBUTE, String.class); // get new value of last name from the event String lastName = (String)valueChangeEvent.getNewValue(); setUserLoginAndEmail(firstName, lastName); } // refresh form FacesUtils.partialRender(rootPanelPGL); } private void setUserLoginAndEmail(String firstName, String lastName) { StringBuilder sb = new StringBuilder(); if (firstName != null) { sb.append(firstName); } if (firstName != null && !firstName.isEmpty() && lastName != null && !lastName.isEmpty()) { sb.append("."); } if (lastName != null) { sb.append(lastName); } String userLogin = sb.toString(); // set new value for User Login and E-mail through binding FacesUtils.setAttributeBindingValue(USER_LOGIN_ATTRIBUTE, userLogin); FacesUtils.setAttributeBindingValue(EMAIL_ATTRIBUTE, userLogin + "@example.com"); }
-
Oracle Identity Governanceへのカスタム・コードのデプロイで説明するように、マネージドBeanをパッケージ化し、デプロイします。
-
JSFFにコードを追加します。そのように行うには:
-
定義したプロパティを指すように、「名」、「姓」およびルート・パネルのコンポーネント・バインディングを設定します。
-
「名」および「姓」入力テキストのvalueChangeListenerを定義して、両方の入力テキストでautosubmitプロパティがtrueに設定されるようにします。
-
19.7.7.3 条件付き必須フィールドの設定
別のフィールドの値に基づいて、フィールドを条件付きで必須とすることができます。たとえば、「ユーザー・タイプ」が「インターン」の場合にのみ、「ユーザーの作成」ページの「マネージャ」フィールドを必須にするには、次のステップを実行します。
ノート:
Web Composerの必須プロパティを設定することで、フィールド検証を実行することはできません。この項で説明するように、マネージドBeanを開発して、フィールド検証を実行する必要があります。
-
カスタム・リクエストBeanでは、「ユーザー・タイプ」フィールドと、「マネージャ」フィールドの任意の親コンポーネント(フォーム・ルート・パネルなど)のコンポーネント・バインディングのプロパティを定義します。それには、次のコードを使用します。
private UIComponent rootPanelPGL; private UIComponent userTypeSOC; public void setRootPanelPGL(UIComponent rootPanelPGL) { this.rootPanelPGL = rootPanelPGL; } public UIComponent getRootPanelPGL() { return rootPanelPGL; } public void setUserTypeSOC(UIComponent userTypeSOC) { this.userTypeSOC = userTypeSOC; } public UIComponent getUserTypeSOC() { return userTypeSOC; }
-
ユーザーが「ユーザー・タイプ」リストで新しい値を選択すると起動される既存のvalueChangeListenerを作成するか、拡張します。それには、次のコードを使用します。
ノート:
リスナーは、このフォームをリフレッシュします。
public void valueChangeListener(ValueChangeEvent valueChangeEvent) { if (valueChangeEvent.getSource().equals(userTypeSOC)) { // refresh form FacesUtils.partialRender(rootPanelPGL); } }
-
ブール値を戻すメソッドを作成します。このメソッドは、フィールドが必須かどうかを決定します。この例では、「ユーザー・タイプ」が「インターン」の場合に、「マネージャ」フィールドが必須とマークされます。
メソッドは次のとおりです。
public boolean isInternUserTypeSelected() { // return true if value of "usr_emp_type__c" binding attribute equals to "Intern" // "usr_emp_type__c" binding attribute is used to display value of User Type in the User Type drop-down return "Intern".equals(FacesUtils.getValueFromELExpression("#{bindings.usr_emp_type__c.attributeValue}", String.class)); }
-
Oracle Identity Governanceへのカスタム・コードのデプロイで説明するように、マネージドBeanをパッケージ化し、デプロイします。
-
JSFFにコードを追加します。そのように行うには:
-
定義したプロパティを指すように、「ユーザー・タイプ」リストと、ルート・パネル・コンポーネントのコンポーネント・バインディングを設定します。
-
「ユーザー・タイプ」リストに対して、valueChangeListenerを定義します。「ユーザー・タイプ」リストに対してautosubmitプロパティがtrueに設定されていることを確認します。
-
ステップ3で定義したisInternUserTypeSelected()メソッドを指すように、「マネージャ」フィールドの必要なプロパティにEL式を設定します。
-
ステップ3で定義したisInternUserTypeSelected()メソッドを指すように、panelLabelAndMessageの「マネージャ」フィールドの「表示」の必要なプロパティにEL式を設定します。
-
19.7.7.4 カスタム・フィールド検証の実装
カスタム・フィールド検証は、マネージドBeanを使用して実装できます。
この項では、カスタム・マネージドBeanを使用してカスタム・フィールド検証を実装する方法について説明します。次の項目が含まれます。
19.7.7.4.1 カスタム・フィールド検証およびマネージドBean
マネージドBeanを使用してカスタム検証を導入できます。たとえば、「ユーザーの作成」ページの「アカウントの有効日」パネルの「開始日」および「終了日」フィールドに対して、次の検証を実装できます。
-
「開始日」は、「終了日」の後にはできません。
-
「契約者」の場合は、「開始日」と「終了日」の間隔が180日を超えることはできません。
19.7.7.4.2 マネージドBeanを使用したカスタム・フィールド検証の実装
マネージドBeanを使用してカスタム検証を実装するには:
-
カスタム・リクエストBeanでは、次に示すように、「開始日」および「終了日」フィールドのコンポーネント・バインディングのプロパティを定義します。
private UIComponent startDateID; private UIComponent endDateID; public void setStartDateID(UIComponent startDateID) { this.startDateID = startDateID; } public UIComponent getStartDateID() { return startDateID; } public void setEndDateID(UIComponent endDateID) { this.endDateID = endDateID; } public UIComponent getEndDateID() { return endDateID; }
-
ユーザーが「開始日」または「終了日」フィールドに新しい値を選択した場合に呼び出されるマネージドBeanに、検証用メソッドを追加します。このバリデータは、検証が失敗した場合にエラー・メッセージを生成し、更新されるフィールドにそれを付加します。それには、次のコードを使用します。
private static final String START_DATE_END_DATE_VALIDATION_MSG = "Start Date - End Date interval cannot exceed 180 days for Contractors."; private static final String START_DATE_AFTER_END_DATE_VALIDATION_MSG = "Start Date cannot be after End Date."; private static final String USER_TYPE_ATTRIBUTE = "usr_emp_type__c"; private static final String START_DATE_ATTRIBUTE = "usr_start_date__c"; private static final String END_DATE_ATTRIBUTE = "usr_end_date__c"; public void validator(FacesContext facesContext, UIComponent uiComponent, Object object) { if (uiComponent.equals(startDateID)) { // get value of End Date through binding oracle.jbo.domain.Date jboEndDate = FacesUtils.getAttributeBindingValue(END_DATE_ATTRIBUTE, oracle.jbo.domain.Date.class); // only validate if both Start Date and End Date are set if (jboEndDate != null) { // value of Start Date is passed to validator Date startDate = ((oracle.jbo.domain.Date)object).getValue(); Date endDate = jboEndDate.getValue(); validateStartDateEndDate(facesContext, uiComponent, startDate, endDate); } } else if (uiComponent.equals(endDateID)) { // get value of Start Date through binding oracle.jbo.domain.Date jboStartDate = FacesUtils.getAttributeBindingValue(START_DATE_ATTRIBUTE, oracle.jbo.domain.Date.class); // only validate if both Start Date and End Date are set if (jboStartDate != null) { Date startDate = jboStartDate.getValue(); // value of End Date is passed to validator Date endDate = ((oracle.jbo.domain.Date)object).getValue(); validateStartDateEndDate(facesContext, uiComponent, startDate, endDate); } } } private void validateStartDateEndDate(FacesContext facesContext, UIComponent uiComponent, Date startDate, Date endDate) { Date startDatePlus180Days = new Date(startDate.getTime() + 180L * 24 * 60 * 60 * 1000); if (startDate.after(endDate)) { // queue error message for the component which is being validated (either Start Date or End Date) facesContext.addMessage(uiComponent.getClientId(facesContext), new FacesMessage(FacesMessage.SEVERITY_ERROR, START_DATE_AFTER_END_DATE_VALIDATION_MSG, null)); } else if (isContractorUserTypeSelected() && startDatePlus180Days.before(endDate)) { // queue error message for the component which is being validated (either Start Date or End Date) facesContext.addMessage(uiComponent.getClientId(facesContext), new FacesMessage(FacesMessage.SEVERITY_ERROR, START_DATE_END_DATE_VALIDATION_MSG, null)); } else { // re-render -- in case there was an error message in queue for any of the two components it will be released FacesUtils.partialRender(startDateID); FacesUtils.partialRender(endDateID); } } public boolean isContractorUserTypeSelected() { // return true if value of "usr_emp_type__c" binding attribute equals to "Contractor" // "usr_emp_type__c" binding attribute is used to display value of User Type in the User Type drop-down return "Contractor".equals(FacesUtils.getListBindingValue(USER_TYPE_ATTRIBUTE, String.class)); }
関連項目:
FacesUtilsクラスの詳細は、FacesUtilsクラスを参照してください
-
Oracle Identity Governanceへのカスタム・コードのデプロイで説明するように、マネージドBeanをパッケージ化し、デプロイします。
-
JSFFにコードをバインドします。そのように行うには:
-
定義したプロパティを指すように、「開始日」および「終了日」フィールドのコンポーネント・バインディングを設定します。
-
ステップ2で定義したバリデータ・メソッドを指すように、「開始日」および「終了日」フィールドのバリデータ・プロパティに、EL式を定義します。たとえば:
<mds:attribute name="binding" value="#{backingBeanScope.validatorBean.startDateID}"/> <mds:attribute name="validator" value="#{backingBeanScope.validatorBean.validator}"/>
ノート:
Web Composerを使用して、バリデータ・プロパティを直接追加することはできません。これは、バリデータ・プロパティの設定の説明に従って、JSFFのMDSファイルに手動で設定する必要があります。
-
19.7.7.5 カスタム・カスケードLOVの実装
カスケードLOVとは、1つのコンポーネントの値リストが別のコンポーネントで現在選択されている値に依存するLOVコンポーネントです。たとえば、「ユーザーの作成」ページ上の「ユーザー・タイプ」リストの選択された値に基づいて、「ジョブ・コード」リストまたは別のLOVコンポーネントを表示する場合があります(その値リストは「ユーザー・タイプ」リストで現在選択されている値に依存します)。
カスタム・カスケードLOVを実装する高度なガイドラインを次に示します。
-
「ユーザー・タイプ」フィールドと「ジョブ・コード」の任意の親コンポーネント(フォーム・ルート・パネルなど)のコンポーネント・バインディングを定義します。
-
次の要件を確実に満たして、「ジョブ・コード」LOVコンポーネントのモデルを実装します。
-
このモデルは、「ユーザー・タイプ」フィールドの現在の値を考慮する必要があります。
-
af: selectOneChoiceに対して、List<javax.faces.model.SelectItem>を戻すメソッドを実装する必要があります。
-
af: inputListOfValuesに対して、oracle.adf.view.rich.model.ListOfValuesModeのインスタンスを戻すメソッドを実装する必要があります。
関連項目:
LOVコンポーネントを使用して、ユーザーが値を選択できるオブジェクトのモデルドリブン・リストを表示する方法については、Oracle Application Development Framework Webユーザー・インタフェース開発者ガイドの値リスト・コンポーネントの使用を参照してください
-
-
「ユーザー・タイプ」フィールドに対して、valueChangeListenerを実装します。「ユーザー・タイプ」フィールドのautosubmitプロパティをtrueに設定します。
valueChangeListenerは、「ジョブ・コード」LOVコンポーネントのモデルを、「ユーザー・タイプ」フィールドの現在の値で更新する必要があります。また、「ジョブ・コード」LOVコンポーネントが現在の値リストで更新されるように、valueChangeListenerはフォームを再レンダリングする必要があります。
19.7.7.6 RequestFormContextを使用したフォームのカスタマイズ
RequestFormContext Beanを使用してフォームをカスタマイズできます。
この項では、RequestFormContext Beanと、これを使用してフォームをカスタマイズする方法について説明します。次の項目が含まれます。
19.7.7.6.1 RequestFormContext Bean
RequestFormContextは、エンティティ・フォーム詳細タスク・フローのpageFlowScopeで使用可能なBeanです。エンティティ・フォームには、ユーザー・フォーム、アプリケーション・インスタンス・フォーム、ロール・フォームおよび権限フォームが含まれます。このインスタンスは、様々なコンテキスト情報を提供します。このコンテキスト情報を使用すると、特定のビジネス要件に基づいて様々なフォームをカスタマイズできます。
次に示すように、Javaコードを使用してクラスのインスタンスを取得できます。
RequestFormContext.getCurrentInstance();
次に示すように、ELを使用してクラスのインスタンスを取得することもできます。
#{pageFlowScope.requestFormContext}
RequestFormContextは、次のコンテキスト情報を提供します。
-
operation: エンティティで実行中の操作。可能な値はCREATEおよびMODIFYです。
-
actionType: エンティティ・フォームが表示されている場合に、ユーザーが実行中のアクション。可能な値は、APPROVAL、FULFILL、REQUEST、VIEW、SUMMARYです。
-
bulk: バルク操作であるかどうか。
-
beneficiaryIds: 受益者またはターゲット・ユーザーIDのリスト。たとえば、ユーザーJohn Doe用のアプリケーション・インスタンスをリクエストしている場合、リストにはJohn DoeのユーザーIDが含まれます。
-
cartItemIds: カート・アイテムIDのリスト。たとえば、ユーザーのアプリケーション・インスタンスをリクエストしている場合、リストにはリクエスト中のアプリケーション・インスタンスIDが含まれます。
-
requestEntityType: リクエスト中のエンティティ・タイプ(ROLE、ENTITLEMENT、APP_INSTANCE、USERのいずれか)。
-
requestEntitySubType: リクエスト中のエンティティのサブタイプ。たとえば、アプリケーション・インスタンスをリクエスト中の場合、requestEntitySubTypeはアプリケーション・インスタンス・キーです。
-
instanceKey: 変更中のインスタンスのキー。
19.7.7.6.2 RequestFormContext Beanの使用
この項では、RequestFormContext Beanの次の使用例について説明します。
「アプリケーション・インスタンスの作成」フォームに新しい「事前移入」ボタンを追加し、ターゲット・ユーザーが1人だけの場合にのみ、このボタンを表示可能にします。このボタンをクリックすると、アプリケーション・インスタンス・フィールドの一部(「ユーザー・ログイン」、「名」、「姓」など)が、現在のターゲット・ユーザーに基づいて事前移入されます。これを達成するには:
-
カスタム・リクエストBeanでは、次に示すように、「事前移入」ボタンおよびフォーム・ルート・パネルのコンポーネント・バインディングのプロパティを定義します。
private UIComponent rootPanel; private UIComponent prepopulateButton; public void setRootPanel(UIComponent rootPanel) { this.rootPanel = rootPanel; } public UIComponent getRootPanel() { return rootPanel; } public void setPrepopulateButton(UIComponent prepopulateButton) { this.prepopulateButton = prepopulateButton; } public UIComponent getPrepopulateButton() { return prepopulateButton; }
-
「事前移入」ボタンがクリックされると起動するactionListenerを実装します。Oracle Identity Manager APIを使用することで、actionListenerはターゲット・ユーザーIDを使用して、ユーザー・データ(「名」、「姓」など)をフェッチします。フェッチしたデータを使用して、属性バインディングを介して特定のアプリケーション・インスタンス属性を設定し、最後にフォームをリフレッシュして新しい値を表示します。actionListenerを次に示します。
private static final String ACCOUNT_LOGIN_ATTRIBUTE = "UD_EBS2722_LOGIN__c"; private static final String ACCOUNT_ID_ATTRIBUTE = "UD_EBS2722_ACCOUNTID__c"; private static final String FIRST_NAME_ATTRIBUTE = "firstName__c"; private static final String LAST_NAME_ATTRIBUTE = "lastName__c"; public void actionListener(ActionEvent e) { if (e.getSource().equals(prepopulateButton)) { RequestFormContext requestFormContext = RequestFormContext.getCurrentInstance(); List<String> beneficiaryIds = requestFormContext.getBeneficiaryIds(); if (beneficiaryIds.size() == 1) { // prepopulate fields based on selected beneficiary User user = getUser(beneficiaryIds.get(0)); FacesUtils.setAttributeBindingValue(ACCOUNT_LOGIN_ATTRIBUTE, user.getLogin()); FacesUtils.setAttributeBindingValue(ACCOUNT_ID_ATTRIBUTE, user.getId()); FacesUtils.setAttributeBindingValue(FIRST_NAME_ATTRIBUTE, user.getFirstName()); FacesUtils.setAttributeBindingValue(LAST_NAME_ATTRIBUTE, user.getLastName()); } } FacesUtils.partialRender(rootPanel); } private User getUser(String userId) { UserManager userManager = OIMClientFactory.getUserManager(); try { return userManager.getDetails(userId, null, false); } catch (NoSuchUserException e) { throw new RuntimeException(e); } catch (UserLookupException e) { throw new RuntimeException(e); } }
-
ブール値を戻すメソッドを作成します。フォームのレンダリング時に「事前移入」ボタンが表示されるかどうかが、このメソッドによって決定されます。この例では、ターゲット・ユーザーの数が1と等しい場合に、「事前移入」ボタンが表示されます。メソッドは次のとおりです。
public boolean isPrepopulateButtonRendered() { RequestFormContext requestFormContext = RequestFormContext.getCurrentInstance(); return requestFormContext.getActionType() == RequestFormContext.ActionType.REQUEST && requestFormContext.getBeneficiaryIds().size() == 1; }
-
マネージドBeanをパッケージ化し、デプロイします。マネージドBeanのデプロイの詳細は、Oracle Identity Governanceへのカスタム・コードのデプロイを参照してください。
-
コードをJSFFとバインドします。そのように行うには:
-
「事前移入」ボタンを「アプリケーション・インスタンスの作成」フォームに追加します。
-
「事前移入」ボタンとルート・パネルのバインディングを設定します。
-
ステップ2で実装したactionListenerメソッドを指すように、「事前移入」ボタンのactionListenerプロパティを設定します。
ノート:
Web Composerを使用してactionListenerプロパティを設定することはできません。次のように手動で設定する必要があります。
-
サンドボックスをエクスポートします。
-
JSFFを編集して、actionListenerの属性値を設定します。たとえば:
<mds:attribute name="actionListener" value="#{backingBeanScope.accountFormReqBean.submitButtonActionListener}"/>)
-
更新したサンドボックスをインポートします。
この手順は、このドキュメント内のすべての例におけるactionListenerプロパティの設定に適用できます。
-
-
ステップ3で実装したisPrepopulateButtonRendered()メソッドを指すように、renderedプロパティを設定します。
-
19.7.7.7 リクエスト・カタログの「送信」ボタンのオーバーライド
リクエスト・カタログの「送信」ボタンをオーバーライドし、要件に基づいて追加のロジックを実行できます。たとえば、リクエストの送信時に、ターゲット・ユーザーまたは受益者の数を追加でチェックし、受益者の数が5人以下の場合にリクエストの送信を許可するには、次のステップを実行します。
19.7.7.8 タスクフローの起動
カスタムUIタスクフローを作成して起動できます。
この項では、タスクフローを起動する方法と、独自のUIまたはタスクフローを追加する方法について説明します。次の項目が含まれます。
19.7.7.8.1 Self Serviceでのタスクフローの起動
「セルフ・サービス」インタフェースでタスク・フローを起動できます。たとえば、タブ内で動作するバインド・タスク・フローを持つタブを起動する場合は、次のステップを実行します。
19.7.7.8.2 カスタム・タスクフローの追加
Oracle Identity Managerでは、goLink、commandLink、commandButtonなどの独自のUIまたはタスクフローを追加したり、タスクフローを起動したりできます。カスタムUIまたはタスクフローを追加するには、次のステップを実行します。
- マネージドBeanを作成し、oracle.iam.ui.custom-dev-starter-pack.warのadfc-config.xmlを使用して登録します。
- Web Composerを使用して、リンクまたはボタンを表示するページに、新しいcommandLinkまたはcommandButtonを追加します。
- actionListenerメソッドを指すように、追加したリンクまたはボタン・コンポーネントのactionListenerプロパティを設定します。
- マネージドBeanを使用してコンテキスト・イベントを発生させます。これは、Oracle Identity Managerによって処理されます。タスクフローが起動されます。
19.7.8 リクエスト属性を移入するためのマネージドBeansの使用
リクエスト属性は、マネージドBeanまたは事前移入プラグインを使用して移入できます。
この項では、リクエスト属性を移入するための次のアプローチについて説明します。
19.7.8.1 マネージドBeansを使用したリクエスト属性の移入
マネージドBeanを使用してリクエスト属性を移入するには、マネージドBeanを作成してプレースホルダ・ライブラリにデプロイし、ページにボタンを追加するようにUIをカスタマイズします。
この項の内容は次のとおりです。
19.7.8.1.1 マネージドBeanを使用してリクエスト属性を移入するためのアプローチ
このアプローチにより、ユーザーがカスタム・ボタンをクリックすると呼び出されるマネージドBeanが作成されます。マネージドBeanは、Oracle Identity Managerのカスタマイズ・プレースホルダ・ライブラリ(oracle.iam.ui.custom-dev-starter-pack.war)にデプロイされる必要があります。「事前移入」ボタンと呼ばれるボタンは、UIカスタマイズの一部で、Web Composerを使用して手動でページに追加する必要があります。
マネージドBeanコードは、リクエスト・フォームに移入される情報のフェッチを行います。Oracle Identity Manager APIを使用して、リクエストやユーザー管理レイヤーから受益者情報を入手します。また、JSF/ADF APIを使用して、リクエスト・フォームのUIコンポーネントを更新します。
19.7.8.1.3 PrePopulateMBeanクラスの宣言
JDevプロジェクトで、PrePopulateMBeanクラスをマネージドBeanとして宣言します。これによりMBeanはUIで使用できるようになり、その結果、EL式を使用した呼出しが可能になります。この構成には、View ControllerプロジェクトのマネージドBeansセクションで次の値を指定します。
-
名前: prepopMBean
-
クラス(class): com.oracle.demo.iam.prepop.view.PrePopulateMBean
-
スコープ: backingBean
19.7.8.1.4 ビュー・コントローラ・プロジェクトおよびカスタム・コードのデプロイ
ビュー・コントローラ・プロジェクトおよびカスタム・コードをデプロイするには:
- View ControllerプロジェクトをADFライブラリJARファイルとしてデプロイします。このタイプのデプロイメントは、デプロイメント・プロファイル・オプションによりJDeveloperで作成されます。デプロイメントにより、JARファイルが生成されます。このファイルを、Oracle Identity Managerプレースホルダ・ライブラリであるoracle.iam.ui.custom-dev-starter-pack.warにコピーします。このファイルは、他のOracle Identity Managerアプリケーション・パッケージ(EARファイルやWARファイルなど)とともに、$OIM_ORACLE_HOME/server/apps/ディレクトリにあります。このファイルを変更する前に、バックアップを作成します。
- カスタム・コードをデプロイします。詳細は、Oracle Identity Governanceへのカスタム・コードのデプロイを参照してください。
19.7.8.2 事前移入プラグインを使用したリクエスト属性の移入
事前移入プラグインは、UIとAPIリクエスト作成に対して同じロジックが実行される場合や、UI相互作用が不要な場合にも使用できます。このアプローチでは、リクエストに事前移入する必要がある各属性に対してプラグインがあります。リソースや属性が異なっても同一のプラグインを使用できます。
プラグイン・コードは、oracle.iam.request.plugins.PrePopulationAdapterインタフェースを実装しています。次にコード例を示します。
package com.oracle.demo.iam.prepop.plugin; import java.io.Serializable; import java.util.HashSet; import java.util.List; import oracle.iam.identity.usermgmt.api.UserManager; import oracle.iam.identity.usermgmt.api.UserManagerConstants.AttributeName; import oracle.iam.identity.usermgmt.vo.User; import oracle.iam.platform.Platform; import oracle.iam.request.vo.Beneficiary; import oracle.iam.request.vo.RequestData; public class UserLoginPrePop implements oracle.iam.request.plugins.PrePopulationAdapter { public UserLoginPrePop() { super(); } public Serializable prepopulate(RequestData requestData) { String prePopUserId = null; List<Beneficiary> benList = requestData.getBeneficiaries(); if(benList.size()==1){ UserManager usersvc = Platform.getService(UserManager.class); for(Beneficiary benf: benList){ HashSet<String> searchAttrs = new java.util.HashSet<String>(); searchAttrs.add(AttributeName.USER_LOGIN.getId()); try { User userBenef = usersvc.getDetails(benf.getBeneficiaryKey(),searchAttrs, false); if (userBenef!= null) { prePopUserId = userBenef.getLogin(); } } catch (Exception e) { e.printStackTrace(); } } } return prePopUserId; } }
事前移入プラグインは、Oracle Identity Managerのその他のプラグインと似ています。プラグイン・クラスは、コンパイルされ、JARファイルにデプロイされます。JARファイルは、libディレクトリのZIPファイルに追加される必要があります。ZIPファイルは、ルート・パスにプラグインを宣言するXMLファイルが含まれている必要があります。この例で使用されるXMLは次のようになります。
<?xml version="1.0" encoding="UTF-8" ?> <oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <plugins pluginpoint="oracle.iam.request.plugins.PrePopulationAdapter"> <plugin pluginclass= "com.oracle.demo.iam.prepop.plugin.UserLoginPrePop" version="1.0" name="UserLoginPrePop"> <metadata name="PrePopulationAdapater"> <value>OracleDBUMForm::Username|OIDUserForm::User ID</value> </metadata> </plugin> </plugins> </oimplugins>
XMLコードでは、次のようになります。
-
XMLにxmlnsタグ属性があることが必要です。タグ属性がない場合、Oracle Identity Managerによるプラグインの呼出しは行われません。
-
pluginpoint要素の値は、oracle.iam.request.plugins.PrePopulationAdapterであることが必要です。
-
メタデータ・タグには、値の子ノードが含まれます。この値の子ノードには、FormName::AttributeNameのペアを含める必要があります。それぞれのペアは、事前移入プラグインによって移入されるフォーム属性を示しています。この例では、OracleDBUMFormフォームの「ユーザー名」およびOIDUserFormフォームの「ユーザーID」がそのような属性に該当します。フォーム名は、Oracle Identity Managerへのコネクタのインポート時に作成されるプロセス・フォームではなく、ApplicationInstancesやそのフォームが作成される場合に構成されます。
事前移入プラグインは、$OIM_HOME/server/plugins/ディレクトリにデプロイできます。また、プラグイン登録スクリプトを使用して登録できます。本番環境では、プラグインのZipファイルがデータベースにアップロードされるように、常に、コマンド行を使用したプラグインをデプロイすることをお薦めします。
19.7.9 パブリック・タスクフローの使用
Oracle Identity Managerでは、Oracle Identity Self Serviceのカスタマイズするページで使用して、他のタスクフロー呼び出すためのデフォルトのタスクフローが用意されています。
この項では、Oracle Identity Managerのパブリック・タスクフローについて説明します。次の項目が含まれます。
19.7.9.1 パブリック・タスクフローについて
Oracle Identity Managerでは、Oracle Identity Self Serviceのカスタマイズするページで使用して、他のタスクフロー呼び出すためのデフォルトのタスクフローが用意されています。たとえば、ユーザーの詳細ページにおいて、マネージャのログイン名をクリックすると、マネージャのユーザーの詳細が表示されるようにカスタマイズできます。
デフォルトのまたは事前定義済のタスクフローは、パブリック・タスクフローと呼ばれます。パブリック・タスクフローの起動時に、パラメータに適切な値を指定する必要があります。たとえば、特定のリクエストのリクエスト詳細ページを起動するには、そのリクエストのリクエストIDを指定する必要があります。
19.7.9.2 パブリック・タスクフローおよび入力パラメータ
表19-6に、Oracle Identity Managerで用意されているパブリック・タスクフローを、その呼出しに必要な入力パラメータとともに示します。
表19-6 パブリック・タスクフロー
タスクフロー名 | タスクフローのパス | 説明 | パラメータ | 必須 |
---|---|---|---|---|
リクエストの詳細 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/request-details-tf.xml#request-details-tf |
承認のために送信されるリクエストの詳細を表示するために起動されます。 |
requestID: 詳細を表示するリクエストのID。 |
はい |
ユーザーの詳細 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/user-details-tf.xml#user-details-tf |
ユーザーの詳細を表示するために起動されます。 |
userLogin: 詳細を表示するユーザーの「ユーザー・ログイン」属性値。 |
はい |
ロールの詳細 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/role-details-tf.xml#role-details-tf |
ロールの詳細を表示するために起動されます。 |
roleName: 詳細を表示するロールの名前。 |
はい |
ロールのリクエスト |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/request-role-tf.xml#request-role-tf |
受益者へのロールの割当てをリクエストするために起動されます。 |
roleNames: 割り当てられるロールの名前。名前はカンマで区切る必要があります。 |
はい |
ロールのリクエスト |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/request-role-tf.xml#request-role-tf |
受益者へのロールの割当てをリクエストするために起動されます。 |
userLogins: ロールが割り当てられるユーザーまたは受益者の「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 値を指定しない場合、現在ログインしているユーザーにリクエスト・アクションが適用されます。 |
いいえ |
ロールの失効 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/revoke-role-tf.xml#revoke-role-tf |
受益者に割り当てられたロールの取消しをリクエストするために起動されます。 |
roleNames: 取り消されるロールの名前。 |
はい |
ロールの失効 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/revoke-role-tf.xml#revoke-role-tf |
受益者に割り当てられたロールの取消しをリクエストするために起動されます。 |
userLogins: ロールが取り消されるユーザーまたは受益者の「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 値を指定しない場合、現在ログインしているユーザーに取消しアクションが適用されます。 |
いいえ |
アカウントのリクエスト |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/request-account-tf.xml#request-account-tf |
受益者用のアカウントの作成をリクエストするために起動されます。 |
appInstNames: アカウントが作成されるアプリケーション・インスタンスの名前。値はカンマで区切る必要があります。 |
はい |
アカウントのリクエスト |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/request-account-tf.xml#request-account-tf |
受益者用のアカウントの作成をリクエストするために起動されます。 |
userLogins: アカウントが割り当てられるユーザーまたは受益者の「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 値を指定しない場合、現在ログインしているユーザーにリクエスト・アクションが適用されます。 |
いいえ |
アカウントの変更 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/modify-account-tf.xml#modify-account-tf |
ユーザーまたは受益者用に作成されたアカウントの詳細を変更するために起動されます。 |
accountNames: 詳細を変更するアカウントの名前。値はカンマで区切る必要があります。 |
はい |
アカウントの変更 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/modify-account-tf.xml#modify-account-tf |
ユーザーまたは受益者用に作成されたアカウントの詳細を変更するために起動されます。 |
userLogins: アカウントの詳細が変更されるユーザーまたは受益者の「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 値を指定しない場合、現在ログインしているユーザーに取消しアクションが適用されます。 |
いいえ |
アカウントの有効化 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/enable-account-tf.xml#enable-account-tf |
ユーザーまたは受益者に割り当てられたアカウントを有効化するために起動されます。 |
accountNames: 有効化されるアカウントの名前。値はカンマで区切る必要があります。 |
はい |
アカウントの有効化 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/enable-account-tf.xml#enable-account-tf |
ユーザーまたは受益者に割り当てられたアカウントを有効化するために起動されます。 |
userLogins: アカウントが有効化されるユーザーまたは受益者の「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 値を指定しない場合、現在ログインしているユーザーにリクエスト・アクションが適用されます。 |
いいえ |
アカウントの無効化 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/disable-account-tf.xml#disable-account-tf |
ユーザーまたは受益者に割り当てられたアカウントを無効化するために起動されます。 |
accountNames: 無効化されるアカウントの名前。値はカンマで区切る必要があります。 |
はい |
アカウントの無効化 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/disable-account-tf.xml#disable-account-tf |
ユーザーまたは受益者に割り当てられたアカウントを無効化するために起動されます。 |
userLogins: アカウントが無効化されるユーザーまたは受益者の「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 値を指定しない場合、現在ログインしているユーザーにリクエスト・アクションが適用されます。 |
いいえ |
アカウントの削除 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/delete-account-tf.xml#delete-account-tf |
ユーザーまたは受益者に割り当てられたアカウントを削除するために起動されます。 |
accountNames: 削除されるアカウントの名前。値はカンマで区切る必要があります。 |
はい |
アカウントの削除 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/delete-account-tf.xml#delete-account-tf |
ユーザーまたは受益者に割り当てられたアカウントを削除するために起動されます。 |
userLogins: アカウントが削除されるユーザーまたは受益者の「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 値を指定しない場合、現在ログインしているユーザーにリクエスト・アクションが適用されます。 |
いいえ |
権限のリクエスト |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/request-entitlement-tf.xml#request-entitlement-tf |
受益者への権限の割当てをリクエストするために起動されます。 |
entlmntNames: 割り当てられる権限の名前。値はカンマで区切る必要があります。 |
はい |
権限のリクエスト |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/request-entitlement-tf.xml#request-entitlement-tf |
受益者への権限の割当てをリクエストするために起動されます。 |
userLogins: 権限が割り当てられるユーザーまたは受益者の「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 値を指定しない場合、現在ログインしているユーザーにリクエスト・アクションが適用されます。 |
いいえ |
権限の失効 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/revoke-entitlement-tf.xml#revoke-entitlement-tf |
受益者に割り当てられた権限の取消しをリクエストするために起動されます。 |
entlmntNames: 取り消される権限の名前。値はカンマで区切る必要があります。 |
はい |
権限の失効 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/revoke-entitlement-tf.xml#revoke-entitlement-tf |
受益者に割り当てられた権限の取消しをリクエストするために起動されます。 |
userLogins: 権限が取り消されるユーザーまたは受益者の「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 値を指定しない場合、現在ログインしているユーザーにリクエスト・アクションが適用されます。 |
いいえ |
ユーザーの作成 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/create-user-tf.xml#create-user-tf |
ユーザー・エンティティを作成するために起動されます。 |
パラメータは不要です。 |
いいえ |
ユーザーの変更 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/modify-user-tf.xml#modify-user-tf |
ユーザーの詳細を変更するために起動されます。 |
userLogins: 詳細が変更されるユーザーの「ユーザー・ログイン」属性値。 複数のuserLogin属性値を指定した場合は、「バルク変更」ページが表示されます。値はカンマで区切る必要があります。 |
はい |
ユーザーの有効化 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/enable-user-tf.xml#enable-user-tf |
無効化されたユーザーを有効化するために起動されます。 |
userLogins: 有効化されるユーザーの「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 |
はい |
ユーザーの無効化 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/disable-user-tf.xml#disable-user-tf |
有効化されたユーザーを無効化するために起動されます。 |
userLogins: 無効化されるユーザーの「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 |
はい |
ユーザーの削除 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/modify-user-tf.xml#modify-user-tf |
ユーザーを削除するために起動されます。 |
userLogins: 削除されるユーザーの「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。 |
はい |
カタログ検索 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/catalog-search-tf.xml#catalog-search-tf |
カタログ検索基準を指定するため、および検索結果ページまたはカート詳細ページを、カタログ検索ページを使用せずに直接表示するために起動されます。 |
searchCrtieria: 次の形式での様々な文字列属性。 {criteriaName: "string", allowSearch: "true/false", profileName: "string", directCheckout: "true/false", showEntityTypeSelector: "true/false", hiddenTag: "string", allowedEntityTypes: "string", tags: "string", entityType: "string", auditObjective: "string", riskLevel: "string", ANY_UDF: "string"} 説明:
|
はい |
カタログ検索 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/catalog-search-tf.xml#catalog-search-tf |
カタログ検索基準を指定するため、および検索結果ページまたはカート詳細ページを、カタログ検索ページを使用せずに直接表示するために起動されます。 |
userLogins: カタログ検索結果ページの受益者表に表示されるユーザーの「ユーザー・ログイン」属性値。値はカンマで区切る必要があります。値を指定しない場合は、現在ログインしているユーザーが受益者表に表示されます。 |
|
カタログ項目詳細 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/catalog-item-details-tf.xml#catalog-item-details-tf |
カタログ項目の詳細を表示するために起動されます。 |
catalogItemName: 詳細を表示するカタログ項目の名前。 |
はい |
カタログ項目詳細 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/catalog-item-details-tf.xml#catalog-item-details-tf |
カタログ項目の詳細を表示するために起動されます。 |
catalogItemType: 詳細を表示するカタログ項目のタイプ。有効な値は、Role、ApplicationIstanceまたはEntitlementです。 |
はい |
ユーザー・ロール |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/user-roles-tf.xml#user-roles-tf |
特定のユーザーのロール・ページを表示するために起動されます。 |
userLogin: ロール・ページを表示するユーザーの「ユーザー・ログイン」属性値。 |
はい |
ユーザー・アカウント |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/user-accounts-tf.xml#user-accounts-tf |
特定のユーザーのアカウント・ページを表示するために起動されます。 |
userLogin: アカウント・ページを表示するユーザーの「ユーザー・ログイン」属性値。 |
はい |
ユーザー権限 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/user-entitlements-tf.xml#user-entitlements-tf |
特定のユーザーの権限ページを表示するために起動されます。 |
userLogin: 権限ページを表示するユーザーの「ユーザー・ログイン」属性値。 |
はい |
ユーザーに割り当てられた管理ロール |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/user-assigned-adminroles-tf.xml#user-assigned-adminroles-tf |
特定のユーザーの割り当てられた管理ロール・ページを表示するために起動されます。 |
userLogin: 割り当てられた管理ロール・ページを表示するユーザーの「ユーザー・ログイン」属性値。 |
はい |
組織の詳細 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/org-details-tf.xml#org-details-tf |
組織の詳細ページを表示するために起動されます。 |
orgName: 詳細ページを表示する組織の名前。 |
はい |
マイ・アクセス |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/my-access-tf.xml#my-access-tf |
現在ログインしているユーザーのアクセス・ページを表示するために起動されます。 |
パラメータは不要です。 |
いいえ |
ユーザー・アカウント・パスワードの変更 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/account-passwd-reset-tf.xml#account-passwd-reset-tf |
特定のユーザーのユーザー・アカウント・パスワードの変更ページを表示するために起動されます。 |
accountName: パスワードを変更するユーザーのアカウントの名前。 |
はい |
ユーザー・アカウント・パスワードの変更 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/account-passwd-reset-tf.xml#account-passwd-reset-tf |
特定のユーザーのユーザー・アカウント・パスワードの変更ページを表示するために起動されます。 |
userLogin: アカウント・パスワードを変更するユーザーの「ユーザー・ログイン」属性値。 |
はい |
アカウントの詳細 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/account-details-tf.xml#account-details-tf |
ユーザーのアカウントの詳細を表示するために起動されます。 |
accountName: 詳細を表示するユーザーのアカウントの名前。 |
はい |
アカウントの詳細 |
/WEB-INF/oracle/iam/ui/taskflows/public/tfs/account-details-tf.xml#account-details-tf |
ユーザーのアカウントの詳細を表示するために起動されます。 |
userLogin: アカウントを表示するユーザーの「ユーザー・ログイン」属性値。 |
はい |
ノート:
-
表19-6に示されているすべてのパブリック・タスクフローのパラメータは、java.lang.String型です。
-
パブリック・タスクフローは、タスクフローの起動で説明されているように、コンテキスト・イベントを使用して起動できます。あるいは、パブリック・タスクフローを、ADF Facesページに埋め込むこともできます。パブリック・タスクフローをADF Facesページに埋め込む場合は、ADF Facesページのページ定義ファイルのタスクフロー定義に、次のパラメータを(表19-6に示されているパラメータに加えて)追加する必要があります。
パラメータ名: uiShell
値: #{pageFlowScope.uiShell}
19.7.10 カタログ検索のカスタマイズ
検索フィールドや検索操作の追加など、カタログ検索に対する高度なカスタマイズについては、カスタム・タスクフローを作成してから、デフォルトのカタログ・タスクフローをカスタム・タスクフローで置換することをお薦めします。
デフォルト・カタログ検索フォームをカスタマイズするには、Oracle Identity Governanceの管理のアクセス・リクエスト・カタログの構成を参照してください。
この項では、カタログ検索のカスタム・タスクフローを実装する方法について説明します。次の項目が含まれます。
19.7.10.1 カスタム・タスクフローの開発
カスタム・タスクフローを、ViewControllerプロジェクトにおいてページ・フラグメントに基づくバインド・タスクフローとして開発します。OIMクライアント、OIMモデルおよびOIMビュー・ライブラリもViewControllerプロジェクトに追加されていることを確認してください。ViewControllerプロジェクトの設定の詳細は、ViewControllerプロジェクトの設定を参照してください。
カスタム・タスクフローは、図19-9に示すようにタスクフロー・テンプレート/WEB-INF/oracle/iam/ui/catalog/tfs/catalog-search-template.xml
に基づくことができます。
このテンプレートを拡張することで、次のパラメータに対する値がカスタム・タスクフローに自動的に渡されます。これらのパラメータは、カスタム・タスクフローのpageFlowScope
からアクセスできます。
-
entityType: ロール、権限またはアカウントをIdentity Self Serviceの「マイ・アクセス」ページからリクエストする場合、このパラメータに渡される値はそれぞれ「ロール」、「権限」、「アプリケーション・インスタンス」です。
-
showEntityTypeSelector: ロール、権限またはアカウントを「マイ・アクセス」ページからリクエストする場合、このパラメータの値はfalseとして渡されます。このパラメータを使用して、カスタム・タスクフローのエンティティ・タイプ・セレクタを非表示にできます。
-
showAppSelector: 権限を「マイ・アクセス」ページの「マイ・アカウント」タブからリクエストする場合、このパラメータの値はfalseとして渡されます。このパラメータを使用して、カスタム・タスクフローのアプリケーション・セレクタを非表示にできます。
-
parentEntityKey: 権限を「マイ・アクセス」ページの「マイ・アカウント」タブからリクエストする場合、選択したアカウントに対応するアプリケーション・インスタンス・キーがこのパラメータに渡されます。
カスタム・タスクフローのページ・フラグメントは、図19-10に示すようにテンプレート/oracle/iam/ui/catalog/pages/catalog-advanced-search-template.jspx
に基づくことができます。
図19-11に示すように、pageTemplateBinding
がJdeveloperによってカスタム・ページのページ定義に自動的に追加されることを確認します。
19.7.10.2 カスタム・フォームのプレゼンテーション・ロジックの追加
次に示すように、search
ファセットにカスタム・フォームのプレゼンテーション・ロジックを追加します。
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core"> <af:pageTemplate viewId="/oracle/iam/ui/catalog/pages/catalog-advanced-search-template.jspx" value="#{bindings.pageTemplateBinding}" id="pt1"> <f:facet name="search"> <!-- ######## CUSTOM SEARCH CONTENT BEGIN ###### --> <!-- ####### CUSTOM SEARCH CONTENT END########## --> </f:facet> </af:pageTemplate> </jsp:root>
19.7.10.3 SearchCriteriaオブジェクトの構成
カスタム・フォームの検索ボタンには、アクション・リスナーが定義されている必要があります。アクション・リスナーで、SearchCriteria
オブジェクトを作成し、次のユーティリティ・メソッドを起動します。
oracle.iam.ui.catalog.view.CatalogAdvancedSearch.executeCatalogSearch(oracle.iam.platform.entitymgr.vo.SearchCriteria criteria) public void searchActionListener(ActionEvent event){ SearchCriteria criteria = null; //build your search criteria //and then call executeCatalogSearch CatalogAdvancedSearch.executeCatalogSearch(criteria); }
19.7.11 承認タスクの「タスクの詳細」ページのカスタマイズ
承認タスクのタスク詳細ページをカスタマイズするには、カスタム・タスクフローを構築および作成し、タスク詳細ページを作成し、そのページにタスク情報を移入し、カスタム・タスクフローを使用するようにヒューマン・タスクを構成します。
この項の内容は次のとおりです。
19.7.11.1 カスタム・タスク詳細タスクフローを開発するための前提条件
カスタム・タスク詳細タスクフローを開発する前に、次のソフトウェアをインストールしておく必要があります。
-
Oracle Identity Manager 12c リリース2 (12.2.1.2)
-
Oracle SOA Suite 11g (11.1.1.9.0)
-
Oracle SOAコンポジット・エディタ拡張機能を備えたJDeveloper 11g (11.1.1.9.0)
ノート:
ヒューマン・タスクが同じ結果セットを持ち、同じスキーマ・ペイロード構造を共有しているかぎり、同じタスク詳細タスクフローを複数のヒューマン・タスクに使用できます。したがって、承認、チャレンジ、情報の提供および手動履行タスクに対して異なるタスクフローを作成する必要があります。
19.7.11.6 リクエスト関連情報を表示するためのタスクフロー
OIMビュー共有ライブラリの次のタスクフローを「詳細」ページのリージョンとしてドロップして、リクエスト関連情報を表示できます。
-
WEB-INF/oracle/iam/ui/catalog/tfs/request-summary-information-tf.xml: このタスクフローは基本リクエスト情報を示します。手動履行タスクには適用されません。
-
WEB-INF/oracle/iam/ui/catalog/tfs/request-summary-details-tf.xml: このタスクフローはターゲット・ユーザー、関連リクエストおよび依存リクエストを示します。手動履行タスクには適用されません。
-
WEB-INF/oracle/iam/ui/catalog/tfs/catalog-tf.xml: このタスクフローは、リクエスト内の各アイテムのカート・アイテムとフォーム・データを示します。ロールの作成、変更または削除以外のすべてのリクエスト・タイプに使用する必要があります。このタスクフローは、承認、チャレンジ、情報の提供および手動履行タスクに使用できます。
-
WEB-INF/oracle/iam/ui/role/tfs/create-role-train-tf.xml: このタスクフローは、リクエストのロール・タイプの作成、変更または削除に対してcatalog-tfタスクフローのかわりに使用する必要があります。チャレンジ、情報の提供および手動履行タスクには適用されません。
19.8 追加のリクエスト・フォームの構成
ユーザーは、リクエストの承認者に役立つ追加のリクエスト情報を入力できます。
この項の内容は次のとおりです。
19.8.1 追加のリクエスト情報の概要
カート項目のリクエストまたはリクエスト自体に関する追加情報は、リクエスト送信時に指定できます。デフォルト・フォーム情報が十分でない場合は、リクエスト承認の決定に必要な場合があります。
追加情報については次の機能がサポートされます。
19.8.1.1 カート項目のリクエストの追加情報
カスタム・タスクフローが開発されたら、ユーザーはリクエストの実行時にカート項目に関する追加情報を指定できます(role/account/entitlement)。次のサンプル・スクリーンショットに示すように、カート項目のリクエストに関する追加情報フォームを指定できます。
![カート項目の追加情報アイコン カート項目の追加情報アイコン](img/addl_req_info1.gif)
ユーザーが追加情報アイコン(赤でマーク)をクリックすると、カスタム・フィールドのあるフォームが表示されます。ユーザーは、リクエストの承認者に役立つ適切な情報を入力できます。
リクエストの承認者は、カート項目レベルで指定されている追加のリクエスト情報を、表示または更新(あるいはその両方が)できます。リクエストの承認者は、「受信ボックス」ページの「アイデンティティ・セルフ・サービス」または「保留中の承認」ページからリクエストにアクセスできます。
19.8.2 追加のリクエスト情報用カスタム・タスクフローを開発するためのガイドラインについて
追加のリクエスト情報のカスタム・タスクフローを開発するには、追加情報のカスタム・タスクフローを実装し、タスクフローの起動時に入力パラメータを渡し、マネージドBeanで追加情報を保存および取得し、RequestFormContextを使用して必要なカスタマイズを実現します。
この項の内容は次のとおりです。
19.8.2.1 追加のリクエスト情報用カスタム・タスクフローの実装
追加のリクエスト情報を指定および表示するために使用できるカスタム・タスクフローを実装するには:
- カスタム・タスクフローを、ViewControllerプロジェクトにおいてバインド・タスクフローとして開発します。ViewControllerプロジェクトの設定の詳細は、ViewControllerプロジェクトの設定を参照してください。デフォルト・パッケージとして
oracle.iam.ui.custom
を指定します。 - 追加のフォームをレンダリングするタスクフローを作成します。タスクフローが
WEB-INF/oracle/iam/ui/custom/
ディレクトリまたはそのサブディレクトリ(/WEB-INF/oracle/iam/ui/custom/sample/catalog/tfs/additional-role-info.xml#additional-role-info
など)にあることを確認します。 - 必要に応じて、タスクフローの入力パラメータを定義します。タスクフローの起動時に渡される事前定義済入力パラメータの詳細は、タスクフローの入力パラメータを参照してください。
- タスクフローを
oracle.iam.ui.custom
共有ライブラリの一部としてデプロイします。バインド・タスクフローのデプロイの詳細は、Oracle Identity Governanceへのカスタム・コードのデプロイを参照してください。
19.8.2.2 タスクフローの入力パラメータ
次の表に、タスクフローの起動時に渡される事前定義済入力パラメータを示します。
パラメータ名 | タイプ | 説明 |
---|---|---|
|
|
AdditionalRequestInfoインタフェースのインスタンス。 リクエスト・レベルおよびカート項目レベルの追加のリクエスト属性値を設定および取得するために使用します。インタフェース・メソッドの詳細は、AdditionalRequestInfoインタフェースの理解を参照してください。 |
|
|
RequestFormContextのインスタンス。 RequestFormContextによって、リクエストおよび現在選択しているカート項目に関する様々なコンテキスト情報が指定されます。 たとえば、RequestFormContextで指定された情報を活用して、カスタム・タスクフローの入力コンポーネントを読取り専用モードで、または編集可能モードでレンダリングする必要があるかどうかを決定できます。 詳細は、RequestFormContextで使用可能なEL式を参照してください。 |
19.8.2.3 プロジェクトに対して開発されるマネージドBeanでの追加情報の保存と取得
次に示すように、additionalRequestInfo
pageFlowScope入力パラメータを使用して、リクエストまたはカート項目のリクエストに関する追加情報を取得および格納できます。
AdditionalRequestInfo additionalRequestInfo = (oracle.iam.ui.common.model.catalog.requestdetails.AdditionalRequestInfo) AdfFacesContext.getCurrentInstance().getPageFlowScope().get("additionalRequestInfo");
ノート:
oracle.iam.ui.common.model.catalog.requestdetails.AdditionalRequestInfo
インタフェースについては、AdditionalRequestInfoインタフェースの理解で説明しています。
カート項目レベルのリクエストに関する追加情報を設定または取得するには、次の文を使用します。
startDate = (Date additionalRequestInfo.getAttribute(cartItemId, START_DATE); contractNumber = (String) additionalRequestInfo.getAttribute(cartItemId, "CONTRACT_NUMBER" );
同様に、カート項目レベルの追加情報を設定するには、次の文を使用します。
contractNumber = (String) additionalRequestInfo.setAttribute(cartItemId, "CONTRACT_NUMBER" , "123");
ノート:
このコンテキストで選択した現在のカートID項目を取得するには、次に示すようにrequestFormContext
pageFlowScope入力パラメータを使用します。
RequestFormContext requestFormContext = (oracle.iam.ui.platform.view.RequestFormContext) AdfFacesContext.getCurrentInstance().getPageFlowScope().get("requestFormContext"); cartItemId = requestFormContext.getUniqueCartItemIdentifier();
リクエストに関する追加情報を設定または取得するには、次の文を使用します。
temporaryLocation = (String) additionalRequestInfo.getAttribute("TEMPORARY_LOC"); additionalRequestInfo.setAttribute("TEMPORARY_LOC", "A-24");
19.8.2.4 AdditionalRequestInfoインタフェースの理解
次のコードに示すように、AdditionalRequestInfoインタフェースによってSerializableが拡張されます。そのため、カスタム・タスクフローのpageFlowScopeに、AdditionalRequestInfoのインスタンスを格納できます。
public interface AdditionalRequestInfo extends Serializable { public void setAttribute(String name, Serializable value); public void setAttribute(String cartItemId, String name, Serializable value); public Serializable getAttribute(String name); public Serializable getAttribute(String cartItemId, String name); }
個々のカート項目の追加情報を取得または設定するには、次の文を使用します。
public void setAttribute(String cartItemId, String name, Serializable value); public Serializable getAttribute(String cartItemId, String name);
cartItemId
パラメータを指定する必要があります。RequestFormContextのgetUniqueCartItemIdentifier
EL式を使用して、選択したcartItemId
にアクセスできます。詳細は、RequestFormContextで使用可能なEL式を参照してください。
リクエスト・レベルの追加情報を取得または設定するには、次の文を使用します。
public void setAttribute(String name, Serializable value); public Serializable getAttribute(String name);
19.8.2.5 RequestFormContextを使用した必要なカスタマイズの実行
タスクフローを起動する様々なフロー(カート送信、リクエスト詳細および承認詳細フロー)を区別するには、カスタム・タスクフローに渡されるrequestFormContext
パラメータを利用できます。
たとえば、リクエスト・サマリーについて追加情報タスクフローのコンポーネントを読取り専用モードで表示する場合は、次の文を使用します。
if (requestFormContext.getActionType() == requestFormContext.ActionType.APPROVAL) { isFormUpdateable = Boolean.TRUE; }
19.8.3 追加のリクエスト情報用カスタム・タスクフローの構成
追加のリクエスト情報のカスタム・タスクフローを構成するには、追加のリクエスト情報のカスタム・タスクフローを構成し、リクエスト・レベルで追加のリクエスト情報を構成します。
この項の内容は次のとおりです。
19.8.3.1 カート項目レベルのカスタム・タスクフローの構成
カート送信UIには、追加のカート項目情報を表示できる明示的なプレースホルダがあります。
ユーザーが、任意のカート項目に固有の追加情報(アプリケーション・インスタンス、ロール、権限など)を指定するようにできます。ただし、構成できるのは、エンティティ・タイプ(ロール、権限またはアプリケーション・インスタンス)当たり1つの追加情報タスクフローだけです。この構成は、次のシステム・プロパティを利用して行います。
-
カタログ追加アプリケーション詳細タスク・フロー: アプリケーション・インスタンス・エンティティ・タイプに適用できるカスタム追加情報タスクフローに値を設定します。
-
カタログ追加権限詳細タスク・フロー: 権限エンティティ・タイプに適用できるカスタム追加情報タスクフローに値を設定します。
-
カタログ追加ロール詳細タスク・フロー: ロール・エンティティ・タイプに適用できるカスタム追加情報タスクフローに値を設定します。
ノート:
システム・プロパティの設定の詳細は、Oracle Identity Governanceの管理のOracle Identity Managerの構成を参照してください。
たとえば、ロール・エンティティ・タイプの特定の追加情報タスクフローを起動するには、「カタログ追加ロール詳細タスク・フロー」
システム・プロパティの値を次のように設定できます。
/WEB-INF/oracle/iam/ui/custom/sample/catalog/tfs/additional-role-info.xml#additional-role-info
「カート項目」表は、カート・チェックアウト、「リクエスト・サマリー」および「リクエスト承認」ページにおいて、UI操作にカート項目が関係するたびに表示されます。カート項目の追加情報アイコンをクリックすると、次のサンプル・スクリーンショットに示すように、カート・エンティティ・タイプ(ロール、アプリケーション・インスタンス、権限など)に対して構成されているカスタム・タスクフローが表示されます。
![カート項目の追加情報アイコン カート項目の追加情報アイコン](img/addl_req_info2.gif)
19.8.3.2 リクエスト・レベルでの追加のリクエスト情報の構成
リクエスト・レベルで追加情報が必要な一部のシナリオがあります。たとえば、ユーザー変更リクエストの送信中、リクエスト元がユーザーに関する追加情報を指定し、承認者がそれらを確認できます。この機能は、デフォルトではIdentity Self Serviceで使用できず、カスタム・タスクフローの開発、サンドボックスおよびUIカスタマイズの作成、およびカスタム・タスクフローとUI間のリンクの確立によって実装する必要があります。
この項の内容は次のとおりです。
19.8.3.2.1 リクエスト・レベルでの追加のリクエスト情報について
ユーザーが「ユーザーの変更」リクエストなどのリクエストに固有の追加情報を指定できるようにすることができます。そのためには、UIをカスタマイズしてリンクまたはボタンをカタログ・チェックアウト・ページに追加できます。新規に追加したリンクまたはボタンをカート・チェックアウト、「リクエスト・サマリー」および「リクエスト承認」ページに対して表示できます。リンクまたはボタンをクリックすると、リクエストに関する追加情報を表示するポップアップを起動できます。
カスタム・タスクフローを決定する事前定義済属性に示すように、コンポーネントの子孫として定義された属性のセットによって、起動されるカスタム・タスクフロー、およびポップアップ・ウィンドウの表示方法が決定されます。
19.8.3.2.2 カスタム・タスクフローを決定する事前定義済属性
次の表に、どのタスクフローを起動し、どのようにポップアップ・ウィンドウを表示するかを決定する、コンポーネントの子孫として定義された事前定義済属性をリストします。
名前 | タイプ | 必須 | 説明 |
---|---|---|---|
taskFlowId |
java.lang.String |
はい |
コンポーネントによって起動されるカスタム・タスクフローのID。 |
dialogTitle |
java.lang.String |
オプション |
カスタム・タスクフローが起動されるポップアップ・ウィンドウのタイトル。値を指定しない場合は、タイトルが空白になります。 |
dialogTitleIcon |
java.lang.String |
オプション |
カスタム・タスクフローが起動されるポップアップ・ウィンドウに表示されるアイコンへのパス。値を指定しない場合は、デフォルトのアイコンが使用されます。 |
19.8.3.2.3 コマンド・リンクのサンプル・コード
次に、「追加のリクエスト情報」ポップアップを起動するためにUIカスタマイズを通じて追加されたコマンド・リンクのサンプル・コード・スニペットを示します。
ノート:
UIカスタマイズを通じたコマンド・リンクの追加の詳細は、リンクまたはボタンの追加を参照してください。
<af:commandLink xmlns:af="http://xmlns.oracle.com/adf/faces/rich" id="e8065932664" text="Additional Cart Information" actionListener="#{catalogRequestBean.launchAdditionalRequestInfoTaskFlow}" rendered="#{backingBeanScope.additionalInfoHelperBean.renderAdditionalDetailsForRequest}"> <af:clientAttribute xmlns:af="http://xmlns.oracle.com/adf/faces/rich" name="taskFlowId" value="#{backingBeanScope.additionalInfoHelperBean.additionalInfoTaskFlowIdForRequest}"/> <af:clientAttribute xmlns:af="http://xmlns.oracle.com/adf/faces/rich" name="dialogTitleIcon" value="/images/request_ena.png"/> <af:clientAttribute xmlns:af="http://xmlns.oracle.com/adf/faces/rich" name="headerText" value="Additional Cart Information"/> <af:clientAttribute xmlns:af="http://xmlns.oracle.com/adf/faces/rich" name="dialogTitle" value="#{backingBeanScope.additionalInfoHelperBean.popupTitle}"/> </af:commandLink>
このサンプル・コード・スニペットでは、「追加のカート情報」カスタム・リンクがカート詳細ページに追加されます。説明:
-
コマンド・リンクのactionlistenerは次のように
catalogRequestBean.launchAdditionalRequestInfoTaskFlow
に設定する必要があります。actionListener="#{catalogRequestBean.launchAdditionalRequestInfoTaskFlow}"
-
カスタム・リンクは、EL式を使用してレンダリングされたプロパティに対して選択的に表示できます。
#{backingBeanScope.additionalInfoHelperBean.renderAdditionalDetailsForRequest}
このEL式を使用するには、
isRenderAdditionalDetailsForRequest
メソッドを伴うマネージドJAVA Bean (additionalRequestInfoHelperBean
など)を開発します。このメソッドでは、リンクを表示する必要の有無に基づき、ブール値(trueまたはfalse)が返されます。マネージドBeanの詳細は、マネージドBeanおよびタスク・フローの開発を参照してください。 -
taskFlowId
属性の値として指定されたEL式、#{backingBeanScope.additionalInfoHelperBean.additionalInfoTaskFlowIdForRequest}
を使用して、異なるタスクフローを起動します。これは必須属性です。このEL式を使用するには、
getAdditionalInfoTaskFlowIdForRequest
メソッドを、additionalRequestInfoHelperBean
という名前のマネージドBeanにインクルードします。このメソッドにより、oracle.iam.ui.custom-dev-starter-pack.war
の一部としてデプロイされるカスタム・タスクフローのIDを表す文字列値(/WEB-INF/oracle/iam/ui/custom/catalog/tfs/additional-cart-info-tf.xml#additional-cart-info-tf
など)が返されます。 -
dialogTitle
属性の値として指定されたEL式、#{backingBeanScope.additionalInfoHelperBean.popupTitle}
を使用して、異なるポップアップ・ウィンドウ・タイトルを設定します。このEL式を使用するには、
getPopupTitle
メソッドを、additionalRequestInfoHelperBean
という名前のマネージドBeanにインクルードします。このメソッドにより、ポップアップ・ウィンドウ・タイトルとして表示される、適切な文字列値が返されます。
19.8.4 追加のリクエスト情報の検証
追加のリクエスト情報で必須の属性値が送信される場合、RequestDataを検証可能なRequestDataValidator
プラグインを使用して、その送信を検証できます。
次に示すのは、バリデータ・プラグインを登録する際の、ロールの割当て操作用のplugin.xml
ファイルの構成のサンプルです。この構成により、すべてのロールの割当て操作に対してmycompany.iam.plugin.validation.AssignRolesDataValidator
が呼び出されます。
<plugins pluginpoint="oracle.iam.request.plugins.RequestDataValidator"> <plugin pluginclass="mycompany.iam.plugin.validation.AssignRolesDataValidator" version="1.0" name="AssignRolesDataValidator"> <metadata name="DataValidator"> <value>AssignRolesDataset</value> </metadata> </plugin> </plugins>
同様に、権限の割当て操作用には、次のようにplugin.xml
を構成できます。
<plugins pluginpoint="oracle.iam.request.plugins.RequestDataValidator"> <plugin pluginclass="mycompany.iam.plugin.validation.AssignEntitlementsDataValidator" version="1.0" name="AssignEntitlementsDataValidator"> <metadata name="DataValidator"> <value> EBSForm.UD_EBS_RESP</value> </metadata> </plugin> </plugins>
19.9 UIカスタマイズの移行
増分T2P (テストから本番)を使用して、デプロイメント間でUIカスタマイズを移行できます。
あるOracle Identity Manager環境から別の環境、つまりテスト環境から本番環境(T2P)へのUIカスタマイズの移行は、次の使用例のヘルプを使用して説明します。
19.9.1 使用例1: 増分T2P
開発サイクルの間、構成の増分構築や、あるOracle Identity Manager設定から別の設定へ引き続き構成を移動します。
これを行うには、Oracle Identity Governanceの管理のデプロイメント・マネージャを使用した増分移行の説明に従ってデプロイメント・マネージャを使用します。しかし、デプロイメント・マネージャを使用したデータのエクスポートおよびインポートには、UIカスタマイズは含まれません。このため、Oracle Identity Managerではサンドボックスが用意されています。これにより、サンドボックスでバインドされたカスタマイズを作成し、テストし、最終的に増分ベースでのエクスポート/インポートが可能になります。
ただし、カスタマイズの増分移行には問題があります。あらかじめサンドボックスをエクスポートしておく必要があるうえに、公開されるのは変更点のみです。しかし、すでに変更点が公開されていると、エクスポートできません。これは既知の問題です。
19.10 UIカスタマイズのベスト・プラクティス
UIのカスタマイズでは、サンドボックスを詳細な説明とともに作成する、サンドボックスをエクスポートしてから公開するなど、いくつかのベスト・プラクティスおよびガイドラインに従う必要があります。
この項では、UIカスタマイズに関連するいくつかのベスト・プラクティスとガイドラインについて説明します。次の項目が含まれます。
19.10.1 詳細説明のあるサンドボックスを作成する
サンドボックスの作成時に、詳細説明を付けて作成し、作成中のサンドボックスの対象のエンティティをすべてリストします。
たとえば、アプリケーション・インスタンスを作成中の場合は、アプリケーション・インスタンスの作成用にこのサンドボックスを作成していることノートにとっておきます。アプリケーション・インスタンスの作成時にこのサンドボックスを公開し、Identity Self Serviceに移動してUIカスタマイズを実行する別のサンドボックスを作成します。これは、2人以上のユーザーが異なるサンドボックスを作成して、同じエンティティを作成し(この例ではアプリケーション・インスタンス)、それを異なるタイミングで公開した場合の問題を回避するためです。
19.10.2 サンドボックスを公開する前のMDSのバックアップを作成する
サンドボックスを公開する前のMDSのバックアップを作成する
サンドボックスを公開する前に、何か異常があった場合にMDSを以前の状態にリストアできるように、MDSのバックアップを作成します。
19.10.3 すべてのサンドボックスをターゲット環境に移行し、同じ順序で公開する
最初の環境(またはソース環境)で公開されたすべてのサンドボックスは、2番目の環境(またはターゲット環境)に移行して公開する必要があり、サンドボックスを同じ順序で公開する必要があります。
このガイドラインに従わない場合、一部のカスタマイズがターゲット環境で失われ、ADFエラーまたは欠落属性表示ラベルが生成されます。
複数のソース環境から単一のターゲット環境へのサンドボックスの移行はサポートされません。様々なシナリオの詳細情報は、同時実行の競合への対処および同時実行の問題のトラブルシューティングを参照してください。
19.10.4 公開前のサンドボックスをエクスポートする
カスタマイズをある環境から別の環境に移行することを計画している場合は、公開前にすべてのサンドボックスをエクスポートする必要があります。
すでに公開されているサンドボックスはエクスポートできません。
19.10.5 公開前のサンドボックスをテストする
関連ユースケースの入念なテスト後にのみサンドボックスを公開してください。
サンドボックスを使用する主な目的は、カスタマイズを実験できるようにすることです。したがって、関連ユースケースの入念なテスト後にのみサンドボックスを公開してください。サンドボックスが公開された後、簡単には非公開にできません。これは、別の環境へのサンドボックスの移行にも適用され、その場合は健全性テスト後にのみサンドボックスを公開する必要があります。
19.10.6 デフォルトのコンポーネントIDは変更しない
デフォルト・コンポーネントのIDを読取り専用にします。
図19-15に示すように、WebCenter Composerを使用してコンポーネントIDを表示および編集できます。
システム定義ページでのデフォルト・コンポーネントのIDの変更は避ける必要があります。コンポーネントIDは読取り専用として扱う必要があります。たとえば、コンポーネントが変更に基づいて再レンダリングされると思われる場合、またはコンポーネントのクリックが参照される場合、別のコンポーネントのPartial Triggers
プロパティで使用できます。
19.10.7 ページからのコンポーネントの削除時に裁量を使用する
コンポーネント・バインディング・プロパティが設定されている場合は特に、ページからシステム定義コンポーネントを削除する際に注意してください。
これらのコンポーネントはOracle Identity Managerとともに出荷されるマネージドBeanから参照でき、ページからコンポーネントを削除するとバインディングは設定されなくなります。これにより、NullPointerException
などのエラーが発生することがあります。このような場合は、Visible
プロパティをfalse
に設定することでページからコンポーネントを非表示にすることをお薦めします。
コンポーネントをレンダリングされていないものとしてマークする(コンポーネントの表示オプションを選択解除する)ことは、コンポーネント・バインディングに対して同じ効果を持ち、設定されないことを意味します。
19.10.8 デフォルトのEO/VOの直接変更はサポートされていない
MDSからEO/VO XMLをエクスポートして変更するなど、UserVO、OrganizationVO、RoleDetailsVOなどのシステム定義のEO/VOに対する直接変更はサポートされていません。
Identity System Administrationの「ユーザー」、「組織」、「ロール」または「カタログ」システム・エンティティ・リンクを介してアクセスされるフォーム・デザイナは、新規属性の追加または既存の属性の変更を行うためにサポートされる唯一の方法です。
19.10.9 JSFFタグのネームスペースを指定する
エクスポートされたサンドボックスにJSFFコンポーネントを手動で追加する場合は、各JSFFタグのネームスペースを指定します。
次のコード・スニペットは、新しいaf:outputText
が追加されるカスタマイズ・ドキュメントの例を示しています。
<?xml version='1.0' encoding='UTF-8'?> <mds:customization version="11.1.1.66.49" xmlns:mds="http://xmlns.oracle.com/mds" motype_local_name="root" motype_nsuri="http://java.sun.com/JSP/Page"> <mds:insert parent="sdh1" position="first"> <af:outputText value="Some text" id="e7869964958"/> </mds:insert> </mds:customization>
af:outputText
にはネームスペースが指定されていないことに注意してください。このようなコード・スニペットは、ユーザーがページを開いたときにjava.io.IOException: Stream closed
の原因となります。サンドボックスのインポート時またはサンドボックスのアクティブ化時に例外はスローされません。例外は、ページがアクセスされる場合にのみスローされます。
次のコード・スニペットは、指定されたxmlns:af="http://xmlns.oracle.com/adf/faces/rich"
ネームスペースで修正されたaf:outputText
を示しています。
<?xml version='1.0' encoding='UTF-8'?> <mds:customization version="11.1.1.66.49" xmlns:mds="http://xmlns.oracle.com/mds" motype_local_name="root" motype_nsuri="http://java.sun.com/JSP/Page"> <mds:insert parent="sdh1" position="first"> <af:outputText xmlns:af="http://xmlns.oracle.com/adf/faces/rich" value="Some text" id="e7869964958"/> </mds:insert> </mds:customization>
19.10.10 カスタマイズは、サイト/サイト・レイヤーでのみ許可される
たとえばエクスポートされたサンドボックスでMDSカスタマイズ・ドキュメントを手動で編集する場合、site/site
カスタマイズ・レイヤーのドキュメントの編集のみ許可されます。
site/oim
、edition/xe
、edition/ee
などの他のすべてのカスタマイズ・レイヤーは使用しないでください。
ドキュメントが存在するレイヤーをドキュメント・パスから検索できます。たとえば、oracle/iam/ui/myinformation/pages/mdssys/cust/site/site/my-info.jsff.xml
ドキュメントはsite/site
レイヤーにあります。レイヤー名はmdssys/cust
の後に指定されます。
WebCenter Composerを使用して行われたすべてのカスタマイズはsite/site
レイヤーに格納されます。ホーム・ページのパーソナライズとその他のパーソナライズはuser/
USER_NAME
レイヤーに格納されます。パーソナライズ・ドキュメントは手動で編集できますが、これらはUSER_NAME
ユーザーにのみ適用できます。
19.10.11 各アプリケーション・インスタンスまたは権限フォームには3つのページ・フラグメント(JSFF)がある
各アプリケーション・インスタンスまたは権限フォームには、作成、変更および一括のページ・フラグメントがあります。
すべてのアプリケーション・インスタンスまたは権限フォームには次のページ・フラグメント(JSFF)があります。
-
作成: アプリケーション・インスタンスまたは権限をリクエストした場合に表示されます
-
変更: 既存のアプリケーション・インスタンスまたは権限を変更した場合に表示されます。ユーザー・プロファイルのアプリケーション・インスタンスまたは権限ページおよびIdentity Self Serviceの「マイ・アクセス」セクションでアプリケーション・インスタンスまたは権限詳細を表示した場合にも使用されます。
-
バルク: バルク・リクエストに対して表示されます
アプリケーション・インスタンスまたは権限フォームをカスタマイズするたびに、通常は3つのページ・フラグメントすべて(JSFF)または少なくとも作成および変更ページ・フラグメントをカスタマイズします。作成ページ・フラグメントはアプリケーション・インスタンスまたは権限に対してリクエストする場合にカスタマイズでき、変更ページ・フラグメントは既存のアプリケーション・インスタンスまたは権限を変更する場合にカスタマイズできます。フォーム・デザイナで「ビューの再生成」ボタンをクリックすると、3つのページ・フラグメントがすべて再生成されます。
19.10.12 「「検索可能」ピックリスト」オプションを使用する場合は裁量を使用する
ページにUDFを追加するときに「入力値リスト」
コンポーネントを使用する予定がある場合にのみ、「「検索可能」ピックリスト」オプションを選択します。
ルックアップUDFを作成する場合、「「検索可能」ピックリスト」オプションを選択するオプションがあります。このオプションは、ページにUDFを追加する際に「入力値リスト」
コンポーネントを使用することを計画する場合にのみチェックする必要があります。「「検索可能」ピックリスト」の値は後で変更できないため、これはUDFの作成時に決定する必要があります。「「検索可能」ピックリスト」オプションを選択することを決定した場合、追加のVO属性が作成されます。属性には__c_Id__c
の接尾辞が付けられ、内部的にのみ使用されます。ページにUDFを追加する場合は、__c_Id__c
接尾辞付きの属性ではなく通常属性を選択および追加します。
「「検索可能」ピックリスト」オプションを選択しなかった場合は、ページにUDFを追加する際に選択する適切なコンポーネントは「入力値リスト」
ではなく「選択肢を1つ選択」
です。
19.10.13 UDFの追加/更新後のサインアウト
新規UDFの追加または既存のUDFの更新後に、Identity Self-ServiceまたはIdentity System Administrationからサインアウトする必要があります。これは、VOの古いバージョンがキャッシュされ、新しい変更が取得されないというADFレイヤーの既知のキャッシングの問題を回避するためです。
サインアウトを忘れてVOが使用されているページに直接移動した場合、JBO-25058: UserVOでタイプ属性の定義MyUDF__c ofが見つかりません
のようなエラーが表示されるか、ページにUDFを追加する際にWebCenter ComposerカタログでUDFを選択できません。
19.10.14 ページにUDFを追加した後にUDFを検証する
UDFを追加するときには、UDFを正しく作成し、適切なデータ・コンポーネントおよびVOを使用してください。
ページにUDFを追加し、UDFが動作しない場合、たとえば入力コンポーネントが編集可能である必要があるのに読取り専用として表示されたり、指定したUDF値が正しく保存されていない場合は、次のことを確認できます。
-
Oracle Identity Governanceの管理のエンティティとそれに対応するデータ・コンポーネントおよびビュー・オブジェクトに記載されている説明に従ってページにUDFを追加する際に適切なデータ・コンポーネントとVOを使用していることを確認します。
-
UDFが正しく作成されていることを確認します。作成されるUDFについて、ユーザーUDFのUSR表など、対応するデータベース表に列が作成されている必要があり、ユーザーUDFのUser.xmlなど、対応するデータセットが更新されている必要があります。
これらのいずれかがない場合、UDFは正しく作成されていないため、再度作成する必要があります。
Oracle Identity Governanceの管理のカスタム属性の追加で説明するように、autoSubmit=true
を設定するのを忘れ、UDFコンポーネントでvalueChangeListener
を設定した場合、UDFは動作しますが、「保存」/「取消」または「適用」/「元に戻す」ボタンは有効になりません。
19.10.15 正しいLDAP属性でUDFをマップする
正しいLDAP属性でUDFをマップします。
Oracle Identity ManagerデプロイメントのPDFをLDAPモードで作成する場合、UDFを適切なLDAP属性でマップします。
19.10.16 カスタム・マネージドBeanをoracle.iam.ui.custom-dev-starter-pack.war共有ライブラリの一部としてデプロイする
カスタム・マネージドBeanを導入する場合、Beanはoracle.iam.ui.custom-dev-starter-pack.war
共有ライブラリの一部としてデプロイする必要があります。
カスタム・マネージドBeanの推奨スコープは、pageFlowScope
またはbackingBeanScope
です。カスタムBeanをsessionScope
で定義するのは避けて、かわりにpageFlowScope
の使用を検討してください。pageFlowScope
Beanクラスはシリアライズ可能である必要があります。java.io.Serializable
インタフェースを実装し、すべてのクラス・フィールドもシリアライズ可能である必要があります。RichOutpuText
などのコンポーネント・バインディングはシリアライズ可能でないため、backingBeanScope
Beanで定義する必要があります。カスタム・タスク・フローを実装している場合、推奨されるプラクティスは2つのマネージドBeanを持つことです。
-
タスクフローの状態を保持する
pageFlowScope
Bean (存在する場合) -
コンポーネント・バインディング
actionListeners
(または一般にはリスナー)のbackingBeanScope
bean。backingBeanScope
BeanはELを介してpageFlowScope
Beanおよびそのプロパティにアクセスできますが、その逆は不可能です。
19.10.17 エンティティ・タスクフローの置換を検討する
ページのデフォルトのルック・アンド・フィールを大幅に変更する場合、タスクフロー全体を完全に再実装する方がよい場合があります。
そうすると、Oracle Identity Managerのアップグレード後もカスタム・タスクフローが動作することが保証されます。これは、事前定義済みページの1つを大幅にカスタマイズする場合には当てはまらないことがあります。Oracle Identity Manager UIのカスタマイズはアップグレードセーフですが、その例外はアップグレード後にカスタマイズが破損しているか失われた場合です。これは、フローが完全に変更された場合にカスタマイズを保持できないことがあるためです。
タスクフロー全体を再実装することを決定した場合は、ホーム・ページの1つに新しいホーム・ページ・タイルを追加して、新規タスクフローを起動し、デフォルト・タスクフローを起動することで元のタイルを非表示にします。ホーム・ページへのタイルの追加の詳細は、ホーム・ページへのタイルの追加を参照してください。
19.10.18 Oracle Identity Manager WAR/EARファイルは更新しない
更新可能なWAR/EARファイル名をノートにとります。
次のWAR/EARファイルは更新しないでください。
-
oracle.iam.console.identity.self-service.ear
-
oracle.iam.console.identity.sysadmin.ear
-
oracle.iam.ui.view.war
-
oracle.iam.ui.oia-view.war
-
oracle.iam.ui.model.ear
これらのWAR/EARファイルの1つに対する変更は、アップグレード時に失われます。
アップグレードできるWARファイルはoracle.iam.ui.custom-dev-starter-pack.war
だけです。実際に、このWARファイルは、カスタム・マネージドBean、リソース・バンドル、タスクフローなど、カスタマイズで使用することを意図しています。oracle.iam.ui.custom-dev-starter-pack.war
に対する変更はアップグレード時に保持されます。
19.10.19 特定のホーム・ページ・タイルを条件付きで表示することを検討する
デフォルトでは、すべてのホーム・ページ・タイルが表示されます。ただし、特定のユーザーに対して一部のタイルを非表示にして、ページにアクセスできないようにすることが必要な場合があります。
たとえば、エンド・ユーザーに対して「プロビジョニング・タスク」タイルを非表示にすることが必要な場合があります。条件に基づくタイルの表示については、タイルの条件付き表示を参照してください。
19.10.20 カスタム・マネージドBeanからプラットフォームAPIを起動しない
カスタム・マネージドBeanでOracle Identity Managerデータ・ソースを使用してプラットフォームAPIを起動することはサポートされていません。
OIMClientを通じて公開されるパブリックAPIのみ起動できます。