当前位置: 首页 > 后端技术 > Java

Foxnic-Web中数据权限的使用

时间:2023-04-01 14:04:09 Java

注册环境变量环境变量用于数据权限内的逻辑判断和SQL变量替换。环境变量可以分为全局环境变量和局部环境变量。注册全局环境变量后,就可以在整个应用程序内部使用了。局部环境变量注册后,只在对应模块的范围内使用。本地环境变量通常与Po分开,即可以在对应的Po查询Service中使用。注册全局环境变量局部环境变量配置权限规则1)配置数据权限规则打开数据权限规则基本信息,如图:使用权限规则。PO类型:用于指定查询的对象,Po类型的全限定名。2)在系统、数据权限中找到配置范围和规则树,并进行配置:以“我的关闭流程为例”,字面意思是流程查询范围框在1中,流程状态必须完成;2、当前登录人为流程审批人;上图中只有一个scope项,所以只有一个Select语句。当范围项有多个时,数据权限SQL构建器会生成多个Select语句并组合执行。点击范围的“条件”按钮,打开范围配置,选择一个条件节点,如图:条件节点的属性包括:Name:条件节点的名称Valid:控制当前条件是否生效node是否有效,即生成SQL语句时,是否拼接。应用条件:SpringEL表达式,要求返回逻辑值。如果表达式在运行时返回true,则将当前条件节点拼接到最终的查询语句中,否则不进入最终的查询语句。可以通过黑色小按钮“变量”选择相关变量。所选范围是默认上下文和手动注册的上下文。测试Vo值:指定Vo值(JSONObject字符串),模拟前端传入的参数,点击黑色按钮“测试”,测试刚才设置的应用条件SpringEL表达式。前置逻辑:当前表达式出现在查询语句中时使用的条件逻辑为or或and。目标属性:条件表达式中用于过滤的属性字段。比如这里我们要求status='passed'的条件表达式出现在最终的查询语句中,那么目标属性就是status。因此,条件节点只是目标属性的配置。如果要配置多个目标属性的复杂查询,则需要使用条件逻辑树。条件类型:条件表达式的判断方法,SQL中的比较运算符。变量:=条件通过比较运算符判断出的目标属性的值,要求为JSONArray字符串。支持常量和环境变量。如果是环境变量,需要用${}表示里面的内容是SpringEL表达式,比如["${getSession().getActivatedEmployeeId()}"]。备注:自定义备注信息。有两种类型的逻辑节点,复合节点和叶节点。Composite用于组合叶子节点之间的优先级,复合节点中的节点在最终的SQL语句中会被括在括号中。例如本例生成的最终条件类似如下结构:status='passed'and(approverEmployeeId='xxx'orapproverRoleeId='xxx')使用数据权限配置数据权限规则后,需要指定在代码许可规则中使用某些数据。每条数据权限规则都需要设置一个代码,在程序中可以作为参数传入。使用chs_instance_joined数据权限时,输出SQL语句如下:SELECTFROM(selectfrom(--第一个范围(selectt.*fromchs_change_instancetWHERE((t.deleted=0ANDt.tenant_id='T001'))AND(((t.drafter_id='558321538131034112')AND(t.drafter_id='558321538131034112'))))union--第二范围(selectt.fromchs_change_instancetWHERE((t.deleted=0ANDt.tenant_id='T001'))AND((exists(SELECT1FROM(selectfromchs_change_approverWHERE(approver_type='employee')AND(deleted=0))t_0WHEREt.id=t_0.instance_idAND(t_0.approver_id='558321538131034112')))OR(存在(SELECT1FROM(select*fromchs_change_approverWHERE(approver_type='busi_role')AND(deleted=0))t_0WHEREt.id=t_0.instance_idAND(t_0.approver'_idIN(498946989573017600'))))))--分页排序)tORDERBYt.create_timeDESC)PAGED_QUERYLIMIT0,50当使用chs_instance_approved数据权限时,输出SQL语句如下:SELECT*FROM(--range查询语句选择t。来自chs_change_instancetWHERE((t.deleted=0ANDt.tenant_id='T001'))AND(((t.status='passed')AND((exists(SELECT1FROM(selectfromhrm_employeeWHERE(deleted=0)AND(tenant_id='T001'))t_0join(selectfromchs_change_approverWHERE(approver_type='employee')AND(approver_type='employee')AND(approver_type='employee')AND(deleted=0))t_1ont_1.approver_id=t_0.idWHEREt.id=t_1.instance_idAND(t_0.id='558321538131034112')))OR(exists(SELECT1FROM(selectfromchs_change_approverWHERE(approver_type='busi_role')AND(deleted=0))t_0WHEREt.id=t_0.instance_idAND(t_0.approver_idIN('498946989573017600'))))))ORDERBYt.create_timeDESC--页面以及排序)PAGED_QUERYLIMIT0,50最末,查询查询查询结果的范围返回。相关项目https://gitee.com/LeeFJ/foxnichttps://gitee.com/LeeFJ/foxnic-webhttps://gitee.com/lank/eam