この章では、リソースアダプタのアクションを作成および実装する方法について説明します。アダプタがアクションをサポートしているかどうかについては、各アダプタのマニュアルを参照してください。
アクションとは、スクリプトアクションのネイティブサポートが存在する場合に、管理するリソースのコンテキスト内で実行するスクリプトです。たとえば、UNIX オペレーティングシステムによるシステムでは、アクションは一連の UNIX シェルコマンドです。Microsoft Windows 環境では、アクションは CMD コンソール内で実行可能な DOS 形式のコンソールコマンドになります。アクションは Identity Manager リポジトリ内にオブジェクトして存在します。メインフレーム環境では、アクションは、メインフレームとの間でキーストロークやコマンドを送受信できる Javascript スクリプトです。Oracle ERP では、アクションは、JDBC 接続を使用して Oracle データベースの追加カスタムフィールドを管理する Javascript または Beanshell スクリプトです。このアダプタについては、第 25 章Oracle ERPを参照してください。
アクションは、リソースアカウントオブジェクトに対して直接実行される作業ではなく、そのリソースアカウントの作成、更新、または削除の前またはあとに実行される作業を行う場合に使用します。リソースアクションでは、ユーザーを作成したあとに実行される、新規ユーザーのディレクトリへのファイルのコピーや、そのユーザーに関する UNIX の SUDOers ファイルの更新などのネイティブアクティビティーがサポートされます。このタイプの作業は、カスタムリソースアダプタを使用することにより実行できます。ただし、カスタムリソースアダプタを配備するよりも、アクションを追加したリソースアダプタを配備するほうが簡単です。
アクションには次の 3 種類の結果メッセージが関連付けられます。
Success。Identity Manager の成功メッセージを表示します。
Success with action output。Identity Manager の成功メッセージと、標準エラーおよび出力情報を表示します。
Failure。Identity Manager の失敗メッセージと、標準エラーおよび出力情報を表示します。
create
update
delete
enable
disable
login と logoff (メインフレームアダプタのみ)
アクションは、次の構造を持っています。
<ResourceAction name=’Name’> <ResTypeAction restype=’ResourceType’ actionType=’Language’ timeout=’Milliseconds’> <act> ... </act> </ResTypeAction> </ResourceAction>
各表記の意味は次のとおりです。
Name は、リソースアクションの名前です。
ResourceType は、リソースのタイプ (AIX、HP-UX など) です。
Milliseconds (省略可能) は、アクションの完了を待つ時間です。
Language (省略可能) は、スクリプトの言語です。このパラメータは、Oracle ERP アダプタで必要です。Oracle ERP アダプタは、Javascript および Beanshell の actionType 値をサポートしています。
<act> 要素はアクションを定義します。この要素には、リソース上で実行されるコードが含まれます。たとえば、次の XML は Solaris リソースのアクションを定義しています。
<?xml version=’1.0’ encoding=’UTF-8’?> <!DOCTYPE Waveset PUBLIC ’waveset.dtd’ ’waveset.dtd’> <Waveset> <ResourceAction name=’after-create’> <ResTypeAction restype=’Solaris’ timeout=’60000’> <act> #!/bin/ksh echo "$WSUSER_accountId says Hello World!" # exit $DISPLAY_INFO_CODE if there is not a failure, but you want # the output to be propagated to the UI #exit 0 exit $DISPLAY_INFO_CODE </act> </ResTypeAction> </ResourceAction> </Waveset>
<act> 要素内に含まれるコードは、UNIX スクリプト (ksh または sh) や Windows バッチスクリプトで使用されるコードと同じです。
環境変数はエクスポートされ、アクションで利用できるようになります。これらの環境変数は、ユーザーに関する値 (リソーススキーママップの「アイデンティティーシステム リソース属性」列で定義される) を持つ、スキーマにマップされたすべての属性を、先頭に WSUSER_ を付加して構成します。たとえば、前述の例では、Solaris リソーススキーママップで定義された AccountId 属性の先頭に WSUSER_ を付加した形式の、環境変数 WSUSER_AccountId が使用されています。これらの変数がそれぞれのシェル内で環境変数として認識されるように、Solaris では変数名の前に $ (ドル記号) が付加されます。
OS/400 はコマンド言語に変数の代入機能がないため、リソースアダプタは変数名を検索し、リソースにコマンド行を送信する前に代入を実行します。変数を認識させるために、変数の前後に $ を付加する必要があります。特に、OS/400 スクリプトで WSUSER_AccountId を使用するには、コマンド行に $accountId$ を入力します。「WSUSER」を削除することに注意してください。
使用例:
<ResTypeAction restype="OS/400" timeout="6000"> <act> CRTOUTQ OUTQ(SYSTEME/$accountId$) </act> </ResTypeAction>
Identity Manager は更新の際に、変更された属性だけをリソースにプッシュします。アクションは変更されていない属性にアクセスできません。変更されていない可能性のある属性が必要な後アクションを記述する場合は、次の回避方法を検討してください。
リソースのスキーママップに、アクセスする必要のあるアカウント属性を模倣する余分な属性を追加します。たとえば、fullname アカウント属性にアクセスする必要がある場合は、shadow_fullname という名前の属性を作成します。スキーママップの「リソースユーザー属性」列で、この新しい属性に IGNORE_ATTR の値を追加して、アダプタが属性を使用するのを防ぎます。
この属性に入力されるように、値をユーザーフォームに設定します。
<Field name=’accounts[ResourceName].shadow_fullname’> <Expansion> <ref>accounts[ResourceName].fullname</ref> </Expansion> </Field> |
アクション内で %WSUSER_shadow_fullname% を参照して、値を取得できるようにします。
Identity Manager は、IGNORE_ATTR に設定されている属性を取得しません。その結果、Identity Manager は shadow_fullname などの属性の内容を新しい値と見なします。この属性は常にアダプタにプッシュされ、後アクションに使用できます。
アクションファイルを作成するときは、次に示す事項に留意してください。
スキーママップの Identity Manager の「リソースユーザー属性」列の変数名を変更する場合は、このオブジェクトでも名前を変更する必要があります。
アクションは XML 表現に含まれるため、一部の文字をエスケープする必要があります。それらの文字は、次のようにエスケープしてください。
& (アンパサンド): &
< (小なり): <
UNIX リソースでは、属性名内のスペースは _ (下線) で置き換えられます。Windows リソースでは、スペースが維持されます。
複数値属性は、次のようなコンマ区切りリストで構成されます。
WSUSER_groups=staff,admin,users
ゲートウェイベースのアダプタでは、複数値属性にパイプ区切りリストが使用されます。次に例を示します。
WSUSER_NotesGroups=group1|group2|group3
Active Directory リソースでは、アクションは、拡張機能を有効にした Windows コマンドインタプリタの cmd.exe を使用して実行されます。
ユーザー操作の前に実行するアクションでは、ゼロの値を返す必要があります。そうしないと、操作はエラー終了となります。
例外がスローされないかぎり、Javascript は正常に完了したとみなされます。
アクションを Identity Manager にインポートするには、次の手順に従います。
Identity Manager 管理者インタフェースにログインします。
メニューバーで、「設定」、「交換ファイルのインポート」の順に選択します。
アクションが含まれている XML ファイルを入力するか、ファイルを参照して選択し、「インポート」をクリックします。
アクションの定義が完了したら、次の手順に従ってそのアクションを実装します。
ユーザー操作の前またはあとに実行するアクションを割り当てるユーザーフォームフィールドを作成します。
フィールド名。アクションの実行時期と操作対象を示します。
フィールドの値。アクション名を含みます。
次の例では、ユーザー作成操作のあとに実行する after-create というアクションを定義しています。
<Field name=’global.create after action’> <Expansion> <s>after-create</s> </Expansion> </Field>
フィールド名の形式は次のとおりです。
{create|update|delete} {before|after} action
Identity Manager のフォームについては、『Deployment Reference』を参照してください。
アクションを実行するリソースのスキーママップにエントリを追加します。次の手順に従います。
Identity Manager のメニューバーで「リソース」をクリックし、リソースを選択します。
「リソースの編集」ページで、「リソーススキーマの編集」をクリックします。
スキーママップで、「属性の追加」をクリックして、スキーママップに行を追加します。
「アイデンティティーシステム ユーザー属性」列に、「create after action」と入力します。
「リソースユーザー属性」列に、「IGNORE_ATTR」と入力します。IGNORE_ATTR エントリによって、その属性は通常のアカウント属性処理では無視されます。
「保存」をクリックします。
ここでは、リソースアダプタで次の操作が実行されたあとに、Active Directory リソースで実行できるアクションの例を示します。
ユーザーの作成
ユーザーアカウントの更新または編集
ユーザーの削除
この手順では、Active Directory リソースで新規ユーザーの作成後に実行するアクションを含める方法を示します。
リソースのスキーママップの「Identity Manager ユーザー属性」列に、「create after action」と入力します。
「属性タイプ」列で、「string」を選択します。
「リソースユーザー属性」列に、「IGNORE_ATTR」と入力します。「必須」、「監査」、「読み取り専用」、および「書き込み専用」の各列は、チェックマークを外したままにします。
ユーザーの作成または編集に使用するユーザーフォームに次のコードを追加します。
<Field name=’resourceAccounts.currentResourceAccounts[AD].attributes. create after action’> <Expansion> <s>AfterCreate</s> </Expansion> </Field> |
次の XML ファイルを作成して、Identity Manager にインポートします。ファイルのパスは、環境に合わせて変更してください。
<?xml version=’1.0’ encoding=’UTF-8’?> <!DOCTYPE Waveset PUBLIC ’waveset.dtd’ ’waveset.dtd’> <Waveset> <ResourceAction name=’AfterCreate’> <ResTypeAction restype=’Windows Active Directory’ timeout=’6000’> <act> echo create >> C:\Temp\%WSUSER_accountId%.txt exit </act> </ResTypeAction> </ResourceAction> </Waveset> |
この手順では、Active Directory リソースでユーザーの更新または編集後に実行するアクションを含める方法を示します。
Active Directory スキーママップの「Identity Manager ユーザー属性」列に、「update after action」と入力します。
「属性タイプ」列で、「string」を選択します。
「リソースユーザー属性」列に、「IGNORE_ATTR」と入力します。「必須」、「監査」、「読み取り専用」、および「書き込み専用」の各列は、チェックマークを外したままにします。
ユーザーの作成および編集に使用するユーザーフォームに次のフィールドを追加します。
<Field name=’resourceAccounts.currentResourceAccounts[AD]. attributes.update after action’> <Expansion> <s>AfterUpdate</s> </Expansion> </Field> |
次の XML ファイルを作成して、Identity Manager にインポートします。ファイルのパスは、環境に合わせて変更してください。
<?xml version=’1.0’ encoding=’UTF-8’?> <!DOCTYPE Waveset PUBLIC ’waveset.dtd’ ’waveset.dtd’> <Waveset> <ResourceAction name=’AfterUpdate’> <ResTypeAction restype=’Windows Active Directory’ timeout=’6000’> <act> echo update >> C:\Temp\%WSUSER_accountId%.txt exit </act> </ResTypeAction> </ResourceAction> </Waveset> |
この手順では、Active Directory リソースでユーザーの削除後に実行するアクションを含める方法を示します。
リソースのスキーママップの「Identity Manager ユーザー属性」列に、「delete after action」と入力します。
「属性タイプ」列で、「string」を選択します。
「リソースユーザー属性」列に、「IGNORE_ATTR」と入力します。「必須」、「監査」、「読み取り専用」、および「書き込み専用」の各列は、チェックマークを外したままにします。
「Deprovision Form」ユーザーフォームの </Include> タグのあとに次のフィールドを追加します。
<Field name= ’resourceAccounts.currentResourceAccounts[AD].attributes. delete after action’> <Expansion> <s>AfterDelete</s> </Expansion> </Field> |
次の XML ファイルを作成して、Identity Manager にインポートします。ファイルのパスは、環境に合わせて変更してください。
<?xml version=’1.0’ encoding=’UTF-8’?> <!DOCTYPE Waveset PUBLIC ’waveset.dtd’ ’waveset.dtd’> <Waveset> <ResourceAction name=’AfterDelete’> <ResTypeAction restype=’Windows Active Directory’ timeout=’6000’> <act> echo delete >> C:\Temp\%WSUSER_accountId%.txt exit </act> </ResTypeAction> </ResourceAction> </Waveset> |
Active Directory リソースの XML を編集し、「delete after action」スキーママッピングに情報を追加します。新しく追加する部分を含む、このリソースの完全なスキーママッピングの例を次に示します。ここでは、ビュー関連の情報を追加します。
<AccountAttributeType id=’12’ name=’delete after action’ syntax=’string’ mapName=’IGNORE_ATTR’ mapType=’string’> <Views> <String>Delete</String> </Views> </AccountAttributeType> |
Domino リソースでは、前アクションと後アクションがサポートされます。
現在は、LotusScript と cmd シェルの 2 種類のアクションがサポートされています。どの操作アクションにも、実行される任意の数のアクションを実装できます。
次の例は、LotusScript および cmd シェルのリソースアクションの使用方法を示しています。
<ResourceAction name=’iterateAttributes’ createDate=’1083868010032’> <ResTypeAction restype=’Domino Gateway’ actionType=’lotusscript’> <act> Sub Initialize Main End Sub Sub Main Dim session As New NotesSession Dim doc As NotesDocument Set doc = session.DocumentContext Forall i In doc.Items Dim attrVal As Variant attrVal = doc.GetItemValue(i.Name) End Forall End Sub </act> </ResTypeAction> </ResourceAction>
<ResourceAction name=’getDirectoryContents’ createDate=’1083868010032’> <ResTypeAction restype=’Domino Gateway’> <act>dir</act> </ResTypeAction> </ResourceAction>
actionType が null の場合は、cmd スクリプトタイプがデフォルトとして使用されます。
Domino では、LotusScript の実行はデータベースに接続されたエージェントによって処理されます。Domino アダプタは、次のいずれかの方法で LotusScript を実行します。
入力 |
結果 |
---|---|
agentName |
エージェントを実行します。 |
agentName およびスクリプト |
スクリプトを用いてエージェントを更新し、そのエージェントを実行します。 |
agentName、agentCreate、およびスクリプト |
スクリプトを用いてエージェントを作成し、そのエージェントを実行します。 |
次に示すカスタマイズされたアカウント属性は、LotusScript で使用できます。これらの属性のいずれかを使用する場合は、その属性を Domino ゲートウェイスキーママップに追加します。「リソースユーザー属性」列には値として「IGNORE_ATTR」を指定します。
agentName。実行するエージェントの名前を指定します。この属性は必ず指定します。 そうしないと、エラーが返されます。
agentServer。エージェントがインストールされている、エージェントを実行するデータベースの場所を指定します。この属性が存在しない場合は、「登録サーバー コンピュータ」リソースパラメータ (REG_SERVER) に指定された値がデフォルトとして使用されます。
agentDBName。エージェントを検索できるデータベースの名前を指定します。この属性では、リソースの「名前データベース」リソースパラメータ (NAB) で指定された値がデフォルトとして使用されます。
agentCreate。指定されたエージェントが見つからない場合に、アダプタで新しいエージェントを作成するかどうかを示すフラグを指定します。この属性のデフォルト値は false です。NULL 以外の値にすると、このフラグは有効になります。
agentCreate を指定する場合は、実行する LotusScript も指定してください。
エージェントの引数は、バックエンド NotesSession クラスからの専用プロパティーで、LotusScript へのノートハンドルに指定されます。これは次のように定義できます。
NotesDocument = NotesSession.DocumentContext
アクションスクリプトルーチンによって NotesDocument をインスタンス化し、そのフィールド値を LotusScript サブルーチンへのパラメータとして読み取ることができます。
ドキュメントに定義された任意の引数の名前と値を取得する LotusScript の例を次に示します。
Dim session As New NotesSession Dim doc As NotesDocument Set doc = session.DocumentContext Forall i In doc.Items Dim attrVal As Variant attrVal = doc.GetItemValue(i.Name) Print(" Attribute Name: " + i.Name + " Value: " + attrVal(0)) End Forall
NT アクションの場合と同じように、アクションの呼び出し中に定義された属性はすべて、先頭に WSUSER_ が付加されて NotesDocument に配置されます。
アクションは、拡張機能を有効にした Windows コマンドインタプリタ cmd.exe を使用して実行されます。ユーザー操作の前に実行するアクションでは、ゼロの値を返す必要があります。そうしないと、操作はエラー終了となります。
NT/ADSI cmd アクションと同様に、環境変数がエクスポートされ、アクションで利用できるようになります。これらの環境変数は、ユーザーに関する値 (リソーススキーママップの「Identity Manager ユーザー属性」列で定義される) を持つ、スキーマにマップされたすべての属性を、先頭に WSUSER_ を付加して構成します。
複数値属性は、次のようなパイプ区切りリストで構成されます。
WSUSER_groups=staff|admin|users
ACF2、RACF、および Top Secret アダプタでは、login および logoff のリソースアクションが必要です。login アクションは、認証されたセッションに関してメインフレームとネゴシエーションを行います。logoff アクションは、そのセッションが不要になったときに接続を解除します。
thin クライアントのホストアクセス 3270 エミュレータは、スクリプトセッション内のコマンドの実行を簡素化するために、リソースアダプタによるリソースアクションのコンテキストに提供されます。このエミュレータは、com.waveset.object.HostAccess クラスで定義されます。リソースアクションに渡される hostAccess オブジェクトで使用可能なメソッドに関する詳細については、HostAccess に関する JavaDoc を参照してください。
グローバル変数のいくつかは、スクリプトアクションのコンテキストで使用します。
次の表では、3270 エミュレータを通して実行可能な、英数字以外の値のキー入力をシミュレートする特殊機能について説明します。
機能 |
ニーモニックキーワード |
機能 |
ニーモニックキーワード |
---|---|---|---|
Attention |
[attn] |
F1 |
[pf1] |
Backspace |
[backspace] |
F2 |
[pf2] |
Backtab |
[backtab] |
F3 |
[pf3] |
Beginning of Field |
[bof] |
F4 |
[pf4] |
Clear |
[clear] |
F5 |
[pf5] |
Cursor Down |
[down] |
F6 |
[pf6] |
Cursor Left |
[left] |
F7 |
[pf7] |
Cursor Right |
[right] |
F8 |
[pf8] |
Cursor Select |
[cursel] |
F9 |
[pf9] |
Cursor Up |
[up] |
F10 |
[pf10] |
Delete Character |
[delete] |
F11 |
[pf11] |
DUP Field |
[dup] |
F12 |
[pf12] |
Enter |
[enter] |
F13 |
[pf13] |
End of Field |
[eof] |
F14 |
[pf14] |
Erase EOF |
[eraseeof] |
F15 |
[pf15] |
Erase Field |
[erasefld] |
F16 |
[pf16] |
Erase Input |
[erinp] |
F17 |
[pf17] |
Field Mark |
[fieldmark] |
F18 |
[pf18] |
ホーム |
[home] |
F19 |
[pf19] |
Insert |
[insert] |
F20 |
[pf20] |
New Line |
[newline] |
F21 |
[pf21] |
PA1 |
[pa1] |
F22 |
[pf22] |
PA2 |
[pa2] |
F23 |
[pf23] |
PA3 |
[pa3] |
F24 |
[pf24] |
Page Up |
[pageup] | ||
Page Down |
[pagedn] | ||
Reset |
[reset] | ||
System Request |
[sysreq] | ||
Tab Field |
[tab] |
次のコーディング例は、メインフレームのリソース上で一般に実行されるアクションを示しています。
次のコードは、login および logoff リソースアクションの完全なサンプルです。このサンプルは、Top Secret リソースを使用する、ある特定の顧客の環境に合わせた内容になっています。したがって、コマンド、プロンプト、コマンドシーケンスなどのテキストは、配備環境によって異なる可能性があります。これらのリソースアクションは、XML 内の Javascript をラップします。
<ResourceAction name=’ACME Login Action’> <ResTypeAction restype=’TopSecret’> <act> var TSO_MORE = " ***"; var TSO_PROMPT = " READY"; var TS_PROMPT = " ?"; hostAccess.waitForString("ENTER YOUR APPLICATION NAME"); hostAccess.sendKeys("tso[enter]"); hostAccess.waitForString("ENTER USERID– "); hostAccess.sendKeys(user + "[enter]"); hostAccess.waitForString("TSO/E LOGON"); hostAccess.sendKeys(password); hostAccess.sendKeys("[enter]"); var pos = hostAccess.searchText(" -Nomail", false); if (pos != 0) { hostAccess.setCursorPos(pos); hostAccess.sendKeys("S"); } pos = hostAccess.searchText(" -Nonotice", false); if (pos != 0) { hostAccess.setCursorPos(pos); hostAccess.sendKeys("S"); } hostAccess.sendKeys("[enter]"); hostAccess.waitForStringAndInput(TSO_MORE); hostAccess.sendKeys("[enter]"); hostAccess.waitForStringAndInput(TSO_MORE); hostAccess.sendKeys("[enter]"); hostAccess.waitForStringAndInput("ISPF"); hostAccess.sendKeys("=x[enter]"); hostAccess.waitForString(TSO_PROMPT); var resp =hostAccess.doCmd("PROFILE NOPROMPT MSGID NOINTERCOM NOPAUSE NOWTPMSG PLANGUAGE(ENU) SLANGUAGE(ENU) NOPREFIX[enter]", TSO_PROMPT, TSO_MORE); hostAccess.waitForStringAndInput("ENTER LOGON:"); hostAccess.sendKeys(system + "[enter]"); hostAccess.waitForStringAndInput("USER-ID....."); hostAccess.sendKeys(user + "[tab]" + password); hostAccess.sendKeys("[enter]"); var stringsToHide = new java.util.ArrayList(); stringsToHide.add(password.decryptToString()); hostAccess.waitForString("==>", stringsToHide); hostAccess.waitForInput(); hostAccess.sendKeys("[pf6]"); hostAccess.waitForInput(); </act> </ResTypeAction> </ResourceAction>
<ResourceAction name=’ACME Logoff Action’> <ResTypeAction restype=’TopSecret’> <act> var TSO_PROMPT = " READY"; hostAccess.sendKeys("[clear]end[enter]"); hostAccess.waitForString(TSO_PROMPT); hostAccess.sendKeys("logoff[enter]"); </act> </ResTypeAction> </ResourceAction>
RACF リソースパラメータのページで「データセット規則の作成および削除」パラメータが選択されている場合は、Identity Manager によってデータセット規則が直接管理されます。ユーザー独自のデータセット規則を設定するには、次のようなアクションを定義します。
<ResourceAction name=’create after action’> <ResTypeAction restype=’RACF’> <act> var TSO_PROMPT = " READY"; var TSO_MORE = " ***"; var cmd1 = "addsd ’"+identity+".test1.**’ owner(’"+identity+"’)[enter]"; var result1 = hostAccess.doCmd(cmd1, TSO_PROMPT, TSO_MORE); </act> </ResTypeAction> </ResourceAction>
ビューに属性を追加できます。属性はすべて登録されている必要があります。
Identity Manager でのさまざまなプロビジョニングアクティビティーにおいて利用できるユーザー属性は、そのアクションを完了するために必要な属性に限定されます。たとえば、ユーザーを編集する場合には、割り当てられたリソースの中で更新可能と定義されているユーザー属性のみが利用できます。一方、パスワードの変更プロセスでは、要求を実行するための属性のサブセットのみを必要とします。
属性は、次のいずれかの場所に登録できます。
場所 |
属性をここに登録する条件 |
---|---|
リソース内の AccountAttributeType 定義 |
... 更新する属性が、そのタイプのすべてのリソースではなく、特定のリソースのみに適用されます。 |
System Configuration オブジェクト |
... 特定タイプのすべてのリソースに適用されるグローバル登録を行います。このような登録は、XML フォーマットで行います。 |
異なる属性を異なるビューに登録できます。たとえば、lock 属性をパスワードビューに登録したり、firstname 属性を名前の変更ビューに登録したり、リソースアクションを有効化ビュー、無効化ビュー、またはプロビジョニング解除ビューに登録したりできます。
前アクションと後アクションの場合は、作成または更新のユーザープロセスを除くすべてのプロセスのビューを拡張してください。ビューの拡張については、「Identity Manager Views」を参照してください。
グローバル登録を行うには、次のパスを持つ System Configuration オブジェクトに属性を追加します。
updatableAttributes.ViewName.ResourceTypeName
ここで、ViewName は Password、Reset、Enable、Disable、Rename、または Delete のいずれかで、ResourceTypeName はリソースタイプの名前です。all というタイプ名は、すべてのリソースに適用される登録用に予約されています。
この属性の値には、<String> のリストを指定する必要があります。各文字列は、更新する属性の名前です。次の例は、すべてのリソースを対象とした delete before action という属性をプロビジョニング解除ビューに登録します。
<Attribute name=’updatableAttributes’> <Object> <Attribute name=’Delete’> <Object> <Attribute name=’all’> <List> <String>delete before action</String> </List> </Attribute> </Object> </Attribute> <Attribute name=’Enable’> <Object> <Attribute name=’all’> <List> <String>enable before action</String> </List> </Attribute> </Object> </Attribute> </Object> </Attribute>
リソースに固有の登録を行うには、Identity Manager の「デバッグ」ページでリソースオブジェクトを修正し、AccountAttributeType 要素に <Views> 下位要素を挿入します。<Views> には、この属性が更新されるビューの名前を示す文字列のリストを指定する必要があります。
<AccountAttributeType name=’lastname’ mapName=’sn’ mapType=’string’> <Views> <String>Rename</String> </Views> </AccountAttributeType>
ビューでは、変更する属性が、次のオブジェクトの内部に配置されます。
resourceAccounts.currentResourceAccounts[ResourceTypeName ].attributes
例:
<Field name= ’resourceAccounts.currentResourceAccounts[OS400ResourceName]. attributes.delete before action’ hidden=’true’> <Expansion> <s>os400BeforeDeleteAction</s> </Expansion> </Field>