次の節では、仮想データビューが必要なユースケースと、それらのユースケースの実装に必要な変換のモデルとアクションの組み合わせを示します。
次の変換ルールを使用して、エントリの既存の属性から属性を誘導します。たとえば、次の変換ルールを適用すると、givenName および sn 属性から派生した mail 属性が表示されます。
$ dpconf add-virtual-transformation dataview1 read add-attr \ mail \${givenName}.\${sn}@example.com |
次の図に、検索で返されるユーザーエントリで発生する変換を示します。
次のマッピング変換ルールを使用して、純粋な仮想属性の一部として配信された属性を追加します。たとえば、次の変換ルールを適用すると、givenName は、エントリで指定されていなくてもサーバーに格納されます。値は、mail \${givenName}@example.com として定義された純粋な仮想属性から取られます。
$ dpconf add-virtual-transformation dataview1 mapping add-attr \ mail \${givenName}@example.com |
まず、仮想属性として mail 属性を含み、givenName 属性を含まないエントリを追加します。仮想変換により、givenName 属性の値が生成され、エントリは givenName 属性とともに格納されますが、mail 属性は含まれていません。次に、uid 属性の使用時に検索を行いながら、givenName の値を取得すると、同じ仮想変換により、仮想属性 mail の値が生成されます。
次の図に、ユーザーエントリで発生する変換を示します。
次の変換を使用して、別の属性によって指定された属性の値を表示します。たとえば、uid を cn として表示するときに、すでにエントリに格納されている cn の値も表示できます。次の場合は、cn に追加の値は格納されませんが、結果がクライアントに返される前に変換が適用されます。
$ dpconf add-virtual-transformation dataview1 read add-attr-value cn \${uid} |
次の図に、検索で返されるユーザーエントリで発生する変換を示します。
次の変換ルールを使用して、属性の値と、新しいエントリを追加するときに指定した値を格納します。このシナリオでは、エントリを追加すると、mail 属性の追加の値が格納されます。この変換は、新しいエントリを作成するときだけ適用されます。
$ dpconf add-virtual-transformation dataview1 write add-attr-value \ mail \${uid}@example.com |
次の図に、追加要求で発生する変換を示します。
属性を出力に表示しない場合は、次の変換ルールを使用します。たとえば、次の変換ルールを適用すると、givenName は出力に返されません。
dpconf add-virtual-transformation dataview1 read remove-attr givenName |
次の図に、検索で返されるユーザーエントリで発生する変換を示します。
特定の属性を格納しない場合は、次の変換ルールを使用します。たとえば、次の変換ルールを適用すると、givenName 属性は物理データベースに格納されません。この変換は、新しいエントリを作成するときだけ適用されます。
$ dpconf add-virtual-transformation dataview1 write remove-attr givenName |
次の図に、追加要求で発生する変換を示します。
属性に割り当てられたデフォルト値を表示する場合は、次の変換を使用します。たとえば、次の変換を適用すると、それ自体の電話番号が含まれていないエントリのデフォルトの電話番号が表示されます。
$ dpconf add-virtual-transformation data-view read 11111 telephoneNumber default-number |
次の図に、検索で返されるユーザーエントリで発生する変換を示します。
デフォルト値は、エントリの作成時に属性の値が指定されない場合のみ格納されます。デフォルト値を持つ属性を格納する場合は、次の変換ルールを使用します。たとえば、次の変換を適用すると、作成するエントリごとにデフォルトの電話番号が追加されます。この変換は、エントリを追加するときだけ適用されます。
$ dpconf add-virtual-transformation dataview1 write 11111 \ telephoneNumber telephone-number |
次の図に、追加要求で発生する変換を示します。