角色设计

Studio 提供用于创建设计时 资源角色行级角色 的可视化工具。

该功能在不超过 10 个实体和角色的小项目中可以免费使用。在大项目中,需要快速开发、企业 或 BPM 版订阅

资源角色设计器

如需新建资源角色,通过 Jmix 工具窗口 的菜单打开:

role open

在对话框中输入角色名称和编码。

role create

Text 标签页

资源角色设计器的 Text 标签页集成了代码编辑器。可以直接编辑代码或通过设计器生成代码。

角色定义

Definition 标签页可以:

  • 定义基础角色属性。

  • 管理项目中的角色层级结构

role definition

角色代码是用来给用户分配角色的。如果已经有用户使用了某些角色,不要再次修改这些角色的代码。

角色层级结构

可以使用 Role Hierarchy 面板查看和管理角色层级结构。

上方面板直接显示角色层级结构。当前选中的角色被视为根角色。

下方面板包含带有操作按钮的工具栏以及可用角色列表。其中包括项目中定义的角色,以及来自链接项目和扩展组件的角色。

可以通过以下方式将角色列表中的角色添加到层级结构中:

  1. Available Roles 列表中双击该角色。

  2. 使用右键菜单操作(在 Available Roles 列表中右键单击角色即可打开)。

  3. 点击 Available Roles 面板顶部的向上箭头按钮。

该角色将被添加为当前角色的父角色。

如需从层级结构中移除角色,请选中该角色并点击减号按钮,或使用右键菜单中的操作。

用户界面权限

User Interface 标签页定义了菜单项和视图的权限。

显示的是选中角色的权限:

  • Current role - 角色本身定义的可编辑权限

  • Ancestor role - 只读显示父辈的权限,可导航至角色文件

role user interface

右侧的树形结构显示了主菜单的结构,包括项目定义的视图以及从框架和扩展组件继承的视图。All Views 组显示了所有无法通过主菜单直接访问的其余应用程序视图。可以借助树上方的搜索字段找到所需的视图。

默认情况下,所有菜单项和视图都是拒绝的。选择列表中的条目并在 View Permissions 面板上选择 Allow,可以添加打开相应菜单项或视图的权限。

使用树上方的工具栏展开或折叠节点。齿轮按钮用于切换展示未指定权限的视图和菜单项。

Allow all views 可以授予对所有视图的访问权限,如果只需要拒绝很少部分视图,也可以用这个选项操作。

实体权限

Entities 标签页定义了实体和属性的 CRUD 权限。

显示的是选中角色的权限:

  • Current role - 可编辑的当前角色的 CRUD 权限

  • Ancestor role - 父辈角色的 CRUD 和属性权限只读显示

role entities

右上角的表格显示了项目中定义的实体,以及从框架和扩展组件继承的实体。可以使用表格上方的搜索字段按名称筛选实体列表。

上方的工具栏包含下列操作:

  • Current project only - 切换展示继承的实体。

  • Assigned only - 切换展示无权限的实体。

所有实体操作都默认拒绝。使用表格中的复选框,可以为选中的实体赋予相应的操作权限。

下方的表显示所选实体的属性权限。默认情况下,拒绝查看和修改所有实体属性。通过选中 ViewModify 复选框,可以为所选属性设置必要的访问级别。

属性表格中的通配符 [*] 选项可以将说有属性标记为 ViewModify,包括实体中目前不存在而将来会添加的属性。

勾选实体表格中 Allow all 复选框会允许全部的 CRUD 操作以及允许 Modify 所有属性,即将选中的实体所有权限都放开。

特定权限

Specific 标签页定义了框架中各种机制的权限。

显示的是选中角色的权限:

  • Current role - 可编辑的当前角色的特定权限

  • Ancestor role - 父辈角色的权限只读显示,可导航至角色文件

role specific

框架使用特定权限来限制对各种机制的访问。在树中,可以看到从框架和扩展组件继承的许可权限。

要添加权限,请使用树上方工具栏中的加号按钮。在 Resource 控件中,指定项目中定义的策略名称。请参阅 特定策略 部分,了解如何创建特定策略。

所有特定策略都默认拒绝访问。在树中选择策略然后在 Specific Permission 面板中允许。

行级角色向导

如需创建一个新的行级角色,点击 Jmix 工具窗口New → Row-level Role

在弹出的窗口内填写角色参数。

row level role create

为用户分配角色时使用的是角色编码,因此,如果已经将角色分配给了某些用户,就不要修改角色编码了。

Studio 会创建并打开一个带注解的角色接口。点击顶部操作面板的 Add Policy → JPQL Policy 可以添加 JPQL 策略

add policy button

Add JPQL Policy 对话框中,指定策略参数:

add jpql policy

点击 OK。会在角色接口中添加一个定义该策略的方法。

类似的,如需添加 谓词策略,可以点击顶部操作面板的 Add Policy → Predicate Policy。然后在 Add Predicate Policy 弹窗中,指定一个实体并选择需要创建的谓词:

add predicate policy