アクションは、次の構造を持っています。
<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 にインポートするには、次の手順に従います。