通过表达式及函数动态获取用户的某项特征,一般用于数据权限设置。

若无法直接根据当前用户的信息获取到机构信息,则需要用户和机构的映射表,然后创建用户属性从映射表中根据不同的用户获取机构信息。

功能入口

在“系统导航栏”选择 公共设置

入口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.使用用户属性管理和数据权限管理需要拥有【系统管理】的操作权限和相关的资源权限。