语义模型—数据权限篇一、语义模型权限功能介绍语义模型增加数据权限功能,是为了在语义模型执行时能根据预先定义好的权限规则,对查询结果进行过滤。权限规则在“动态建模平台权限管理授权管理数据权限”功能节点下定义,语义模型是通过在语义模型设计的第三步“选择字段”中‘启用权限’,‘资源实体’和‘使用场景’这三个字段的设置来控制是否启用数据权限以及启用数据权限后受限的权限规则。1、字段数据权限语义模型的字段数据权限控制模式分为:管理报表和单据业务两种模式,默认的是管理报表模式。模式的选择设置在语义模型的设计界面的第五步“选项”中进行设置。(1)当数据权限控制模式设置为:管理报表模式时,此时语义模型中各字段是否启用数据权限以及启用数据权限所走的使用场景均是在语义模型设计的第三步“选择字段”处进行设置的。当数据权限控制模式为:管理报表模式时,选择字段处各元数据字段对应的“启用权限”是可编辑的,当某一字段的“启用权限”设置为“不启用”时,表示该字段不启用任何数据权限,此时该字段对应的“资源实体”和“使用场景”是不可编辑的,权限用户登录产品对该语义模型进行数据预览时可预览到全部数据。当某一字段的“启用权限”设置为“启用”时,则该字段对应的“资源实体”、“使用场景”均可编辑,此时需要正确设置资源实体和使用场景,如下图对供应商字段启用了数据权限并且使用的是通用引用场景。在语义模型处设置了启用权限后,如果在“动态建模平台权限管理授权管理数据权限”处对权限用户设置了该资源实体在该使用场景下数据权限规则,那么权限用户对该语义模型进行数据预览时可预览到的数据就会按照数据权限规则进行过滤。如下图所示对角色test99_pt在供应商基本档案的通用引用场景下设置了授权规则,则该角色对应的权限用户登录产品对上图中的语义模型进行数据预览时,可预览到的数据结果会按照下图中设置的权限规则内容进行过滤。(2)当数据权限控制模式设置为:单据业务时,此时数据权限走的是元数据处的数据权限场景。当数据权限控制模式设置为:单据业务时,选择字段处各字段对应的“启用权限”、“资源实体”、“数据权限”字段均是不可编辑的,系统会自动将所有字段的“启用权限”设置为启用,并自动获取的各字段在元数据管理处关联的资源实体信息及权限使用场景。如下图所示,在“元数据管理”处采购订单上的供应商关联的类型是“供应商基本信息”并且启用了使用权,使用权组设置为了SCMDefaul即供应链场景。那么当语义模型在“选择表”处如果选择的数据库表为“采购订单”时并且在“选择字段”处选择了“采购订单”表上的供应商字段,然后在语义模型“选项”处将数据权限控制模式设置为“单据业务”,则“选择字段”处会自动带出元数据管理里采购订单上的供应商字段的类型信息作为“资源实体”的内容,将元数据管理里采购订单上的供应商字段的使用权组信息作为“使用场景”的内容。同管理报表业务模式一样,单据业务模式在此处设置完毕后如果权限用户在数据权限设置处该资源实体在该使用场景下被设置了数据权限规则,那么权限用户对该语义模型进行数据预览时可预览到的数据会按照权限规则进行过滤。需要注意的是:当数据权限控制模式是单据业务时,字段类型只能是ncmdfield,而且需要有元数据对应。2、参数数据权限字段数据权限只是控制在语义模型数据预览时可预览到的数据的范围,而如果预览的语义模型中设置了参数,在预览数据弹出来的参数录入界面内可以看到的参数值范围却是全部数据,也就是说对字段设置的数据权限对参数不起作用。对参数值范围设置数据权限需要单独进行设置。在查询参数设置页签内,每个参数都对应了“启用权限”和“使用场景”两个字段,当参数的“启用权限”字段设置为“不启用”时表示不对该参数启用数据权限,该参数对应的使用场景字段不可编辑。当参数的“启用权限”字段设置为“启用”时表示对该参数启用数据权限,该参数对应的使用场景字段变为可编辑,指定了使用场景后则表示该参数启用数据权限并且受控的是此处设置的使用场景下的数据权限规则。二、使用场景不论语义模型选项处设置的权限控制模式是哪种模式,最终的都需要在“动态建模平台权限管理授权管理数据权限”设置数据权限规则,下面我们先将数据权限设置完毕后再分析语义模型数据权限是如何实现的。在数据权限处,对角色test99_pt在资源实体:供应商基本信息中设置两种场景的权限规则,分别是:供应链通用引用场景,此场景下的规则是只可使用供应商编码为02的供应商;通用引用场景,此场景下的规则是只可使用编码为供应商1的供应商。在语义模型设计第一步“选择表”中支持5种方式:元数据、元定义、语义脚本、数据加工和业务数据,以下以要查询采购订单的订单信息:订单号、供应商信息为例,分别按照这5中方式说明下数据权限是如何控制的。2.1、元数据在“选择表”处选择选择表的来源方式为元数据,进入元数据选择界面选择需要的元数据信息:确定后,在“选择字段”页签会默认显示出上步中勾选的元数据,所有字段初始状态的“启用权限”均是不启用。2.11权限控制模式:管理报表选项页签的权限控制模式初始态默认为“管理报表”,因此此时的“启用权限”字段是可编辑的,将字段编码为:pk_supplier,字段名称为:供应商的字段对应的启用权限设置为启用,对应的资源实体设置为:供应商基本信息,使用场景设置为:通用引用。以上已完成语义模型在管理报表权限控制模式下的数据权限设置操作。由于最开始我们已经在数据权限处将test99_pt角色对资源实体:供应商基本信息在通用引用使用场景下的权限规则设置为:只可使用编码为供应商1的供应商,因此拥有该角色的权限用户对此语义模型进行数据预览时可预览到数据信息只能是供应商编码为供应商1的订单信息,截图如下所示:2.12权限控制模式:单据业务进入语义模型设计的“选项”页签,将权限控制模式修改为“单据业务”,此时进入“选择字段页签”所有字段的“启用权限”字段变为“启用”,并且“资源实体”和“使用场景”被自动带出并不可编辑。此时带出来的资源实体和使用场景的值是取的元数据管理处的值,如上图所示采购订单上的供应商字段自动回写的资源实体是供应商基本信息,使用场景是供应商通用引用,进入“应用管理开发配置工具系统管理工具元数据管理”中采购订单上的供应商引用的类型是“供应商基本信息”,使用权组是SCMDfault,即供应链通用引用场景,与语义模型自动带出的信息一致。由于最开始我们已经在数据权限处将test99_pt角色对资源实体:供应商基本信息在供应链通用引用使用场景下的权限规则设置为:只可使用供应商编码为02的供应商,因此拥有该角色的权限用户对此语义模型进行数据预览时可预览到数据信息只能是供应商编码为02的订单信息,截图如下所示:2.2元定义语义模型使用元定义进行设计时的权限控制与使用元数据设计的过程相似,只不过使用元数据时连接条件会根据选择元数据字段的引用情况自动带出,而使用元定义则需要手工的维护连接条件。2.21权限控制模式:管理报表当权限控制模式设置为管理报表时,使用元定义的数据权限和使用元数据的数据权限基本相同,都是在此处不再做过多的介绍。2.22权限控制模式:单据业务当权限控制模式设置为单据业务时,语义模型使用元定义时此时的字段的数据权限控制同元定义,但是有一点需要注意,就是如果某个字段需要启用数据权限,那么在选择字段的时候该字段一定要与其他字段一同添加,不能单独添加这个字段,因为当数据权限控制模式是单据业务时,字段类型只能是ncmdfield,而字段只有批量选择添加时字段类型才能是ncmdfield。下面以对供应商字段设置数据权限为例说明下:在语义模型增加字段时,如果只选择供应商一个字段即点击确定字段被选择后数据权限默认不启用,资源实体和使用场景为空。在进入“选项”页签将数据权限控制模式改为“单据业务”,返回“选择字段”页签,如下图所示虽然供应商字段启用权限被更新为启用,但是资源实体和使用场景字段并没有获取到任何值,这样会导致数据权限无法生效。下面进入“选项”页签将权限控制模式改会报表模式并将供应商字段删除,然后我们通过批量选择字段方式增加字段,以同时增加两个字段为例,界面如下图所示,选中字段后点击“确定”。选中的字段即可出现在界面内,从下面的截图可以看出供应商字段的启用权限默认仍是不启用,进入“选项”页签将数据权限控制模式设置为“单据业务”,返回“选择字段”页签,则供应商字段的启用权限更新为“启用”并且资源实体、使用场景字段也从元数据处获取到了相应的值信息。权限用户进入语义模型的数据预览,则可预览到的数据会按照如上图所示的使用场景下的权限规则进行过滤。2.3语义脚本上面语义模型通过语义脚本方式实现,可以在“选择表”步骤中直接选择“语义脚本”,在出现的语义脚本编辑器中录入执行sql。Sql校验通过后,进入下一步元数据界面,界面显示sql查询到的元数据信息,确定无问题后点击“确定”即可。然后进入“选择字段”页签,选择需要语义模型最终预览界面展现出来的字段。2.31权限控制模式:管理报表当权限控制模式设置为管理报表时,每个字段对应的“启用权限”字段变为可编辑,当“启用权限”字段设置为启用时,对应的“资源实体”、“使用场景”变为可编辑,控制同元数据,此处不再重复叙述。设置完数据权限后进入语义模型数据预览界面,所能预览到的数据会按照如上图所示的使用场景进行数据过滤。2.32权限控制模式:单据业务语义脚本不支持数据权限控制模式是单据业务的场景。2.4数据加工通过数据加工方式设置一个语义模型,选择字段等过程与其他语义模型的过程基本相同。2.41权限控制模式:管理报表当权限控制模式设置为管理报表时,字段的数据权限控制与以其他方式设置语义模型的控制相同,都是将字段对应的启用权限设置为启用,然后设置资源实体、使用场景即可。以对语义模型的物料启用数据权限为例,未启用数据权限时,进行数据预览则可预览到全部数据。当启用数据权限并设置了资源实体和使用场景时,进入数据预览则可预览到的数据会按照设置的资源实体在使用场景下的权限规则进行过滤。2.42权限控制模式:单据业务数据加工不支持数据权限控制模式是单据业务的场景。2.5业务数据业务数据的数据权限比较特殊,因为语义提供者都是预置的,有的语义提供者走什么场景下的数据权限在开发时已经做了限定,无法从语义模型前台界面直观的看出引用的提供者的权限控制情况如何,具体情况请咨询相关开发。2.6参数的数据权限语义模型字段启用了数据权限,只是对最终预览到的数据结果按照数据权限过滤了。如果语义模型设置了参数并且参数为参照类型,那么在预览时弹出来的参数录入界面内可参照到的参数值内容并不受语义模型字段处设置的数据权限的影响。如2.11中对供应商字段启用了数据权限,数据结果已经按照权限规则进行了过滤,但是如果语义模型中设置了参数并且参数属性是参照供应商档案,那么在语义模型数据预览弹出来的参数值参照界面仍是可参照全部供应商信息,不受语义模型字段处设置的数据权限限制。如果需要对参数值也受到数据权限的限制,需要单独再进行设置。参数的数据权限设置如下:在语义模型设计器界面内的查询参数维护页签内,如下图中标红处来维护参数的数据权限,如下图所示将参数启用数据权限并且使用场景设置为“通用引用”。权限用户再次进入数据预览,弹出来的参数值会按照通用引用场景下的规则进行过滤: