基本自定义 > 用户界面自定义 > 通用 UI 自定义 > 自定义基于角色的 UI 功能 - 操作可见性
自定义基于角色的 UI 功能 - 操作可见性
目标
您希望自定义可供站点、组织或容器管理器通过基于角色的可见性特征进行管理的 UI 组件集 (操作或其他 UI 元素)。
背景
基于角色的 UI 功能使管理员能够优化呈现给用户的操作的数量,让用户无需看到其角色不需要或用不到的操作,从而避免不必要的困扰。最初,这种支持只针对容器管理器 (特别是项目经理)。它已扩展到称为 profiles 的概念,这可在站点或组织级别设置操作可见性。
站点管理员、组织管理员或容器管理员可以指定对定义的操作具有可见性的用户。对于站点和组织管理员,这可通过配置文件来完成。配置文件可以在“站点”->“配置文件”或“组织”->“配置文件”中创建。定义的操作将以其默认设置显示,管理员可以选择隐藏这些操作。然后,管理员可以指定属于此配置文件的参与者 (用户、组、组织)。配置文件的所有成员都将具有该可见性。如果一个成员归属于多个配置文件,则会提供最大的可见性。
在容器级别,管理员可以根据用户 roles 指定可见性。这些角色中的任何人都将具有指定的可见性。容器级角色可见性将改写成员可能为参与者的任何配置文件。
有关配置文件和基于角色的可见性管理的详细信息,请参阅关于按角色配置操作可见性
范围/适用性/假设
将启用基于角色的可见性管理功能,即,将首选项 com.ptc.netmarkets.roleAccess.enabled 设置为 true。自定义操作可在此功能处于关闭状态时执行,但是结果将在此功能打开后才会出现在 UI 中。
自定义者可以使用此功能来管理预设 UI 组件和自定义的 UI 组件。
预期结果
通过角色配置可见性以及配置配置文件时,将针对管理员用户显示可以管理的 UI 组件列表。管理员无法管理未包括在此列表中的任何 UI 组件的可见性。
作为自定义者,您可以自定义管理员可用的 UI 组件列表。您可以:
将 UI 组件添加到列表中,
从列表中移除 UI 组件,
指定 UI 组件的默认可见性设置,
更改 UI 组件在列表中的显示顺序,以及
更改列表中 UI 组件的标签。
在站点或组织级别,您的目的是管理创建配置文件时显示的列表:
在容器级别,您将管理按角色配置可见性时所显示的对等列表:
解决方案
修改 roleaccessprefs.xml 文件 (以及所需的关联文件)。
必备知识
要实现此目标,需要了解以下内容:
Windchill 中用户角色的行为
Windchill 中专用访问控制策略的管理
Windchill 客户端体系结构中的操作框架
Windchill 客户端体系结构中的导航框架
XML 文件自定义的管理
RBINFO 文件自定义的管理
* 
下面的“更多资源”一节包括对许多或所有这些主题的参考。
解决方案元素
元素
类型
说明
*actionModels.xml
XML
此类文件用于定义操作将使用的模型。如果尚未在模型中定义操作,则需要为验证码创建一个操作,以便找到该操作并正确设置可见性。actionmodels.xml 文件位于 <WT_HOME>/codebase 下;其他的 *actionmodels.xml 文件通常位于 <WT_HOME>/codebase/config/actions 下。
*actions.xml
XML
定义操作和其他 UI 组件的文件。可以选择为操作赋予值 uicomponent
actions.xml 文件位于 <WT_HOME>/codebase/config/actions 下,与其他的 *actions.xml 文件存放在同一位置。
roleaccessprefs.xml
XML
用于为 UI 组件分配默认可见性的文件。在此文件中设置项可使其对站点和容器均不显示。容器管理器是否可以改写默认值也可在此处进行更改。
位于 <WT_HOME>/codebase 下。
roleAccessResource.java
XML
定义要在用户界面中显示的操作或 UI 组件的标签。
位于 <WT_HOME>/wtCustom/com/ptc/netmarkets/roleAccess 下。
actions.xml (以及所有 *actions.xml 文件) 中,可以为操作分配 uicomponent 属性值。uicomponent 属性提供了 UI 组件的名称,UI 组件可以从 roleaccessprefs.xmlroleAccessResource.java 文件中引用。多个操作可使用相同的 uicomponent 值;这样便可将这些操作作为单个 UI 组件来管理。如果操作没有 uicomponent,则可以使用操作 name 将其作为 UI 组件进行引用。但是,在这种情况下,不能将其他操作分组到单个 UI 组件中。
roleaccessprefs.xml 文件由 <uics> 元素构成,该元素中包含的多个元素 (或部分) 与 Windchill 用户界面中的主要选项卡相对应。例如,<project> 部分对应于“项目”选项卡。每个部分包含零个或多个 <uic> 元素,每个元素都代表一个可管理该选项卡中可见性的 UI 组件。使用 <uic> 元素的 name 属性指定的每个 UI 组件都可以出现在一个或多个部分中。这将允许针对不同的选项卡单独分配该 UI 组件的默认可见性设置。
roleaccessprefs.xml 文件适用于基于配置文件 (站点和组织级别) 和基于角色 (容器级别) 的可见性管理的 UI 组件列表。但是,<global> 部分仅适用于使用配置文件的可见性管理。如果 UI 组件未关联至特定选项卡 (例如,Windchill 用户界面标题中的“搜索”链接就是这种情况),或 UI 组件本身是第一级选项卡,则应在 roleaccessprefs.xml 的 <global> 部分中列出该组件。
每个 UI 组件都必须在 roleAccessResource.java 中有相应的条目,而相应的条目可以为 UI 组件提供用户友好型标签。这些标签适用于配置可见性时将会显示给管理员的列表中的 UI 组件。在此文件中,资源条目常量用于标识 UI 组件;该常量必须与操作定义中的 uicomponent 相匹配,或与操作名称相匹配 (如果操作没有 uicomponent)。资源条目值可提供用户友好型标签。
* 
您的 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” guestEn
abled=”false”/>
* 
有关属性说明,请参阅下文中有关 uic 元素的一节。
* 
针对那些对于多个选项卡类型均有效的操作,请将条目放置在您希望其影响的所有部分下。
2. roleAccessResource.java 中,为操作的显示名称添加新的资源条目:
31.value=Create Folders
31.constant=PROJECT_CREATE_FOLDERS
重新生成束。uic 的名称应与资源束中条目的常量相同。
3. <WT_HOME>/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。必须使得这三个项均共享相同的值,才能将自定义行为关联在一起。
完成此过程后,管理员现可基于在站点或组织级别定义的配置文件和容器级别的角色,为“项目”、“项目群”、“产品”和“存储库”选项卡下的“创建文件夹”操作配置可见性。
自定义点
uic 元素
roleaccessprefs.xml 中的每个 UIC 均代表一个需要控制的 UI 组件或操作。
参数
默认值
可能的值
必需?
说明
name
不可用
字符串
Y
UI 组件的名称。这必须与 actions.xml 中操作元素的 uicomponent (或 name) 属性的值相匹配。这还必须与资源束中资源条目常量的值相匹配。
order
不可用
整数
N
此 UI 组件在向导中的位置。编号较低的 UI 组件将放置在编号较高的 UI 组件之前。
enabled
true
true|false
N
此 UI 组件是否会显示在向导中并由系统使用。
defaultAll
true
true|false
N
全部成员的默认可见性值。
defaultManager
true
true|false
N
项目经理的默认可见性值。
* 
权限是全部角色的全部权限的并集;如果将 defaultManager 设置为 false,则还应将 defaultAll 设置为 false,否则,管理员仍可通过 ALL_MEMBERS 角色进行访问。
defaultGuest
true
true|false
N
“访客”角色中人员的默认可见性值。
* 
从技术上讲,访客并不是项目的成员;此角色的成员不会与 ALL_MEMBERS 角色合并。
managerEnabled
true
true|false
N
此 UI 组件是否会影响管理员角色。请勿在预设 UIC 中更改此值。对于自定义 UIC,您可以选择自己的设置。
guestEnabled
true
true|false
N
此 UI 组件是否会影响访客角色。请勿在预设 UIC 中更改此值。对于自定义 UIC,您可以选择自己的设置。
使自定义选项卡对可用于可见性管理
实际上,使自定义操作可用于可见性管理与使得预设操作可用的步骤相同。但是,选项卡不能由容器管理员管理 (配置基于角色的可见性)。因此,您只能使站点和组织管理员使用自定义选项卡来配置可见性配置文件。这意味着,您只能将选项卡的 <uic> 元素添加到 roleaccessprefs.xml 的 <global> 部分。例如,假设您已创建一个自定义选项卡,并且已关联 <MyTab>actions.xml 文件。则可以将选项卡添加到基于配置文件的可见性管理列表中,如下所示:
1. roleaccessprefs.xml 的 <global> 部分下添加新的 uic 元素,并为其指定唯一名称,例如 CUSTOMIZED_TAB。
<uic name=”CUSTOMIZED_TAB” order=”190” enabled=”true” defaultAll=”true”/>
2. action.xml 文件中的相应操作与 uicomponent 关联。
<ooleanpe name=”customization” >
<action name=”list2” uicomponent=”CUSTOMIZED_TAB”>
<command windowType=”page”/>
</action>
3. roleAccessResource.java 中添加新条目,其中常量的值应与 uic 的名称相同该值是在配置文件操作 UI 中显示的内容。
40.value=View Customized Tab
40.constant=CUSTOMIZED_TAB
重新生成束。
4. 重新启动 servlet 引擎和 MethodServer。
将一个 UI 组件分配给多个操作
如果要将一个 UI 组件与多个操作关联,则需使用相同的值为每个操作指定 uicomponent 属性。例如,使用“过程 - 使操作可用于可见性管理”一节中描述的步骤创建一个与 folder_create 操作关联的 UI 组件,将其命名为 PROJECT_CREATE_FOLDERS。您可以通过在 actions.xml 中为该操作指定 uicomponent 属性,将 list_create_folder 操作分配给同一个 UI 组件,如下所示:
<action name=”list_create_folder”
uicomponent=”PROJECT_CREATE_FOLDERS” ajax=”row”>
因此,在用于配置角色和用于创建配置文件的页面中的“创建文件夹”条目将影响 folder_create 和 list_create_folder 操作的可见性。
更改 UI 组件的标签
您可以在配置角色和创建配置文件页面的 UI 组件中更改所使用的标签,而不对该 UI 组件进行任何其他更改。只需在 roleAccessResource.java 文件中变更关联的资源条目值,然后重新生成束即可。例如:
31.value=Create Folders - My New Label
31.constant=PROJECT_CREATE_FOLDERS
示例代码
预设代码用法示例
多个操作使用同一个 UI 组件的示例:“产品”/“项目”/“存储库”中的“团队”页面共享相同的代码,但每个对象的每个操作都将单独定义。每个操作都有相同的 uicomponent:"PROJECT_TEAM"。这允许使用相同的资源 (rbInfo) 条目,并有助于尽可能减小“创建配置文件”页面中操作显示表的大小。但仍需在 roleaccessprefs.xml 中为使用它的每个选项卡类型定义 PROJECT_TEAM,并且可以为每个选项卡类型设置不同的默认值。
更多资源
相关自定义文档
其他相关 Windchill 文档
这对您有帮助吗?