基本自定义 > 用户界面自定义 > 在 UI 中添加操作并进行挂接 > 自定义基于角色的可见性 > 解决方案
  
解决方案
修改 roleaccessprefs.xml 文件 (以及所需的关联文件)。
必备知识
要实现此目标,需要了解以下内容:
Windchill 中用户角色的行为
Windchill 中专用访问控制策略的管理
Windchill 客户端体系结构中的操作框架
Windchill 客户端体系结构中的导航框架
XML 文件自定义的管理
资源文件自定义的管理
解决方案元素
元素
类型
说明
*actions.xml
XML
定义操作和其他 UI 组件的文件。可根据需要为操作指定一个 uicomponent 值。Actions.xml 与其他 *actions.xml 文件均位于 <Windchill>\codebase\config\actions 中。
Roleaccessprefs.xml
XML
用于为 UI 组件分配默认可见性的文件。在此文件中设置项可使其对站点和容器均不显示。容器管理器是否可以覆盖默认值也可在此处进行更改。位于 <Windchill>/codebase 中。
RoleAccessResource.java
java
定义要在操作或 UI 组件的 UI 中提供的标签。位于 <Windchill>\src\com\ptc\netmarkets\roleAccess\ 中。
在 actions.xml (以及全部 *actions.xml 文件) 中,可为操作分配 uicomponent 属性值。uicomponent 属性提供可从 roleaccessprefs.xml 和 roleAccessResource.java 文件引用的 UI 组件的名称。多个操作可使用相同 uicomponent 值;这样便可将这些操作作为单个 UI 组件来管理。如果操作没有 uicomponent,则可使用操作 "name" 将其作为 UI 组件进行引用。但是,在这种情况下,不能将其他操作分组到单个 UI 组件中。
roleaccessprefs.xml 文件包含一个 <uics> 元素,其中包含与 Windchill 用户界面中的主要选项卡相对应的多个元素 (或部分)。例如,<project> 部分对应于“项目”选项卡。每个部分包含零个或多个 <uic> 元素,每个元素都代表一个可管理该选项卡中可见性的 UI 组件。使用 <uic> 元素的 "name" 属性指定的每个 UI 组件都可以出现在一个或多个部分中。这将允许针对不同的选项卡单独分配该 UI 组件的默认可见性设置。
roleaccessprefs.xml 文件适用于基于配置文件 (在站点和组织级别) 和基于角色 (容器级别) 的可见性管理的 UI 组件列表。但是,<global> 部分仅适用于使用配置文件的可见性管理。如果 UI 组件未关联至特定选项卡 (例如,在 Windchill UI 标题中具有“搜索”链接的情况),或者 UI 组件是第一级选项卡本身,则必须在 roleaccessprefs.xml 的 <global> 部分列出。
每个 UI 组件都必须在 roleAccessResource.java 中具有一个条目,以便为该 UI 组件提供用户友好型标签。这些标签适用于配置可见性时将会显示给管理员的列表中的 UI 组件。在此文件中,资源条目 "constant" 标识了 UI 组件;如果操作没有 uicomponent,则它必须与操作定义中的 uicomponent 或操作名称相匹配。资源条目 "value" 可提供用户友好型标签。
* 
您的 UI 组件标签应为动词短语。如果您的操作/UI 组件名称尚不是动词短语,请在前面放置 'View',例如 "View Team Page"。
过程 - 使操作可用于对可见性管理
在本示例中,您可以为管理员提供用于管理“项目”“程序”“产品”“库”选项卡中“创建文件夹”操作可见性的功能。
* 
此示例假设“创建文件夹”操作对于基于角色的可见性管理尚不可用;在实际产品中,其预设为可用。
1. 将新的 <uic> 添加到 roleaccessprefs.xml 中的 <project>、<program>、<product> 和 <library> 部分下:
<uic name="PROJECT_CREATE_FOLDERS" order="00" enabled="true"
defaultAll="true" defaultManager="true" defaultGuest="false"
managerEnabled="true" guestEnabled="false"/>
有关属性说明,请参阅自定义点中的“uic 元素”一节。
* 
针对那些对于多个选项卡类型均有效的操作,请将条目放置在您希望其影响的所有部分下。
2. 在 roleAccessResource.java 中,为操作显示名称添加新的资源条目:
@RBEntry("Create Folders")
public static final String PROJECT_CREATE_FOLDERS =
"PROJECT_CREATE_FOLDERS";
从 Windchill shell 中重新编译束:
javac -d codebase -encoding UTF8
src/com/ptc/netmarkets/roleAccess/roleAccessResource*.java
3. 在 <Windchill>\codebase\config\actions\actions.xml 中,通过以下方式修改创建文件夹操作:添加属性 uicomponent="PROJECT_CREATE_FOLDERS"
<action name=" folder_create" checkaccess="true"
uicomponent="PROJECT_CREATE_FOLDERS">
* 
在自定义 XML 文件时,请遵循备份 XML 文件的最佳实践。
4. 重新启动 servlet 引擎和方法服务器。
上方的步骤 1 到 3 可按任意顺序执行。请注意,"PROJECT_CREATE_FOLDERS" 用于 uic 名称、资源条目常数 (但没有引号) 和操作 uicomponent。必须使得这三个项均共享相同的值,才能将自定义行为关联在一起。
完成此过程后,管理员现在可以基于在站点或组织级别定义的配置文件和容器级别的角色,在 “项目”“程序”“产品”“库”选项卡下,将可见性配置为“创建文件夹”操作。