Sun Java System Directory Server Enterprise Edition 6.3 管理指南

第 24 章 虚拟数据转换

虚拟数据转换是在现有的数据视图上定义的,该转换允许您使用虚拟数据视图来创建虚拟数据。有关虚拟数据转换的工作方式的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Virtual Data Transformations”

本章包含以下主题:

配置虚拟数据转换

可向以下任意类型的数据视图中添加虚拟数据转换:LDAP 数据视图、LDIF 数据视图、联接数据视图或 JDBC 数据视图。

Procedure添加虚拟转换

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 向数据视图中添加转换。


    $ dpconf add-virtual-transformation -h host -p port view-name \
     transformation-model transformation-action attribute-name [parameters...]

    transformation-model 可以是 mappingwriteread 转换之一。

    transformation-action 可以是 add-attrremove-attradd-attr-valueremove-attr-valuedef-valueattr-value-mapping 操作之一。

    请注意,parameters 可能是必需的选项,具体取决于 transformation-modeltransformation-action

    有关转换模型、转换操作和转换参数的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Virtual Data Transformations”

  2. (可选的)查看数据视图上定义的虚拟转换列表。

    $ dpconf list-virtual-transformations -h host -p port view-name
    

Procedure删除虚拟转换

  1. 使用以下命令删除虚拟转换。


    dpconf remove-virtual-transformation view_name transformation_name
    

虚拟转换示例

以下部分提供了要求使用虚拟数据视图的使用实例,并且需要结合使用转换模型和操作,来实现这些使用实例。

从条目的现有属性派生属性

使用以下转换规则可以从条目的现有属性派生属性。例如,当应用以下转换规则时,将显示从 givenNamesn 属性派生的 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

下图显示了执行添加请求时发生的转换。

为属性添加默认值