この章では、組織における固有の要件に合わせてカスタム・リクエスト・ワークフローを構成する方法について説明します。カスタム・リクエスト・ワークフローを構成するには、次の手順を実行します。
次の項では、プラグイン・ポイントを使用してリクエスト管理操作を拡張する方法について説明します。
リクエスト・データセットは、リクエスト・ライフサイクルの様々なフェーズでどのデータを収集する必要があるかを指定する、XML定義ファイルです。リクエスト・データセットでは、リクエスタや承認者が送信する必要がある属性、属性が必須かどうか、およびUIでどのようにユーザーに対して属性をレンダリングするかを定義できます。データセットの一部として定義されたすべての属性は、属性の動作を定義する一連のプロパティに関連付けられます。また、リクエスト・データセットを使用すると、リクエストのコンテキストにのみ存在する追加属性を定義することもできます。
すべてのリクエストはリクエスト・テンプレートを使用して要求されます。各リクエスト・テンプレートはリクエスト・タイプに関連付けられています。各リクエスト・タイプはリクエスト・モデルに関連付けられています。リクエスト・モデルとリクエスト・タイプの間には、1対1の対応関係があります。リクエスト・モデルは、リクエスト・エンジンに特定のリクエスト・タイプに対して特定の方法で動作するように指示する仕様または構成です。リクエスト・モデルは、大まかに、ユーザー、リソースおよびロールの3つのタイプのエンティティに関連付けられます。すべてのリクエスト・モデルがOracle Identity Managerに付属しており、構成することはできません。
特定のリクエスト・タイプのリクエストが要求されると、リクエスト・モデルによって適切なリクエスト・データセットが関連付けられます。たとえば、汎用のリソースのプロビジョニング・リクエスト・モデルでは、リソース・オブジェクトのプロビジョニングのリクエストを処理します。リソースを定義するたびに、リクエストを介してそのリソースをプロビジョニングする必要がある場合は、リクエスト・ライフサイクルの間に収集する必要がある属性を使用して新しいデータセットを作成できます。非汎用エンティティであるユーザーに関連付けられたリクエスト・データセットには、事前定義済またはデフォルトのリクエスト・データセットがあります。
汎用エンティティに関連付けられたリクエスト・モデルには、デフォルトのリクエスト・データセットがありません。たとえば、リソースのプロビジョニング・リクエスト・モデルは、汎用エンティティであるリソースに関連付けられます。ユーザーなどの非汎用エンティティに関連付けられたリクエスト・モデルの場合、ユーザー・エンティティにデフォルト属性の固定セットがあるため、デフォルトのリクエスト・データセットを使用できます。
表23-1に、リクエスト・モデルおよび関連付けられるOracle Identity Managerに付属のデフォルトのリクエスト・データセット・ファイル名を示します。
表23-1 Oracle Identity Managerに付属のデフォルトのリクエスト・データセット
リクエスト・モデル | デフォルトのデータセット・ファイル名 | エンティティ |
---|---|---|
ユーザーの作成 |
CreateUserDataSet.xml |
ユーザー |
ユーザーの削除 |
DeleteUserDataset.xml |
ユーザー |
ユーザーの有効化 |
EnableUserDataset.xml |
ユーザー |
ユーザーの無効化 |
DisableUserDataset.xml |
ユーザー |
ユーザー・プロファイルの変更 |
ModifyUserDataset.xml |
ユーザー |
ユーザーの自己登録 |
SelfCreateUserDataset.xml |
ユーザー |
セルフ・プロファイルの変更 |
ModifyUserDataset.xml |
ユーザー |
ロールの作成 |
CreateRoleDataSet.xml |
ロール |
ロールの変更 |
ModifyRoleDataSet.xml |
ロール |
ロールの削除 |
DeleteRoleDataSet.xml |
ロール |
ロールの割当て |
AssignRolesDataset.xml |
ロール |
ロールの自己割当て |
AssignRolesDataset.xml |
ロール |
ロールの自己削除 |
RemoveRolesDataset.xml |
ロール |
ロールからの削除 |
RemoveRolesDataset.xml |
ロール |
リソースのプロビジョニング |
リクエスト・データセットなし |
リソース |
リソースの自己リクエスト |
リクエスト・データセットなし |
リソース |
プロビジョニング済リソースの有効化 |
リクエスト・データセットなし |
リソース |
プロビジョニング済リソースの変更 |
リクエスト・データセットなし |
リソース |
プロビジョニング済リソースの自己変更 |
リクエスト・データセットなし |
リソース |
プロビジョニング済リソースの無効化 |
リクエスト・データセットなし |
リソース |
リソースのプロビジョニング解除 |
リクエスト・データセットなし |
リソース |
リソースの自己プロビジョニング解除 |
リクエスト・データセットなし |
リソース |
注意:
|
ここでは、次の各項でリクエスト・データセットについて説明します。
リクエスト・データセットは、次の要素およびそれに関連付けられた属性を使用して定義します。
request-data-set要素は、リクエスト・データセットのルート要素であり、次の必須属性があります。
name: データセットの名前(CreateUserDataSetなど)
entity: データセットが関連付けられる、基礎となるエンティティ(ユーザーなど)
operation: データセットに関連付けられる操作(CREATEなど)
次の例は、request-data-set要素を示しています。
<request-data-set xmlns="http://www.oracle.com/schema/oim/request" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/schema/oim/request" name="CreateUserDataSet" entity="User" operation="CREATE">
このルート要素には、子要素がありません。
リソース・エンティティのリクエスト・データセットを作成するには、各リクエスト・タイプのリクエスト・データセット名の書式および操作を示す表23-2を参照してください。
表23-2 リソース・エンティティのリクエスト・データセット
リクエスト・タイプ | リクエスト・データセット名の書式 | 操作 |
---|---|---|
リソースのプロビジョニング |
ProvisionResource${ENTITY-NAME} |
PROVISION |
リソースの自己リクエスト |
ProvisionResource${ENTITY-NAME} |
PROVISION |
プロビジョニング済リソースの変更 |
ModifyResource${ENTITY-NAME} |
MODIFYRESOURCE |
プロビジョニング済リソースの自己変更 |
ModifyResource${ENTITY-NAME} |
MODIFYRESOURCE |
E-Business ROリソースのProvision Resourceデータセットのサンプル・データセット・タグを次に示します。
<request-data-set xmlns="http://www.oracle.com/schema/oim/request" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/schema/oim/request" name="ProvisionResourceE-Business RO" entity="E-Business RO" operation="PROVISION">
説明:
DataSetValidator
要素は、リクエスト・データセットのオプション要素です。request-data-set
要素の子要素の1つであり、データセット属性値を検証するためのユーザー定義のプラグイン詳細を記述します。リクエスト・データを送信中に検証するために、リクエスト・エンジンによって、実装されているプラグインが実行されます。検証が正常に終了すると、リクエストが作成されます。それ以外の場合、リクエストは作成されません。プラグイン・ロジックを実装する必要があります。DataSetValidatorは、各データセットに1つのみ定義できます。属性は次のとおりです。
name: この属性では、DataSetValidatorプラグインの論理名を指定します。
classname: この属性では、実装されているプラグイン・クラスの完全修飾名を指定します。
次の例は、DataSetValidator要素を示しています。
<DataSetValidator name="CreateUserDataValidator" classname="oracle.iam.requestactions.plugins.datavalidator.CreateUserDataValidator"/>
表23-1「Oracle Identity Managerに付属のデフォルトのリクエスト・データセット」に示されているデフォルトの各リクエスト・データセットでは、デフォルトのDataSetValidator要素が定義され、対応する実装がデフォルトで提供されています。これらのデフォルトのリクエスト・データセット内にあるDataSetValidatorのクラス名をカスタマイズされたクラスに変更して、カスタマイズされた検証を適用できます。
この子要素は、リクエスト・データセットと基礎となるエンティティ属性またはプロセス・フォーム・フィールドの間のデータ・フローにおいて、リクエスト終了時にエンティティ属性を定義するために使用されます。AttributeReferenceに対応するすべてのデータは、構成に基づき、リクエスト・ライフ・サイクルの様々なステージにおいてリクエスト・データとして収集されます。
1つのデータセットには、属性ごとに1つずつ指定して、複数のAttributeReference要素を含めることができます。
必須プロパティ
AttributeReferenceは、次の必須プロパティを使用して構成します。
name: 要素を識別する一意の名前。リクエストでは、この名前を使用してAttributeReferenceを参照します。値はString型です。
attr-ref: データセット値とプロセス・フォーム・フィールドまたは基礎となるエンティティ属性の間のマッピング・プロパティです。たとえば、Create Userデータセット内の定義<AttributeReference name="Organization" attr-ref="act_key">
によって、新しく作成し、ユーザー・エンティティのact_keyデータ・フィールドに移入するユーザーに対応するデータを、リクエストがOrganizationとして収集することが指定されます。
同様に、AttributeReference name="Domain" attr-ref="domain"
定義をProvision Emailリソース・データセットに関連付けて使用すると、リクエストは、プロビジョニングするリソースに対応するデータをDomainとして収集し、そのデータがプロセス・フォームのdomainフィールドに移入されます。したがって、リソースのプロビジョニング・モデルでは、attr-ref属性値をプロセス・フォームのフィールド・ラベル(SDC_LABEL)と同じにする必要があります。その他のモデルでは、attr-ref属性値を機能によって定義されている基礎となるエンティティのエンティティ属性にする必要があります。値はString型です。
リクエスト・データセット属性を基礎となるエンティティ属性にマップするには、データ・フローが必要です。たとえば、リソースのプロビジョニングなどの一部のリクエスト・モデルでは、リクエスト・データセットとプロセス・フォーム・データ・フィールドの間のデータ・フロー・マッピングを定義する必要があります。データ・フロー・マッピングは、データセットで次のように指定することによって設定できます。
<AttributeReference name="ATTRIBUTE_NAME" attr-ref="DATA_FIELD_NAME_IN_PROCESS_FORM" available-in-bulk="false" />
ユーザーベースおよびロールベースのリクエスト・データセットの場合、attr-ref値はユーザーおよびロール・エンティティ定義で指定されている属性名となります。リソースベースのリクエスト・モデルでは、attr-ref値をプロセス・フォーム属性のラベル名にする必要があります。ただし、子フォームについては、attr-ref値を子表名にする必要があります。
type: このプロパティでは、値のデータ型を指定します。たとえば、First Name属性のtype="String"
によって、「ユーザーの作成」リクエストUIの「名」フィールドでString型の入力を受け入れることが指定されます。サポートされているデータ型は次のとおりです。
Byte
Double
Integer
String
Short
Long
日付
ブール
ByteArray
Clob
注意: サポートされているすべてのデータ型の中で、Clobデータのみがリクエスト管理UIに表示されません。 Clob型の属性を承認者専用にしないでください。 |
widget: このプロパティは、データ収集時にデータ属性をUIに表示する方法を指定するために使用します。このプロパティの値はString型です。次のウィジェットがサポートされています。
text: ユーザーがテキストを1行で入力できるテキスト・ボックスを指定します。たとえば、First Name属性のwidget="text"
によって、「ユーザーの作成」リクエストUIの「名」フィールドがテキスト・ボックスになることが指定されます。
date: 日時型のフィールドを指定します。たとえば、Start Date属性のwidget="date"
によって、「ユーザーの作成」UIの「開始日」フィールドで日付を入力として受け入れることが指定されます。
entity: エンティティ・タイプのフィールドを指定します。widget="ENTITY"
を指定した場合、entity-type="ORGANIZATION"
などのentity-type
プロパティの値を指定する必要があります。このことは、「ユーザーの作成」リクエストUIの「組織」フィールドでOracle Identity Managerに存在する組織を検索および選択できる組織参照が可能であることを意味します。widget=ENTITY
を指定した場合、entity-typeの値をUSER
、ORGANIZATION
またはROLE
にする必要があります。
注意: ユーザー・エンティティ定義における組織の属性名である |
textarea: 複数行のテキストを入力するための大きいテキスト・フィールドを指定します。
dropdown: 値リスト(LOV)を指定します。widget="dropdown"を指定した場合は、lookupValues encoded-value="End User" decoded-value="Identity Only"
やlookupValues encoded-value="End-User Administrator" decoded-value="End-User Administrator"
などのlookupValues encoded-value
要素およびdecoded-value
要素のリストの値を指定する必要があります。このことは、「ユーザーの作成」リクエストUIの「ユーザー・タイプ」フィールドがLOVとして表示され、そのフィールドからユーザー・タイプ「アイデンティティのみ」または「エンドユーザー管理者」を選択できることを意味します。ただし、この章で後述するlookup-codeプロパティが定義されている場合は、lookupValuesを指定する必要はありません。
値リストの内容は次のいずれかにできます。
- データセット自体で指定されているlookupValuesの静的リスト。例:
lookupValues encoded-value="End User" decoded-value="Identity Only" and lookupValues encoded-value="End-User Administrator" decoded-value="End-User Administrator"
- この章で後述する定義済のlookup-codeプロパティに基づく参照値のリスト。
radio: ラジオ・ボタンを指定します。
checkbox: チェック・ボックス・フィールドを指定します。このウィジェットは、Boolean型の属性参照にのみ関連付けることができます。
lookup: 多数の値から値を選択できる参照フィールドを指定します。これを使用する場合、lookup-codeプロパティを指定する必要があります。
lookup-query: lookupQuery要素に関連付けられる検索および選択ウィジェットを指定します。
itresource-lookup: ITリソースに関連付けられ、利用可能なITリソース・インスタンスを表示する検索および選択ウィジェットを指定します。このウィジェットの詳細は、「E-Businessリソース・データセットのプロビジョニング」を参照してください。
length: この属性では、データ値の長さを指定します。たとえば、First Name属性のlength="80"
によって、「ユーザーの作成」リクエストUIの「名」フィールドで最大80文字の入力を受け入れることが指定されます。値は正の整数です。
available-in-bulk: 値はBoolean型です。このプロパティは、バルク・リクエストの作成中に属性参照を表示するかどうかを示します。バルク・リクエストの詳細は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドのバルク・リクエストおよび子リクエストに関する説明を参照してください。
リクエスト・データセット内の、シングル・ユーザーのコンテキストに関連する、名、ユーザーID、パスワードなどのフィールドは、バルク・リクエスト・シナリオでそれらのフィールドをavailable-in-bulk="false"としてマークすることによって、常に非表示にできます。これは、バルク・リクエストは複数のユーザーに適用でき、シングル・ユーザー・フィールドをリクエストUIに表示しても意味がないためです。プロビジョニング・リクエストでは、プロセス・フォームに直接入力する事前移入アダプタによってこれらのシングル・ユーザー・フィールドにデータを移入できます。available-in-bulk="false"として指定した属性は、必須にできません。事前移入アダプタを使用してリクエスト・データセットを作成した場合、名、ユーザーID、パスワードなど、これらのシングル・ユーザー・フィールドには、必須制約を割り当てることはできません。シングル・ユーザーがセルフ・サービスを使用してリソースを要求する場合に便利なように、必須制約をシングル・ユーザー・フィールドに割り当てる場合は、リクエスト・データセットで、ユーザー固有のデータを移入するためのPrePopulationAdapter要素を使用します。リクエスト・データセットでPrePopulationAdapter要素を使用する方法の詳細は、「PrePopulationAdapter要素」を参照してください。
オプション・プロパティ
AttributeReferenceを構成するには次のオプション属性を使用できます。
required: リクエストの送信時にデータ値を指定する必要があることを示すフラグ・プロパティ。値はBoolean型です。このプロパティが指定されていない場合、使用されるデフォルト値はfalseです。
基礎となるエンティティで対応するattr-refフィールドが必須である属性参照は、required="true"
として指定する必要があります。たとえば、Organizationはユーザー・エンティティの必須属性です。したがって、SelfCreateUserDataset.xmlまたはCreateUserDataSet.xml内の対応する属性参照は、このフィールドが基礎となるエンティティでも必須であることを反映して、required="true"
として指定します。
Masked: データ値をマスクするかどうかを指定するために使用するフラグ・プロパティ。値がmaskedに設定されている場合、リクエスト・エンジンは常に値をアスタリスクとして表示します。値はBoolean型です。このプロパティが指定されていない場合、使用されるデフォルト値はfalseです。
approver-only: 承認者がデータ値を指定して編集する必要があることを指定するために使用されるフラグ・プロパティ。このフラグを設定すると、リクエスタは対応するデータ値を指定できません。値はBoolean型です。このプロパティが指定されていない場合、使用されるデフォルト値はfalseです。
属性がrequired="true"およびapprover-only="true"として指定されている場合、承認者はリクエストを承認する前にこの属性の値を指定する必要があります。
承認プロセスでは子表のデータの追加がサポートされていないため、承認プロセス中に子表(複数値)フィールドに指定できる値は1つのみです。
entity-type: このプロパティは、サポートされているデータ値の導出元エンティティを関連付けるために使用し、導出されたデータ値はリクエストUIから選択できます。例:
<AttributeReference name="Organization" attr-ref="act_key" available-in-bulk="false" type="Long" length="20" widget="ENTITY" required="true" entity-type="ORGANIZATION"/>
この定義を使用すると、UIに参照ウィジェットが表示され、ユーザーはOracle Identity Managerでそのウィジェットを使用して組織を検索および選択できます。
entity-typeプロパティを定義する場合は、ウィジェットをENTITYとして定義する必要があり、UIにはユーザーがエンティティの検索および選択に使用できる参照ウィジェットが表示されます。
lookup-code: このプロパティは、定義済のlookup-codeに基づいて使用可能なLKU/LKV値をサポートされているデータとして関連付けるために使用します。次に例を示します。
<AttributeReference name="Responsibility Name" attr-ref="Name" type="String" length="30" widget="lookup" required="false" available-in-bulk="true" lookup-code="Oracle.Responsibility.Name"/>
この定義では、lookup-code Oracle.Responsibility.Nameのすべてのエンコードまたはデコードされた値をレンダリングします。
lookup-codeプロパティを定義する場合は、ウィジェットをlookupとして定義でき、UIにはユーザーが参照値の検索および選択に使用できる参照ウィジェットが表示されます。
lookup-codeを定義する場合、ウィジェットをdropdownにすることもできます。例:
<AttributeReference name="Role" attr-ref="Role" available-in-bulk="false" type="String" length="20" widget="dropdown" lookup-code="Lookup.Users.Role" required="true"/>
この場合、ユーザー・タイプがドロップダウンとして表示され、ユーザーはいずれかの値を選択できます。
参照コードが制限された数の値に関連付けられている場合にdropdownを使用できます。ただし、参照コードが多数の値に関連付けられている場合は、値の検索および選択が可能な参照ウィジェットを使用します。
itresource-type: このプロパティは、定義済のitresource-typeの使用可能なITリソース・インスタンスを関連付けるために使用します。次に例を示します。
<AttributeReference name="Server" attr-ref="Server Name" type="String" widget="itresource-lookup" required="true" itresource-type="EBIZServer" available-in-bulk="true" length="20"/>
この定義では、EBIZServer itresource-typeのすべてのITリソース・インスタンスをレンダリングします。
itresource-typeプロパティを定義する場合は、ウィジェットをitresource-lookupとして定義する必要があり、UIにはユーザーがITリソース・インスタンスの検索および選択に使用できる参照ウィジェットが表示されます。
primary: データセット属性に複数の値を指定できるようにするかどうかを指定するために使用するフラグ・プロパティ。このフラグは、子表のコンテキストでのみデータセット属性に対して設定できます。primaryプロパティの詳細は、「子データ」を参照してください。
mls: データセット属性をマルチ言語サポート(MLS)型にするかどうかを指定するために使用するフラグ・プロパティ。値はBoolean型です。このプロパティが指定されていない場合、使用されるデフォルト値はfalseです。
entitlement: データセット属性をentitlement型にするかどうかを指定するために使用するフラグ・プロパティ。値はBoolean型です。このプロパティが指定されていない場合、使用されるデフォルト値はfalseです。
hidden: データ値を承認者に対して非表示にするかどうかを指定するために使用するフラグ・プロパティ。このデータ値は、承認者に対してのみ非表示になりますが、リクエストの送信時または他の方法でリクエスタからデータを収集することはできます。値はBoolean型です。このプロパティが指定されていない場合、使用されるデフォルト値はfalseです。
この子要素は、関連付けられるOracle Identity Managerプラグイン・クラスを定義するために使用し、このプラグイン・クラスは対応する属性のデータ値の生成に役立ちます。AttributeReference定義で各属性に最大1つのPrePopulationAdapter要素を関連付けることができます。属性値は、事前移入アダプタ・プラグインによって返された値を使用して、UIからのリクエストの作成中に事前移入されます。次の属性があります。
name: この属性は、アダプタの論理名を指定するために使用します。
classname: この属性は、プラグイン・クラスの完全修飾クラス名を指定するために使用します。
注意: リクエスト・データセット属性がPrePopulationAdapterを使用して構成されている場合でも、その値をリクエスト・テンプレートで制限できます。その結果、事前移入は行われず、テンプレートで制限された値がリクエスト作成UIに表示されます。 |
次の例は、AttributeReferenceのPrePopulateAdapterを関連付ける方法を示しています。
<AttributeReference name="Organization" attr-ref="act_key" available-in-bulk="false" type="Long" length="20" widget="ENTITY" required="true" entity-type="ORGANIZATION"/> <PrePopulationAdapter name="prepopulateOrg" classname="my.sample.package.SamplePrePopulateOrg" /> </AttributeReference>
Oracle Identity Managerにmy.sample.package.SamplePrePopulateOrgクラスをプラグインとして登録する必要があります。
例23-1は、Active Directory(AD)をプロビジョニングするためのサンプル・データセットを示しており、事前移入が使用されています。
例23-1 ADリソースのプロビジョニング
<?xml version="1.0" encoding="UTF-8"?>
<request-data-set xmlns="http://www.oracle.com/schema/oim/request" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/schema/oim/request" name="ProvisionResourceAD" entity="AD" operation="PROVISION">
<AttributeReference name="Domain" attr-ref="domain" available-in-bulk="true" type="String" length="20" widget="text">
<PrePopulationAdapter classname="oracle.iam.request.DomainPrepopulateAdapter"/>
</AttributeReference>
<AttributeReference name="Login" attr-ref="login" available-in-bulk="true" type="String" length="20" widget="text"/>
<AttributeReference name="Organization" attr-ref="organization" available-in-bulk="true" type="String" length="20" widget="text" required="true">
<PrePopulationAdapter name="org" classname="oracle.iam.request.OrgPrepopulateAdapter"/>
</AttributeReference>
<AttributeReference name="EmployeeType" attr-ref="EmployeeType" available-in-bulk="true" approver-only="true" type="String" length="20" widget="text"
required="true">
</AttributeReference>
<AttributeReference name="Role" attr-ref="role"available-in-bulk="true" type="String" length="20" widget="text"><AttributeReference name="RoleName" attr-ref="role"available-in-bulk="true" type="String" length="20" widget="text" entitlement="true">
</AttributeReference>
<AttributeReference name="Description" attr-ref="description" available-in-bulk="true" type="String" length="20" widget="text">
</AttributeReference>
</AttributeReference>
</request-data-set>
ここで、Roleは子属性RoleNameおよびDescriptionを持つ子フォームです。
ADリソースをプロビジョニングするためのデータセットは、Organization属性に事前移入アダプタが関連付けられていることを示しています。Organization属性値は、事前移入アダプタ・プラグインによって返された値を使用して、リクエストの作成中に事前移入されます。
プラグインのprepopulateメソッドから返される値は、リクエスト・データセットで構成されている型に対応する型である必要があります。たとえば、例23-1のOrganization属性の場合は、Organization属性の型がデータセットでStringとして構成されているため、OrgPrepopulateAdapterのprepopulateメソッドではjava.lang.String型の値を返します。
AttributeReferenceの子要素であるlookupValues要素は、AttributeReference定義に関連付けられるエンティティ定義の一連の許容データ値を定義するために使用します。この要素の属性は次のとおりです。
decoded-value: UIからのリクエストの作成中にリクエスタに表示されるデータ値。
encoded-value: リクエスト・データに格納される実際のデータ値であり、データ・フローに使用されます。リクエスト作成UIから選択されたデコード済の値に基づいて、対応するエンコーディング値がリクエスト・データに格納されます。
次のサンプル・コード・スニペットは、User Typeエンティティ属性にlookupValuesを使用するAttributeReferenceを示しています。
<AttributeReference name="User Type" attr-ref="Xellerate Type" available-in-bulk="false" type="String" length="30" widget="dropdown" required="true"> <lookupValues encoded-value="End-User Admin" decoded-value="End-User Administrator"/> <lookupValues encoded-value="Identity" decoded-value="Identity"/> <lookupValues encoded-value="End-User" decoded-value="End-User"/> </AttributeReference>
User Type属性には、3つの値End-User Admin、Identity Only、End-Userのいずれかを指定できます。ただし、データ収集時には、リクエスタに対して対応するデコード済の値(それぞれEnd-User Administrator、IdentityおよびEnd-User)がドロップダウン・リストに表示されます。エンコード済の値は、データ・フローの一部としてマップされたエンティティ属性フィールドに移入されます。
AttributeReferenceのこの子要素は、SQLに基づいて一連のデータ値を動的に導出するために使用します。リクエストUIでは、定義済のlookupQueryに基づいてすべての値が参照ウィジェットに表示されます。
<AttributeReference name="adminlogin" attr-ref="adminlogin" type="String" length="20" widget="lookup-query" available-in-bulk="true"> <lookupQuery lookup-query="SELECT USR_KEY as UKEY, USR_LOGIN as ULOGIN FROM TEMP_USR where USR_TYPE='$Form Data.admintype'" display-field="ULOGIN" save-field="UKEY"/> </AttributeReference>
この例では、SQL問合せに基づき、ユーザー・キーおよびユーザー・ログインが表temp_usrから問い合されます。この要素のプロパティは次のとおりです。
lookup-query: このプロパティの値は、Oracle Identity Managerデータベースでサポートされている汎用のSQL問合せとなります。この問合せは、同じデータセットの別の属性参照に依存できます。この例では、'$Form Data.admintype'への参照があります。このことは、属性参照adminloginが属性参照admintypeに依存していることを意味します。リクエスタが属性admintypeに指定する値は、参照で属性adminloginの値をフェッチするために使用されます。
display-field: このプロパティ値は、ユーザーが参照ウィジェットから値を選択した後、そのUI属性においてエンドユーザーに表示する必要がある、選択した列のいずれかの別名です。
save-field: このプロパティ値は、ユーザーが参照ウィジェットから値を選択した後、システムに内部的に保存する必要がある、選択した列のいずれかの別名です。
UI属性のdisplay-fieldとsave-fieldは同じにできます。
注意: 参照問合せでは、save-fieldおよびdisplay-fieldとして使用する列の別名が必要となります。 |
リクエスト作成の一環として、基礎となるエンティティを参照しないデータの収集が必要になる場合があります。このことを行うために、Attribute要素を使用できます。リクエスト・データセット内に定義されるAttributeには、基礎となるエンティティへのマッピングは必要ありません。これらの属性はマッピングを必要としないため、次の方法で定義できます。
<Attribute name="ATTRIBUTE_NAME" length="10" type="integer" widget="text" available-in-bulk="false"/>
属性はリクエストの詳細に表示されます。これらは承認者が参照して承認の意思決定に使用できます。
Attribute要素はAttributeReference要素に似ていますが、相違点があります。Attribute要素のデータ値は、リクエストのコンテキストでのみ使用でき、データ・フローに関与できません。AttributeReferenceで使用できる他のすべてのプロパティは、attr-ref属性以外の属性でも使用できます。
リクエストによって収集する必要があるデータは、リクエスト・データセットのXMLファイルで定義します。例23-2は、Create UserデータセットのサンプルXMLコードです。
例23-2 Create Userデータセット
<?xml version="1.0" encoding="UTF-8"?> <request-data-set xmlns="http://www.oracle.com/schema/oim/request" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/schema/oim/request" name="CreateUserDataSet" entity="User" operation="CREATE"> <DataSetValidator name="CreateUserDataValidator" classname="oracle.iam.requestactions.plugins.datavalidator.CreateUserDataValidator"/> <AttributeReference name="First Name" attr-ref="First Name" available-in-bulk="false" type="String" length="80" widget="text" required="false" mls="false"/> <AttributeReference name="Middle Name" attr-ref="Middle Name" available-in-bulk="false" type="String" length="80" widget="text" required="false" mls="false"/> <AttributeReference name="Last Name" attr-ref="Last Name" available-in-bulk="false" type="String" length="80" widget="text" required="true" mls="false"/> <AttributeReference name="User Login" attr-ref="User Login" available-in-bulk="false" type="String" length="256" widget="text" required="false"/> <AttributeReference name="Password" attr-ref="usr_password" available-in-bulk="false" type="String" length="128" widget="text" required="false" masked="true"/> <AttributeReference name="Password Generated" attr-ref="Password Generated" available-in-bulk="false" type="Clob" length="1" widget="text" required="false"/> <AttributeReference name="Organization" attr-ref="act_key" available-in-bulk="false" type="Long" length="256" widget="ENTITY" required="true" entity-type="ORGANIZATION"/> <AttributeReference name="User Type" attr-ref="Xellerate Type" available-in-bulk="false" type="Boolean" length="30" widget="checkbox" required="false"/> <AttributeReference name="Role" attr-ref="Role" available-in-bulk="false" type="String" length="255" widget="dropdown" lookup-code="Lookup.Users.Role" required="true"/> <AttributeReference name="User Manager" attr-ref="usr_manager_key" available-in-bulk="false" type="Long" length="382" widget="ENTITY" required="false" entity-type="USER"/> <AttributeReference name="Country" attr-ref="Country" available-in-bulk="false" type="String" length="100" widget="text" required="false"/> <AttributeReference name="Common Name" attr-ref="Common Name" available-in-bulk="false" type="String" length="240" widget="text" required="false" mls="false"/> <AttributeReference name="Display Name" attr-ref="Display Name" available-in-bulk="false" type="String" length="382" widget="text" required="false" mls="true"/> <AttributeReference name="Department Number" attr-ref="Department Number" available-in-bulk="false" type="String" length="80" widget="text" required="false"/> <AttributeReference name="Description" attr-ref="Description" available-in-bulk="false" type="String" length="2000" widget="text" required="false"/> <AttributeReference name="Employee Number" attr-ref="Employee Number" available-in-bulk="false" type="String" length="80" widget="text" required="false"/> <AttributeReference name="Fax" attr-ref="Fax" available-in-bulk="false" type="String" length="20" widget="text" required="false"/> <AttributeReference name="Generation Qualifier" attr-ref="Generation Qualifier" available-in-bulk="false" type="String" length="20" widget="text" required="false" mls="false"/> <AttributeReference name="Home Phone" attr-ref="Home Phone" available-in-bulk="false" type="String" length="20" widget="text" required="false"/> <AttributeReference name="Hire Date" attr-ref="Hire Date" available-in-bulk="false" type="Date" length="50" widget="date" required="false"/> <AttributeReference name="Home Postal Address" attr-ref="Home Postal Address" available-in-bulk="false" type="String" length="256" widget="text" required="false"/> <AttributeReference name="Locality Name" attr-ref="Locality Name" available-in-bulk="false" type="String" length="80" widget="text" required="false"/> <AttributeReference name="Email" attr-ref="Email" available-in-bulk="false" type="String" length="256" widget="text" required="false"/> <AttributeReference name="Mobile" attr-ref="Mobile" available-in-bulk="false" type="String" length="20" widget="text" required="false"/> <AttributeReference name="Pager" attr-ref="Pager" available-in-bulk="false" type="String" length="20" widget="text" required="false"/> <AttributeReference name="Postal Address" attr-ref="Postal Address" available-in-bulk="false" type="String" length="256" widget="text" required="false" mls="false"/> <AttributeReference name="PO Box" attr-ref="PO Box" available-in-bulk="false" type="String" length="20" widget="text" required="false"/> <AttributeReference name="Postal Code" attr-ref="Postal Code" available-in-bulk="false" type="String" length="30" widget="text" required="false"/> <AttributeReference name="usr_locale" attr-ref="usr_locale" available-in-bulk="false" type="String" length="80" widget="text" required="false"/> <AttributeReference name="State" attr-ref="State" available-in-bulk="false" type="String" length="80" widget="text" required="false" mls="false"/> <AttributeReference name="Street" attr-ref="Street" available-in-bulk="false" type="String" length="80" widget="text" required="false"/> <AttributeReference name="Telephone Number" attr-ref="Telephone Number" available-in-bulk="false" type="String" length="20" widget="text" required="false"/> <AttributeReference name="Title" attr-ref="Title" available-in-bulk="false" type="String" length="80" widget="text" required="false" mls="false"/> <AttributeReference name="Initials" attr-ref="Initials" available-in-bulk="false" type="String" length="10" widget="text" required="false"/> <AttributeReference name="Start Date" attr-ref="Start Date" available-in-bulk="false" type="Date" length="50" widget="date" required="false"/> <AttributeReference name="End Date" attr-ref="End Date" available-in-bulk="false" type="Date" length="50" widget="date" required="false"/> <AttributeReference name="LDAP Organization Unit" attr-ref="LDAP Organization Unit" available-in-bulk="false" type="String" length="80" widget="text" required="false" mls="false"/> <AttributeReference name="LDAP Organization" attr-ref="LDAP Organization" available-in-bulk="false" type="String" length="80" widget="text" required="false" mls="false"/> <AttributeReference name="usr_timezone" attr-ref="usr_timezone" available-in-bulk="false" type="String" length="100" widget="text" required="false" mls="false"/> <AttributeReference name="Number Format" attr-ref="Number Format" available-in-bulk="false" type="String" length="30" widget="dropdown" lookup-code="Lookup.Users.NumberFormat" required="false" mls="false"/> <AttributeReference name="Currency" attr-ref="Currency" available-in-bulk="false" type="String" length="20" widget="dropdown" lookup-code="Lookup.Users.Currency" required="false" mls="false"/> <AttributeReference name="Date Format" attr-ref="Date Format" available-in-bulk="false" type="String" length="20" widget="dropdown" lookup-code="Lookup.Users.DateFormat" required="false" mls="false"/> <AttributeReference name="Time Format" attr-ref="Time Format" available-in-bulk="false" type="String" length="20" widget="dropdown" lookup-code="Lookup.Users.TimeFormat" required="false" mls="false"/> <AttributeReference name="Embedded Help" attr-ref="Embedded Help" available-in-bulk="false" type="String" length="10" widget="dropdown" lookup-code="Lookup.Users.EmbeddedHelp" required="false" mls="false"/> <AttributeReference name="Font Size" attr-ref="Font Size" available-in-bulk="false" type="String" length="10" widget="dropdown" lookup-code="Lookup.Users.FontSize" required="false" mls="false"/> <AttributeReference name="Color Contrast" attr-ref="Color Contrast" available-in-bulk="false" type="String" length="10" widget="dropdown" lookup-code="Lookup.Users.ColorContrast" required="false" mls="false"/> <AttributeReference name="Accessibility Mode" attr-ref="Accessibility Mode" available-in-bulk="false" type="String" length="20" widget="dropdown" lookup-code="Lookup.Users.AccessibilityMode" required="false" mls="false"/> <AttributeReference name="FA Language" attr-ref="FA Language" available-in-bulk="false" type="String" length="100" widget="text" required="false"/> <AttributeReference name="FA Territory" attr-ref="FA Territory" available-in-bulk="false" type="String" length="100" widget="text" required="false"/> <AttributeReference name="User Name Preferred Language" attr-ref="User Name Preferred Language" available-in-bulk="true" type="String" length="20" widget="lookup-query" required="false"> <lookupQuery lookup-query="select mls_locale_code as USR_NAME_PREFERRED_LANG from mls_locale where ( locale_flag=0 OR locale_flag=1 ) order by mls_locale_code asc" display-field="USR_NAME_PREFERRED_LANG" save-field="USR_NAME_PREFERRED_LANG"/> </AttributeReference> <Attribute name="Roles " available-in-bulk="false" type="Clob" length="2048" widget="text" required="false"/> <Attribute name="Policy Name" available-in-bulk="false" type="Clob" length="1024" widget="text" required="false"/> <Attribute name="RequestorID" available-in-bulk="false" type="Clob" length="1024" widget="text" required="false"/> <Attribute name="FAOpData" available-in-bulk="false" type="Clob" length="4096" widget="text" required="false" /> </request-data-set>
他の属性で構成される複数の値または属性を格納するための属性が必要になる場合があります。そのために1つ以上の子属性を構成できます。たとえば、エンティティ・タイプUserのEmail ID属性は複数の値を格納する必要があります。このため、リクエスト・データセットで次のように構成できます。
<Attribute name="Email"> <Attribute name="ID" length="20" type="string" widget="text" /> </Attribute>
1つの属性が複数の属性で構成されるようにすることが必要になる場合もあります。たとえば、Oracle Apps User Responsibilities属性は、3つの属性(Responsibility Start Date、Responsibility End DateおよびResponsibility Name)で構成する必要があります。この属性は、リクエスト・データセットで次のように構成できます。
<AttributeReference name="Oracle Apps User Responsibilities" attr-ref="UD_RESPONS" type="String" length="20" widget="text" available-in-bulk="true"> <AttributeReference name="Responsibility Start Date" attr-ref="Responsibility Start Date" type="Date" widget="date" required="false" available-in-bulk="true" length="100" /> <AttributeReference name="Responsibility End Date" attr-ref="Responsibility End Date" type="Date" widget="date" required="false" available-in-bulk="true" length="100" /> <AttributeReference name="Responsibility Name" attr-ref="Responsibility Name" type="String" length="30" widget="lookup" required="false" available-in-bulk="true" lookup-code="Oracle.Responsibility.Name" primary="true"/>. </AttributeReference>
ここで、Responsibility Start Date、Responsibility End DateおよびResponsibility Nameの関連付けは保持され、3つの属性でOracle Apps User Responsibilities子属性の値が構成されます。
注意:
|
リクエストの作成中、子データは表に表示され、ポップアップ・ウィンドウから子データを追加できます。このシナリオでは、リクエスタは開始日と終了日が同じである複数の職責を追加する必要があります。Responsibility Nameをprimaryとして指定すると、リクエスタは開始日と終了日が同じである複数の職責を選択できるようになります。
primaryプロパティを使用すると、リクエスタは、子行を追加するときに表示されるウィンドウでResponsibility Name属性に対して複数の値を選択できるようになります。Responsibility Start Date属性およびResponsibility End Date属性については、単一値のみを指定できます。これにより、開始日と終了日の値が同じである選択された職責名ごとに1行ずつ、複数の行が子表に追加されます。
例23-3は、E-Businessリソースをプロビジョニングするためのリクエスト・データセットのサンプルXMLコードを示しています。
例23-3 E-Businessリソース・データセットのプロビジョニング
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <request-data-set xmlns = "http://www.oracle.com/schema/oim/request" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" operation = "PROVISION" entity = "eBusiness Suite User" name = "ProvisionResourceeBusiness Suite User" xsi:schemaLocation = "http://www.oracle.com/schema/oim/request"> <AttributeReference itresource-type = "eBusiness Suite UM" available-in-bulk = "true" required = "true" length = "20" widget = "itresource-lookup" type = "Long" attr-ref = "EBS Server" name = "EBS Server"/> <AttributeReference available-in-bulk = "true" length = "240" widget = "text" type = "String" attr-ref = "Description" name = "Description"/> <AttributeReference available-in-bulk = "false" length = "240" widget = "text" type = "String" attr-ref = "Email" name = "Email"/> <AttributeReference available-in-bulk = "true" length = "80" widget = "text" type = "String" attr-ref = "Fax" name = "Fax"/> <AttributeReference available-in-bulk = "false" length = "256" widget = "text" type = "String" attr-ref = "SSO User ID" name = "SSO User ID"/> <AttributeReference available-in-bulk = "false" length = "30" widget = "text" type = "String" attr-ref = "Person ID" name = "Person ID"/> <AttributeReference available-in-bulk = "true" length = "10" widget = "text" type = "String" attr-ref = "UD_EBS_RESP" name = "eBusiness Suite Responsibilities"> <AttributeReference name = "Application Name" attr-ref = "Application Name" type = "String" length = "256" widget = "lookup-query" available-in-bulk = "true" required = "true"> <lookupQuery lookup-query = "select lkv_encoded as Value,lkv_decoded as Description from lkv lkv, lku lku where lkv.lku_key=lku.lku_key and lku_type_string_key='Lookup.EBS.Application' and instr(lkv_encoded,concat('$Form data.EBS Server', '~'))>0" display-field = "Description" save-field = "Value"/> </AttributeReference> <AttributeReference name = "Responsibility Name" attr-ref = "Responsibility Name" type = "String" length = "256" widget = "lookup-query" available-in-bulk = "true" required = "true" primary = "true"> <lookupQuery lookup-query = "select lkv_encoded as Value,lkv_decoded as Description from lkv lkv,lku lku where lkv.lku_key=lku.lku_key and lku_type_string_key='Lookup.EBS.Responsibility' and instr(lkv_encoded,concat('$Form data.Application Name','~'))>0" display-field = "Description" save-field = "Value"/> </AttributeReference> <AttributeReference available-in-bulk = "true" length = "20" widget = "date" type = "Date" attr-ref = "Effective Start Date" name = "Effective Start Date"/> </AttributeReference> <AttributeReference available-in-bulk = "true" length = "10" widget = "text" type = "String" attr-ref = "UD_EBS_RLS" name = "eBusiness Suite User Role Grants"> <AttributeReference name = "Application Name" attr-ref = "Application Name" type = "String" length = "256" widget = "lookup-query" available-in-bulk = "true" required = "true"> <lookupQuery lookup-query = "select lkv_encoded as Value,lkv_decoded as Description from lkv lkv, lku lku where lkv.lku_key=lku.lku_key and lku_type_string_key='Lookup.EBS.Application' and instr(lkv_encoded,concat('$Form data.EBS Server', '~'))>0" display-field = "Description" save-field = "Value"/> </AttributeReference> <AttributeReference name = "Role Name" attr-ref = "Role Name" type = "String" length = "256" widget = "lookup-query" available-in-bulk = "true" required = "true" primary = "true"> <lookupQuery lookup-query = "select lkv_encoded as Value,lkv_decoded as Description from lkv lkv,lku lku where lkv.lku_key=lku.lku_key and lku_type_string_key='Lookup.EBS.UMX.Roles' and instr(lkv_encoded,concat('$Form data.Application Name','~'))>0" display-field = "Description" save-field = "Value"/> </AttributeReference> <AttributeReference available-in-bulk = "true" length = "20" widget = "date" type = "Date" attr-ref = "Start Date" name = "Start Date"/> </AttributeReference> </request-data-set>
E-Businessリソース・データセットをプロビジョニングするためのサンプルXMLコードの説明は次のとおりです。
Oracle Apps User Responsibilities属性がResponsibility Start Date、Responsibility End DateおよびResponsibility Name子属性の親として定義されています。ユーザーはOracle Apps User Responsibilitiesに1つ以上の値を指定できます。リクエスト作成UIでは、これは「職責開始日」、「職責終了日」および「職責名」列を含む「Oracle Appsユーザーの職責」という見出しの表として表示されます。
親属性については、attr-refの値をプロセス・フォームの子表の名前にする必要があります。この例では、UD_RESPONSです。
Responsibility Start Date、Responsibility End DateおよびResponsibility Name属性は子表UD_RESPONSの列になります。
子属性については、attr-refの値をプロセス・フォームの子表のフィールド・ラベル値にする必要があります。
Oracle Identity Managerでは、子プロセス・フォームを定義し、それをリソースの親プロセス・フォームに関連付けることができます。親フォームの属性は、リクエスト・データセットの属性参照としてモデル化されます。子フォームの属性は、子データの属性参照としてモデル化されます。
E-Businessリソースのリソースのプロビジョニング・リクエスト・モデルに基づくリクエストの例について考えます。次の表は、親プロセス・フォームの定義の詳細および子プロセス・フォームの詳細を示しています。
子フォーム | 属性名 |
---|---|
UD_RESPONS |
Responsibility Start Date |
Responsibility End Date |
|
Responsibility Name |
AttributeReference name="Server"
では、widgetの値がitresource-lookup
として指定されています。これは、「サーバー」フィールドで、ユーザーが使用可能なITリソース・パラメータを使用した参照を使用できることを示しています。widget="itresource-lookup"
の場合、itresource-type
要素の値を指定する必要があります。たとえば、itreource-type="EBIZServer"
は、「サーバー」参照フィールドで、EBIZServer ITリソース・タイプのすべてのITリソース・パラメータを選択できることを示します。ユーザーは、この参照を使用してITリソース・インスタンスを検索および選択できます。
注意: ITリソース・タイプは、コネクタに関連付けられたすべてのITリソース定義のテンプレートです。ITリソース・タイプは、その特定のITリソース・タイプのすべてのITリソース・インスタンス(サーバー、コンピュータなど)に共通するパラメータを指定します。ITリソースおよびITリソース・タイプの詳細は、Oracle Fusion Middleware Oracle Identity Manager管理者ガイドのコネクタ・ライフサイクルの管理に関する説明を参照してください。 |
関連項目: リクエスト・テンプレートの作成ウィザードにおける属性の表示方法の詳細は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドのリクエスト・テンプレートの作成に関する説明を参照してください。 |
Oracle Identity Managerには、すべてのリソースに共通のデフォルト・データセットがあります。共通リクエスト・データセットでは、すべてのリソースに共通の属性を定義します。
ResourceCommonDatasetは、すべてのリソースに共通のデフォルトの共通データセットです。すべてのリソースに共通のService Account属性を定義します。
その結果、選択したリソースにデータセットがない場合でも、共通データセットの属性がリクエストの作成中のリクエスト・データの収集時に表示されます。リクエスト・データの収集時には、共通データセットおよびリソース固有のデータセットの両方の属性が表示されます。つまり、リクエスト収集データは、共通データセットおよびエンティティに関連付けられているデータセットを結合したものです。
注意: 共通リクエスト・データセットは、Oracle Identity Managerに付属しており、カスタマイズできません。 |
すべてのデフォルトのリクエスト・データセットには、データセット属性の翻訳があります。ただし、作成したカスタム・リクエスト・データセットについては、そのデータセット属性のローカライゼーションをカスタム・リソース・バンドルに追加する必要があります。
ここでは、次の各項でリクエスト・データセットおよびデータセット属性のローカライズされた値の構成について説明します。
この項では、データセット属性のローカライゼーション・サポートを有効にするための規則について説明します。たとえば、CreateUserDataSet.xmlでは、role属性が次のように定義されています。
<AttributeReference name="Role" attr-ref="Role" available-in-bulk="false" type="String" length="20" widget="dropdown" lookup-code="Lookup.Users.Role" required="true"/>
この属性の翻訳は次のように構成されています。
request.dataset.User.Role=USER_TYPE
ここで、request.dataset.User.Roleは翻訳キー、USER_TYPEは実際の翻訳または翻訳値です。翻訳キーをフレーム化すると実際の翻訳が決定されます。リクエスト・データセット属性に関連する翻訳キーは、request.datasetで始まる必要があります。この後に、属性のエンティティ・タイプ、エンティティ・サブタイプ(存在する場合)、親属性名(存在する場合)、属性名、事前定義された値などのオブジェクト名が続きます。翻訳キーのタイプは、次のように分類されます。
非汎用リクエスト・モデルのリクエスト・データセット属性
非汎用リクエスト・モデルのリクエスト・データセットの翻訳キーには、エンティティ・サブタイプがデータセットに存在しないため、エンティティ・サブタイプを含めないでください。たとえば、CreateUserDataSet.xml内のRole属性は、次のように定義されています。
<AttributeReference name="Role" attr-ref="Role" available-in-bulk="false" type="String" length="20" widget="dropdown" lookup-code="Lookup.Users.Role" required="true"/>
翻訳キーは次のとおりです。
request.dataset.User.Role
説明:
request.datasetは、データセット属性の先頭に必要な固定文字列です。
Userはエンティティ・タイプに対応します。これは、CreateUserRequestModel.xmlファイル内のrequest-model要素のentity-typeプロパティと同じである必要があります。リクエスト・モデルに応じてResourceまたはRoleにできます。
Roleは、翻訳が追加される実際の属性に対応します。データセット内のRole属性参照のnameプロパティに対応します。
汎用リクエスト・モデルのリクエスト・データセット属性
汎用リクエスト・モデルのリクエスト・データセットの翻訳キーには、エンティティ・サブタイプを含める必要があります。たとえば、ProvisionResourceeBusiness Suite User.xml内のEBS Server属性については、次のように定義する必要があります。
<AttributeReference name="EBS Server" attr-ref="EBS Server" type="Long" widget="itresource-lookup" required="true" available-in-bulk="true" itresource-type="eBusiness Suite UM" length="40"/>
翻訳キーは次のとおりです。
request.dataset.Resource.eBusiness\ Suite\ User.EBS\ Server=EBS Server
説明:
request.datasetは、データセット属性の先頭に必要な固定文字列です。
Resourceは、ProvisionResourceRequest.xmlファイル内のエンティティ・タイプに対応します。
eBusiness\ Suite\ Userはエンティティ・サブタイプであり、ProvisionResourceeBusiness Suite User.xml内のrequest-data-set要素のentityプロパティと同じです。これはオプションであり、この例ではリソースのプロビジョニング・リクエスト・モデルが汎用タイプであるために含まれています。
EBS\ Serverは、翻訳が追加される実際の属性に対応します。データセット内のEBS Server属性参照のnameプロパティに対応します。
子属性
子属性については、翻訳キーにさらに親属性名が含まれ、これは属性を一意に識別するために必要です。たとえば、ProvisionResourceeBusiness Suite User.xml内のApplication Name属性は次のとおりです。
<AttributeReference available-in-bulk="true" length="10" widget="text" type="String" attr-ref="UD_EBS_RESP" name="EBS_RSO">
<AttributeReference name="Application Name" attr-ref="APPLICATION_NAME" type="String" length="256" widget="lookup-query" available-in-bulk="true" required="true">
<lookupQuery lookup-query="select lkv_encoded,lkv_decoded from lkv lkv, lku lku where lkv.lku_key=lku.lku_key and lku_type_string_key='Lookup.EBS.Application' and instr(lkv_encoded,concat('$Form data.EBS Server', '~'))>0" display-field="lkv_decoded" save-field="lkv_encoded"/>
</AttributeReference>
</AttributeReference>
APPLICATION_NAMEはEBS_RSO属性の子属性です。APPLICATION_NAMEの翻訳キーの構成は次のとおりです。
request.dataset.Resource.eBusiness\ Suite\ User.EBS_RSO.Application\ Name = APPLICATION_NAME
request.datasetは、データセット属性の先頭に必要な固定文字列です。
Resourceは、ProvisionResourceRequest.xmlファイル内のエンティティ・タイプに対応します。
eBusiness\ Suite\ Userは、ProvisionResourceeBusiness Suite User.xml内のrequest-data-set要素のentityプロパティです。これはエンティティ・サブタイプとも呼ばれます。これはオプションであり、この例ではリソースのプロビジョニング・リクエスト・モデルが汎用タイプであるために含まれています。
EBS_RSOはEffective Start Date属性の親属性であり、これにより一意に識別されます。EBS_RSO属性参照のnameプロパティに対応します。
Application\ Nameは、翻訳が追加される実際の属性に対応します。APPLICATION_NAME属性参照のnameプロパティに対応します。
属性の事前定義された値
参照値やlookup-code値などの一連の事前定義された値を持つ属性を設定できます。これらの値はユーザー・インタフェースに表示されるため、これらの値についても翻訳を追加できます。このタイプの値の翻訳キーは、子属性の翻訳キーに似ています。たとえば、CreateUserDataSet.xmlリクエスト・データセット内のRole属性には、Employee、Full-Time Employee、Part-Time Employeeなどの事前定義された値があります。これらの値は、ユーザー作成のリクエストのUIにドロップダウンとして表示されます。コードLookup.Users.Roleを使用して参照定義を構成することによって事前定義されています。次の例に示すように、Role AttributeReferenceでlookup-code="Lookup.Users.Role"として指定されています。
<AttributeReference name="Role" attr-ref="Role" available-in-bulk="false" type="String" length="20" widget="dropdown" lookup-code="Lookup.Users.Role" required="true"/>
Role属性のEmployee値の翻訳は次のとおりです。
request.dataset.User.Role.LOV.Employee=Employee
説明:
request.datasetは、すべてのデータセット属性に接頭辞として付加する必要がある固定部分です。
Userはエンティティ・タイプに対応します。
Roleは、Employeeが事前定義された値である実際の属性に対応します。データセット内のRole AttributeReferenceのnameプロパティに対応します。
LOVは、LOVに続く文字列がRoleの事前定義された値であることを示すために追加されています。
Employeeは、翻訳が追加される事前定義された値です。これは、参照定義のDecode列の値にする必要があります。
注意: 参照定義には、Code Key列およびDecode列があります。たとえば、Code Key = EMP、Decode=Employeeのように指定します。 |
デフォルトのリクエスト・データセット内の属性はすでに存在します。ただし、新しい属性をデータセットに追加する場合は、この項で説明した方法と同じ方法でこれらの属性の翻訳を分類に応じて追加することもできます。
リクエスト・データセットには、lookup-queryタイプの属性が存在する場合があります。例:
<AttributeReference name="Application Name" attr-ref="APPLICATION_NAME" type="String" length="256" widget="lookup-query" available-in-bulk="true" required="true"> <lookupQuery lookup-query="select lkv_encoded as Application Key,lkv_decoded as Application Name from lkv lkv, lku lku where lkv.lku_key=lku.lku_key and lku_type_string_key='Lookup.EBS.Application'" display-field="APPLICATION_NAME" save-field="APPLICATION_KEY"/> </AttributeReference>
問合せで指定された列は、リクエストの作成中のデータ収集ステップでUIに表示されます。列の別名をリソース・バンドルのキーとして追加することで、列名lkv_encodedおよびlkv_decodedをローカライズできます。たとえば、この問合せでは、Application KeyおよびApplication Nameがそれぞれlkv_encoded列およびlkv_decoded列の別名です。次のように、カスタム・リソース・バンドルに翻訳を追加してローカライズできます。
Application\ Key=APPLICATION_KEY
Application\ Name=APPLICATION_NAME
リクエスト・データセットのXMLファイルの作成後、そのファイルをMDSにアップロードする必要があり、そのためにはOracle Identity ManagerのMDSインポートおよびエクスポート・ユーティリティ・ツールを使用します。アップロードが完了すると、リクエストの作成中にリクエスト・エンジンによってデータセットがロードされ、属性参照および属性がデータ収集ステップに表示されます。同様に、同じツールを使用して、MDSリポジトリからデータセット・ファイルを削除またはエクスポートできます。
関連項目: ファイルのインポートやエクスポートおよびOracle Identity Managerメタデータの変更に使用されるMDSユーティリティの詳細は、第33章「MDSユーティリティとユーザーが修正可能なメタデータ・ファイル」を参照してください。 |
リクエスト・データセットをMDSにアップロードするには、次の手順を実行します。
注意:
|
weblogic.propertiesファイルのmetadata_from_locプロパティで、XMLファイルのインポート元の最上位ディレクトリを指定します。リクエスト・データセットを格納するためのサブディレクトリを作成し、データセットをこのディレクトリにコピーします。/custom/RESOURCE_NAMEなどのサブディレクトリ構造を作成することをお薦めします。たとえば、metadata_from_locプロパティを/scratch/datasets/uploadに設定し、EBSリソースのデータセットを作成した場合、データセットは/scratch/datasets/upload/custom/EBS/ディレクトリに配置されます。
注意: このディレクトリに必要なデータセットのみが格納され、他のファイルがないことを確認します。 |
OIM_HOME/binディレクトリに移動し、weblogicImportMetadata.shまたはweblogicImportMetadata.batスクリプトを実行します。weblogicImportMetadata.shまたはweblogicImportMetadata.batスクリプトの実行の詳細は、MDSユーティリティの環境の設定に関する説明を参照してください。
Oracle Identity Managerには、いくつかの事前定義されたService-Oriented Architecture(SOA)コンポジットが用意されています。ただし、独自のコンポジットを定義し、それをリクエスト承認で使用できます。コンポジットの作成の詳細は、新しいSOAコンポジットの作成に関する説明を参照してください。
Oracle Identity ManagerにSOAコンポジットを登録するには、Oracle Identity ManagerへのSOAコンポジットの登録に関する説明を参照してください。
リクエストは、実行される前に複数の承認を経由します。リクエストの送信後、様々なレベルで承認を得る必要があります。承認は、一連の承認ポリシーによって制御および構成されます。
承認者はリクエスト・データを表示できます。リクエスタによって提供されたデータを変更することはできません。リクエスト・データセットでapprover-only="true"として設定された属性のデータのみを指定できます。
この項の内容は次のとおりです。
リクエストの送信後、承認を開始する必要がある場合は、リクエスト・サービスによってバックエンド・ワークフロー・エンジンでワークフロー・プロセスが開始されます。Oracle SOAがリクエスト・サービスによってワークフロー・エンジンとして使用されます。
関連項目:
|
SOAサーバーはSOAコンポジットおよびヒューマン・ワークフローをホストします。リクエスト・サービスおよびSOAの統合については、図23-1を使用して説明できます。
次のプロセスでは、承認ワークフローを選択するためにOracle SOAがリクエスト・サービスとどのように連携するかについて説明します。
リクエスト管理UI(Oracle Identity Managerセルフ・サービスまたは拡張管理)を使用して、リクエストを作成します。
リクエストを送信すると、Oracle SOAにデプロイされるSOAコンポジットがリクエスト・エンジンによって呼び出されます。
注意: Oracle SOAはOracle identity Managerとは無関係です。バックエンドのBusiness Process Execution Language(BPEL)サービスによって承認ワークフローが開始されます。Oracle Identity Managerに付属のデフォルトのBPELワークフロー以外に、要件に合わせてBPELに独自のワークフローを定義できます。BPELワークフローのカスタマイズの詳細は、次のURLのOracle Technology Network(OTN)WebサイトにあるJDeveloperドキュメントを参照してください。
|
Oracle SOAでは、Java Platform Security(JPS)を使用してSOAコンポジット・ロジックでリクエストを割り当てるユーザーを決定します。Oracle Identity Managerと同じユーザーおよびロールのセットが使用されます。これは、Oracle Identity Managerデータ・プロバイダによって有効化されます。
Oracle SOAでは、DBプロバイダによって提供された情報に基づいてタスクを割当て先に割り当てます。
ログイン・ユーザーおよびロールに割り当てられたタスクのリストがTaskList UIに表示されます。
承認者は、TaskListを使用してリクエストを承認または拒否します。
承認結果がSOA経由でリクエスト・エンジンに返送されます。
リクエストが承認された場合、次のアクションはリクエスト・タイプ、受益者または関連リソースに基づいて決定されます。リクエストが拒否された場合は、リクエストの処理が終了します。
タスクが割り当てられると、ユーザーはOracle Identity Managerセルフ・サービスでTaskList UIにログインして、ヒューマン・タスクおよびOracle Identity Managerリクエストの統合されたビューを表示できます。
TaskListでは、Oracle SOAとの通信にタスク問合せサービスAPIが使用されます。これらのAPIはOracle SOAサーバーによって提供されます。Oracle Identity Managerは、構成に基づいてSOAPまたはRMIプロトコルを使用してOracle SOAと通信します。RMIがデフォルトのプロトコルです。Oracle Identity ManagerとOracle SOAの間の構成の詳細は、第25章「SOAコンポジットの開発」を参照してください。
関連項目: TaskListを使用して様々なリクエスト関連操作を実行する方法の詳細は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドのタスクの管理に関する説明を参照してください。 |
各要求は3つのレベル(テンプレート・レベル、リクエスト・レベルおよび操作レベル)の承認を経由する必要がある場合があります。SOAコンポジットをOracle Identity Managerで承認プロセスとして使用するには、これらをOracle Identity Managerに登録する必要があります。登録すると、Oracle Identity Managerはデプロイして実行時に使用できる承認プロセスを把握できます。
承認レベルについては、以降の各項で説明します。
これらは、リクエスト・テンプレートに定義される承認です。各テンプレートでは、承認ポリシー構成で定義されている承認の上位に、追加の承認を定義できます。このレベルでは、リクエスト全体が承認または拒否されます。バルク・リクエストの場合、部分的に承認または拒否されることはありません。各テンプレートについて、テンプレート・レベルで開始する必要があるオプションの承認プロセスを定義できます。テンプレートに承認プロセスが定義されていない場合は、テンプレート・レベルが自動承認されます。
注意: リクエスト・レベルおよび操作レベルの承認は、承認ポリシーに関連付けられます。テンプレート・レベルの承認には、承認ポリシーは関連付けられません。承認プロセスはテンプレートで定義され、承認ポリシーとの関連付けなしに直接実行されます。承認ポリシーの詳細は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドの承認ポリシーの管理に関する説明を参照してください。 |
たとえば、すべての契約社員のユーザーを作成するときに、社員のマネージャおよびIT管理者による承認に加えて、人事担当による承認が必要となる場合などに、テンプレート・レベルの承認を使用します。人事担当によるこの追加の承認は、テンプレートの作成中に承認プロセスとして構成できます。テンプレートを使用してリクエストを作成および送信できます。
注意: このレベルの承認は、子リクエストには必要ありません。 |
これらはリクエスト全体に対する承認です。承認ポリシー構成に基づきます。
たとえば、ユーザーに対してラップトップをプロビジョニングするためのリクエストが生成されたときに、リクエスタのマネージャによる承認が必要となる場合などに、リクエスト・レベルの承認を使用します。
リクエストに対するリクエスト・レベルの承認に、どの承認プロセスを使用する必要があるかは、リクエスト・レベルで定義される承認ポリシーによって決定されます。指定されたタイプのリクエストに対してリクエスト・レベルの承認ポリシーが定義されていない場合は、デフォルトのリクエスト承認プロセスが使用されます。デフォルトでは、すべてのリクエスト・レベルの承認が管理者に割り当てられます。このため、デフォルトの構成は安全です。複数の承認ポリシーが存在する場合は、承認ポリシー優先度の順に承認ポリシー・ルールが評価され、適切な承認ポリシーが特定されます。承認ポリシー・ルールでは、リクエスト・エンジンに対し、特定の承認についてどの承認プロセスを選択するかを示します。リクエスト・エンジンは、承認ポリシー・ルールの評価に基づいて選択された承認ポリシーに定義されている、承認プロセスを選択します。
たとえば、ユーザーを作成するためのリクエストが送信されると、承認ポリシーの選択方法を使用して、優先度順に、ユーザーの作成リクエスト・モデルについて存在する承認ポリシーの数が確認されます。承認ポリシー優先度が最も高い承認ポリシー・ルールが評価されます。承認ポリシー・ルールの例として、マネージャの名および姓がそれぞれJohnおよびDoeである必要があるというルールがあります。優先度が最も高い承認ポリシー・ルールが一致しない場合は、承認ポリシー優先度が次に高い承認ポリシー・ルールが評価されます。最初の承認ポリシー・ルールが承認ポリシーで指定されている基準に一致する場合は、その承認ポリシーの対応する承認プロセスがリクエスト・レベルでそのリクエストに対して選択されます。すべての承認ポリシー・ルールが一致しない場合は、リクエスト・レベルのデフォルトの承認プロセスが選択されます。
注意:
|
これらは、このリクエスト・タイプによって実行される操作に対する承認です。このレベルでは、承認選択方法の名前およびパラメータを方法に渡す必要があります。方法によってこの操作に使用する承認ワークフローが提示されます。リクエスト・タイプおよびスコープでも、承認プロセスの決定に必要な方法固有のパラメータを定義できます。スコープは、表23-3に示すリクエスト・タイプに関連付けられているキーです。
リクエスト・タイプ | スコープ |
---|---|
ユーザー・エンティティに関連するすべてのリクエスト・タイプ:
|
organization |
リソースに関連するすべてのリクエスト・モデル:
|
リソース |
ロール・エンティティに関連するすべてのリクエスト・タイプ:
|
ロール |
注意: ロールの作成、ロールの変更およびロールの削除タイプでは、操作レベルの承認が自動承認されます。 |
たとえば、リソースのプロビジョニング・タイプのリクエストでは、スコープに基づき、承認ポリシーを作成するときに、承認ポリシーを操作レベルで関連付けるリソースを選択する必要があります。同様に、承認ポリシーを作成するとき、ユーザーの作成リクエスト・タイプでは組織を、ロールの割当てリクエスト・タイプではロールを操作レベルで選択する必要があります。
作成した承認ポリシー、承認ポリシー優先度、承認ポリシー・ルールおよびスコープによって、操作レベルでリクエストに対して選択する承認プロセスが決定されます。
たとえば、ユーザーに対してラップトップをプロビジョニングするためのリクエスト・レベルの承認が取得された後、ユーザーに対してラップトップを発行するIT管理者による承認が必要となる場合などに、操作レベルの承認を使用します。
バルク・リクエストの場合、個々の子リクエストに対して操作レベルの承認が必要です。個々の子リクエストは個別に承認または拒否できます。たとえば、ユーザーへのリソースのプロビジョニング・リクエストの場合、複数の受益者、複数のリソースまたは両方が存在する可能性があります。したがって、操作レベルでは、各ユーザーに対する各リソースのプロビジョニングによって子リクエストが生成され、その子リクエストを個別に承認または拒否できます。
承認に適切なSOAコンポジットを選択するには、必要な承認ポリシーを作成します。承認に関連する概念は、「手順5: リクエスト承認の定義」を参照してください。承認ポリシーの作成手順は、Oracle Fusion Middleware Oracle Identity Managerユーザーズ・ガイドの承認ポリシーの管理に関する説明を参照してください。
リクエスト・テンプレートを使用すると、目的に合わせてリクエストをカスタマイズできます。つまり、UIで様々な機能を制御して、リクエストの属性を制御できます。リクエスト・テンプレートの作成および管理の詳細は、『Oracle Fusion Middleware Oracle Identity Manager開発者ガイド』のリクエスト・テンプレートの管理に関する説明を参照してください。
リクエスト管理操作の特定の側面をカスタマイズして、柔軟性を向上させたり、追加機能のカスタマイズされたロジックを実装できます。これを行うには、リクエスト管理プラグインを使用できます。カスタマイズの実装に使用できるプラグイン・ポイントがあります。
関連項目:
|
ここでは、プラグイン・ポイントについて次の各項で説明します。
Oracle Identity Managerでは、リクエストのライフサイクルの各ステージでステータスが変更されます。リクエスト・エンジンによって、リクエスト・ステータスの変更時にカスタム・コードを実行できるプラグイン・ポイントが公開されます。このプラグイン・ポイントを拡張するカスタム・コードを含むプラグインを実装し、コードを実行するために登録できます。プラグイン・ポイントは、public void followUpActions(String reqId)メソッドを含むoracle.iam.request.plugins.StatusChangeEventインタフェースです。このメソッドはリクエストIDパラメータで構成され、これとリクエスト管理APIを使用してリクエスト詳細を取得できます。
ステータス変更時に実行するコードは、oracle.iam.request.plugins.StatusChangeEventインタフェースを実装するプラグイン・クラスのfollowUpActions()メソッドで実装する必要があります。plugin.xmlファイルでこのプラグインをどのリクエスト・ステータス変更時に実行するかを指定する必要があります。
たとえば、Oracle Identity Managerでリクエストが「リクエストに失敗しました」ステータスに移行した場合、管理者に通知を送信するカスタム・コードを実行できます。これを行うには、次の手順を実行します。
oracle.iam.request.plugins.StatusChangeEventインタフェースを実装するRequestFailedChangeEventという名前の新しいプラグイン・クラスを作成します。このクラスには、followUpActions(String reqId)メソッドで管理者に通知を送信するロジックが必要です。
プラグイン・フレームワークで指定されている次の標準形式でplugin.xmlを定義します。
<oimplugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <plugins pluginpoint="oracle.iam.request.plugins.StatusChangeEvent"> <plugin pluginclass="com.mycompany.RequestFailedChangeEvent" version="1.0" name="RequestFailedChangeEvent"> <metadata name="status"> <value>Request Failed</value> </metadata> </plugin> </oimplugins>
このXML定義では、プラグインを実行する必要があるステージをメタデータ部分で指定しています。メタデータ値をRequest Failed
として指定し、これはリクエストが「リクエストに失敗しました」ステータスに移行したときにcom.mycompany.RequestFailedChangeEventプラグインが実行されることを意味します。
プラグインをOracle Identity Managerに登録します。Oracle Identity Managerにプラグインを登録する方法の詳細は、プラグインの登録に関する説明を参照してください。
RequestDataValidatorプラグインを使用して、送信後にリクエスト・データのカスタム検証を追加できます。このプラグインのプラグイン・ポイントは、public void validate(RequestData requesterData)メソッドを含むoracle.iam.request.plugins.RequestDataValidatorインタフェースです。DataSetValidator要素の詳細は、「DataSetValidator要素」を参照してください。
事前移入プラグインは、リクエスト・データセットの属性参照または属性に関連付けられます。これを使用すると、リクエストの作成時にカスタム・コードを実行して、属性値を事前移入できます。リクエスタは、必要に応じて事前移入する値を変更できます。
このプラグインのプラグイン・ポイントは、public Serializable prepopulate(RequestData requestData)メソッドを含むoracle.iam.request.plugins.PrePopulationAdapterインタフェースです。このプラグインは、次のリクエスト・タイプにのみ使用します。
リソースのプロビジョニング、リソースの自己リクエスト、ユーザーの作成、ユーザーの自己登録
詳細は、「PrePopulationAdapter要素」を参照してください。