基本自定义 > 用户界面自定义 > 在 UI 中添加操作并进行挂接 > 自定义基于角色的可见性 > 自定义点
  
自定义点
uic 元素
roleaccessprefs.xml 中的每个 UIC 表示要控制的 uicomponent 或操作。
参数
默认值
可能的值
必需?
说明
名称
不可用
字符串
Y
UI 组件的名称。这必须与 actions.xml 中操作元素上的 uicomponent (或 name) 属性的值相匹配。这还必须与资源束中资源条目常数的值相匹配。
顺序
?
非负?整数
N
此 UI 组件在向导中的位置。编号较低的 UI 组件将放置在编号较高的 UI 组件之前。
已启用
true
true|false
N
此 uicomponent 是否必须显示在向导中并由系统使用。
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
此 uicomponent 是否会影响管理者角色。请勿在预设 UIC 中更改此值。对于自定义 UIC,您可以选择自己的设置。
GuestEnabled
true
true|false
N
此 uicomponent 是否会影响访客角色。请勿在预设 UIC 中更改此值。对于自定义 UIC,您可以选择自己的设置。
RunClass
Java 类名称
N
存在 runMethod 的类
runMethod
Java 方法名称
N
UIAccess 发生更改时运行的方法。
这表示更新与此 uicomponent 关联的 UIAccess 元素时所运行的方法的名称。
此方法的签名必须是:
void foo (WTPrincipal principal, WTContainer container, boolean isRender)
传入的承担者是要对其进行操作的组或用户。boolean isRender 是 UIAccess 更新后的值。
使自定义选项卡对可用于可见性管理
实际上,使自定义操作可用于可见性管理与使得预设操作可用的步骤相同。但是,选项卡不能由容器管理员管理 (配置基于角色的可见性)。因此,您只能使站点和组织管理员使用自定义选项卡来配置可见性配置文件。这意味着您仅可以将选项卡的 <uic> 元素添加到 roleaccessprefs.xml 的 <global> 部分。例如,假设您已创建一个自定义选项卡,并且具有关联的 <MyTab>actions.xml 文件。则可以将选项卡添加到基于配置文件的可见性管理列表中,如下所示:
1. 将新的 uic 元素添加到 <global> 部分下的 roleaccessprefs.xml 中,并使用唯一的名称,例如 CUSTOMIZED_TAB。
<uic name="CUSTOMIZED_TAB" order="190" enabled="true"
defaultAll="true"/>
2. 将 actions.xml 中的适当操作与 uiccomponent 关联。
<action name="list2" uicomponent="CUSTOMIZED_TAB">
<command windowType="page"/>
</action>
3. 使用与 uic 名称相同的常数,将新条目添加到 roleAccessResource.java 中。该值是在配置文件操作 UI 中显示的内容。编译更新的 Java 文件:
@RBEntry("View Customized Tab ")
public static final String PROJECT_CREATE_FOLDERS =
"CUSTOMIZED_TAB ";
4. 重新启动 servlet 引擎和 MethodServer。
将一个 uicomponent 分配给多个操作
如果您希望将一个 UI 组件与多个操作关联,则需要使用相同的值为每个操作指定 uicomponent 属性。例如,使用解决方案中的“过程 - 使操作可用于对可见性管理”中描述的步骤创建一个与 folder_create 操作关联的 UI 组件,将其命名为 PROJECT_CREATE_FOLDERS。您可以将 list_create_folder 操作分配给相同 UI 组件,方法是在 actions.xml 中为该动作指定 uicomponent 属性,如下所示:
<action name="list_create_folder"
uicomponent="PROJECT_CREATE_FOLDERS" ajax="row">
因此,“配置角色的操作”“新建配置文件”页面中的“创建文件夹”条目会影响 folder_create 和 list_create_folder 操作的可见性。
更改 UI 组件的标签
您可以在“配置角色的操作”“新建配置文件”页面的 UI 组件中更改所使用的标签,而不对该 UI 组件进行任何其他更改。只需更改 roleAccessResource.java 文件中的关联资源条目值,然后重新生成束。例如:
@RBEntry("Create Folders - My New Label ")
public static final String PROJECT_CREATE_FOLDERS =
"PROJECT_CREATE_FOLDERS ";
更新访问控制 (基于角色的高级 UI)
可以使用基于角色的 UI 扩展用户权限。此操作可用于更新实际访问控制 (以专用或策略访问控制列表的形式),或用于执行可能的任何其他操作。
这是通过在配置文件中的 uic 上指定 class/method 组合来完成的。更新关联的 uicomponent 时,将调用此方法。例如,基于角色的 UI 特征的包括扩展“修改团队”权限的功能。配置文件中的 uic 元素包含两个附加属性,可用于标识要调用的类和方法:
<uic name="PROJECT_MODIFY_TEAM" order="30" enabled="true"
defaultAll="false"
defaultManager="true" defaultGuest="false"
managerEnabled="false" guestEnabled="false"
runClass="com.ptc.netmarkets.roleAccess.StandardNmRoleAccessService"
runMethod="modifyTeamPermissions"/>
对 runClass 的唯一限制是需要从 MethodServer 进行访问。指定 runMethod="myRunMethod",则 myRunMethod 必须具有以下签名:
public static void myRunMethod(WTPrincipal principal, WTContainer
container, boolean isRender)
throws WTException
传入的承担者是要对其进行操作的组或用户。boolean isRender 是在 UIAccess 表格的字段中针对传入的承担者设置的值。