高级自定义 > 服务和基础结构自定义 > 自定义 LDAP 属性 > 在用户信息页面中自定义 LDAP 映射属性
在用户信息页面中自定义 LDAP 映射属性
1. 以站点管理员身份登录并导航至“站点” > “实用程序” > “Info*Engine 管理”
编辑为 LDAP 配置的 JNDI 适配器,其中包含要映射到用户的其他属性。
在 JNDI 适配器特性页面的“其他特性”部分中,添加特性 <service.name>。windchill.mapping.user.attributes,并输入要映射为此特性值的属性 (以逗号分隔)。<service.name> 是要修改其特性的适配器的名称。如果选择将 windchill 替换为 web 应用程序提供的名称或其他任何名称,则可以将特性 "wt.org.webAppName" 添加到 wt.properties 中,并提供要使用的名称。
2. <Windchill>\codebase 目录中打开 LogicalAttributes.xml 文件。搜索 WTUser 类名称的任何定义,并将在步骤 1 中创建的属性的定义附加到此部分。
例如,对于属性名称 "citizenship",定义如下所示。请确保 LogicalForm 标记中的值与您在步骤 1 中定义的属性相同。这些属性区分大小写。
<Property>
<LogicalForm>citizenship</LogicalForm>
<ExternalForm>SCA|citizenship.key</ExternalForm>
</Property>
3. 将有关这些属性以及需要调用以检索这些属性的值的相应服务器计算属性函数 (SCAF) 的其他信息添加到支持自定义的资源束中。
例如,修改 <Windchill>\src\wt\org 目录中的 orgModelRB.rbInfo 文件,并添加类似于以下内容的条目:
WCTYPE|wt.org.WTUser~SCA|citizenship.key.value=Citizenship
WCTYPE|wt.org.WTUser~SCA|citizenship.key.abbreviatedDisplay=Citizenship
WCTYPE|wt.org.WTUser~SCA|citizenship.key.dataType=java.lang.String
WCTYPE|wt.org.WTUser~SCA|citizenship.key.serverFunction=
com.ptc.core.foundation.org.server.impl.SACFLdapAttributeContainerFunction
WCTYPE|wt.org.WTUser~SCA|citizenship.key.serverFunction.arg1=
String{citizenship}
* 
除非您写入自己的 SCAF 函数,否则 serverFunction 的值应与上面提供的值相同。此外,如果在步骤 1 中将该属性定义为布尔型,则 key.dataType 应为 java.lang.Boolean。请勿更改 key.serverFunction 中的类型。该类型必须始终为字符串类型。
4. 然后,在 Windchill shell 中运行以下命令以在运行时位置生成相应的 .ser 文件 (例如 <Windchill>\codebase\wt\org)。
tools bundle -Dbundle.input=<Windchill>\src\wt\org -Dbundle.recurse=true
5. 构建成功后,检查 <Windchill>\codebase\wt\org 上的运行时位置,以确保已创建 .ser 文件。
6. Windchill shell 中运行以下命令,并查看在 <Windchill>\temp 目录中生成的 .lst 文件,以验证正确生成的条目。
windchill wt.util.resource.ResourceBundleUtil wt.org.orgModelRB en_US
7. Windchill shell 运行以下命令以重新构建客户端 jar。
ant -f codebase/MakeJar.xml
8. <WT_HOME>\Tomcat\instances 目录中删除内容。
9. 重新启动 Windchill
10. 导航到“站点” > “实用程序” > “类型和属性管理”,并为用户类型在步骤 2 中定义的属性创建新的别名属性。
验证“内部名称”的值是否与步骤 2 中的 LogicalForm 标记中提供的名称匹配。
根据要映射到的 ldap 中的属性是字符串还是布尔型,在下一个屏幕中选择相应的类型。
在以下屏幕上,系统会提供显示名称。该项可以是任何内容。这可控制将在要添加这些属性的布局上显示的内容。
“映射”字段中,提供与步骤 2 中的 ExternalForm 标记相匹配的值。
11. 创建属性后,您可以将其添加到信息页面布局中。默认情况下,这些其他属性也会显示在简化用户详细信息页面上。要在简化用户详细信息页面中隐藏这些其他属性,需要写入自定义 Java 验证器。您将在安装目录的 prog_examples\principal\user\validators 下找到示例验证器。该文件称为 UserAttributeCompanyNameValidator
基于要隐藏的属性,唯一需要更改的是类的名称和返回类型。您需要在自定义目录中创建类似的文件,然后在 Windchill shell 中执行以下命令来对其进行构建。
ant -f bin/tools.xml class -Dclass.includes=*.java -Dclass.source=
<custom directory structure where the file exists>
例如:
ant -f bin/tools.xml class -Dclass.includes=*.java -Dclass.source=
<Windchill>\prog_examples\principal\user\validators
* 
必须为每个应隐藏的属性写入验证器。
12. 然后,验证器信息应包括在 PrincipalAdmin-service.properties.xconf 文件的 <!-user attribute validators -!> 部分中,该文件位于 codebase\com\ptc\windchill\principal 目录中。
使用 xconfManager -Fp 命令传播更改。
示例:
<OptionserviceClass="com.ptc.windchill.principal.user.validators.
UserAttributeCompanyNameValidator
"
cardinality="duplicate" requestor="null" selector="company" />
13. 重新启动 Windchill。
这对您有帮助吗?