大半のルール式は単一値を扱います。 1 つのユーザ属性値(空の場合もある)を使用して開始され、結果は 1 つのアカウント属性値(これも空の場合がある)となります。 ただし、空のユーザ属性を 0 の値として考える必要がある場合があります。 また、複数値を取るアカウント属性値のために複数の値を生成する必要がある場合もあります。
以下のルール構文では、ユーザ属性に含まれる 0 以上の値を操作できます。
%*var%
ルール式の % 記号の直後にオプションの複数値フラグであるアスタリスク(*)を指定すると、参照されているユーザ属性に含まれる値の数に応じて、このルール式は 0、1、または 1 よりも大きい値になります。
大半のユーザ属性値は単一値であるため、0、または 1 の値のみが含まれます。 ただし、カスタム属性(CustomField01 ~ CustomField99)は複数値属性であるため、これらの属性を参照するルール変数は 0 、1、または 1 以上の値を含む可能性があります。
ユーザ属性に複数の値が含まれている場合に、ルール式にアスタリスク(*)を含めないと、ルール評価の結果は最初の値の結果となります。 しかし、多くの場合、複数値は正式に順序付けられていないため、CA Identity Manager が最初の値とみなす値は予測できません。
ユーザ属性に複数の値があり、ルール式に * を含めると、そのアカウント属性には複数の値が生成されます。 アカウント テンプレート属性から設定されるアカウント属性自体が複数値をとらない場合は、そのアカウント テンプレートには複数値のルール式を定義しないでください。
ADS エンドポイント タイプの拡張アカウント属性を複数値として定義し、その複数値のルール式構文を使ってその属性を設定することができます。 たとえば、patents という名前の拡張 ADS アカウント属性と、同じ patents という名前の付いたカスタム ユーザ属性番号 3 を定義する環境を考えてみます。
ADS アカウント テンプレートは、patents 属性としてルール文字列 %*UCU03% を定義します。 次に、1 つまたは複数の値を追加して、ユーザの patents 属性を変更できます。 ユーザに変更を加える際に、ユーザのアカウントを更新するオプションを選択します。 これによってアカウントのアカウント テンプレートが確認され、ルール変数 %*UCU03% が検出されると、ユーザのすべての patents がアカウントの patents 属性にコピーされます。
同様に、アカウントの作成中にもルール文字列は評価されます。 さらに、アカウント テンプレートの変更時にルール文字列を変更した場合、そのアカウント テンプレートに関連するすべてのアカウントのルールの再計算を選択できます。
%*var% 構文は、単一値のユーザ属性を参照する変数 var にも有効です。 有効になるのは、連結が行われ、参照される属性がユーザに設定されていない場合のみです。
オプションの複数値フラグであるアスタリスク(*)は、ユーザ属性に値がない場合に、%*var% ルール変数を含むルールが値なしと評価することを示します。 これは、単一値のルール式 %var% とは異なります。単一値のルール式は、空の文字列であっても必ず単一の値と評価します。
この違いを理解するために、以下のルール文字列について考えてみます。
(310)%UP% (310)%*UP%
これらのルール文字列は両方とも、電話番号にエリア コード 310 を追加します。 ただし、ユーザが電話番号の値を持っていない場合に、最初のルールはアカウントの値として(310)と評価してしまう点が異なります。 2 番目のルール文字列は値を生成せず、アカウント属性は未設定のままになります。
一方、電話番号に内線番号を追加する以下のルール文字列を考えてみます。
%UP% %UPE% %UP% %*UPE%
すべての人が電話番号を持っているのに、一部の人が内線番号を持っていない場合、最初のルール文字列は各ユーザに内線番号のない電話番号を含む値を生成します。 2 番目のルール文字列は値を生成しません。 この場合は、%UPE% を使った最初のルールを使用します。
|
Copyright © 2014 CA.
All rights reserved.
|
|