通过表达式及函数动态获取用户的某项特征,一般用于数据权限设置。
若无法直接根据当前用户的信息获取到机构信息,则需要用户和机构的映射表,然后创建用户属性从映射表中根据不同的用户获取机构信息。
功能入口
入口1:在“系统导航栏”选择 公共设置,展开资源目录区,在“用户属性”或其节点下文件夹的更多操作选择 新建 > 用户属性,选择数据源之后,进入“新建用户属性”界面。
入口2:在“公共设置”界面主菜单选择 用户属性。
界面介绍
“用户属性”界面主要分为以下几个区域:
- 可选资源区:该区主要列出了设置用户属性需要使用的资源。
- 用户属性设置区:该区列出了设置用户属性的所有设置项,其表达式使用的资源可从“可选资源区”中拖拽。
设置项说明
“用户属性设置区”设置项说明如下:
设置项 | 说明 |
---|
名称 | 输入该用户属性的真名。 |
别名 | 输入该用户属性的别名。 |
类型 | 选择该用户属性的数据类型,主要包含:字符串、整型、浮点型、日期、时间、日期时间。 |
数据源 | 该用户属性所属的数据源,在进入“用户属性”界面前选择。 |
描述 | 对该用户属性的相关描述,该描述用于在资源目录区显示的提示信息中。 |
表达式 | 该用户属性的表达式,允用户属性表达式许使用的资源有:表、视图、字段、函数。 |
使用说明
用户属性通常会和系统函数结合使用。
例如新建一个用户属性叫做"当前用户所属机构",此用户属性的含义是根据用户名获得了用户所在的部门。
它的表达式是:select org_code from t_org_info where usr_name =CurrentUserName( )。通常用户属性会使用在行权限设置的表达式中。
用户属性和数据权限的关系
数据权限和用户属性通常结合在一起使用。
- 数据权限:数据权限是针对具体表,它是根据当前用户对字段数据的过滤,和字段权限相比它是一种横向的权限设置。
- 用户属性:在新建的用户属性中通过系统函数得到用户所对应的属性。用户属性可以跨数据库使用,即从A库(比如是知识库)中取得用户属性,可应用于其它某个数据库的查询中。
具体步骤:
下面以一个示例来说明用户属性和数据权限如何结合使用:
1、设置用户属性。例如新建一个用户属性叫做"GetUserProperty(所属部门)",此用户属性的含义是根据用户名获得了用户所在的部门。它的表达式是:select depart from departmentTable where user =CurrentUserName( )。通常用户属性会使用在行权限设置的表达式中。
2、设置数据权限。例如某个A表设置了数据权限,表达式是:A.department = GetUserProperty(所属部门);在可视化数据集中,如果选择的字段涉及到表A,那么" A.department = GetUserProperty(所属部门)"会自动加入到 where部分去。这样,用户登录后,在可视化数据集中选取A表中的字段,将只能看到该部门的数据了。即:
" select A.××× from A where A.department = GetUserProperty(所属部门)"
如果当前用户所属的部门为"部门A":
" select A.××× from A where A.department = (部门A)"
蓝色部分语句是系统自动添加。
注意事项
1.用户属性的返回值实际上是SQL语句的where部分,如果用户属性返回多个值。这时候,就不能用"=",而应该用"in"。例如:数据行权限管理, 表达式是:分行号 =GetUserProperty(所属分行) 改成:分行号 inGetUserProperty(所属分行) 。
2.GetUserProperty是一个系统自定义的函数,不能手写,要从左边的函数树中拖动到表达式编辑器中。
3.使用用户属性管理和数据权限管理需要拥有【系统管理】的操作权限和相关的资源权限。