如何通过升级程序预置追加的表单-权限项

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何通过升级程序预置追加的表单-权限项

变更记录

产品版本更新内容更新日期
V5.0.025初始版本2023/07/26


使用场景

业务实现过程中,给某个表单新增了权限项后,直接升级,那么原来拥有此表单的用户在升级之后,是没有新增权限项的权限的。本文旨在针对此种问题给出一种解决方案。


问题描述

表单业务角色(perm_busirole)原有权限项:引出、引入、新增、删除、查询、修改。



业务开展需要,后续要增加一个“分配”的权限项:



PS:表单设计器中,权限项的增加还是需要各自设置,保存表单设计时。


解决方法

权限组针对此此类问题,提供统一解决处理方案。

开发人员可新建一个自己的升级程序,示例如:

kd.bos.permission.servicehelper.AppendBusiRoleAssignPermItemUpgradeService(追加“业务角色”的“分配”权限项

重点关注下参数含义。

/**
 * 参数含义:Object[]{旧表单标识 , 旧表单的权限项, 需要新增的表单标识, 需要新增的权限项, new Long[]{三权分立时要授予权限的虚拟管理员}}。
 * 目的1:如果原来有“perm_busirole”的“修改”权,那么追加“perm_busirole”的“分配”权
 * 目的2:将 “perm_busirole”的“分配”权, 赋予 "三权分立"下的安全管理员

 */

private static List<Object[]> oldEntPerItem2NewMapList = Arrays.asList(new Object[]{"perm_busirole", kd.bos.consts.PermItemConst.ITEM_MODIFY, "perm_busirole", kd.bos.consts.PermItemConst.ITEM_ASSIGN, 

new Long[]{PermApiConst.THREE_STRATEGY_3_SECURITY_ENTRYID}}

, new Object[]{});


  • 每一个对象数组中有五个参数,按顺序代表:旧表单标识 、旧表单的权限项、需要新增的表单标识、需要新增的权限项、new Long[]{三权分立时要授予权限的虚拟管理员}。注意:旧表单所属应用需与新表单一致且新旧表单都得是需要控权的表单,因为不控权的表单,不需要追加授权

    (“控制功能权限开关打开了, 并且“操作权限控制”下面绑定了权限项, 则表示此表单要控权


  • 升级程序会根据“旧表单标识-权限项在原有直接授权、通用角色授权、业务角色授权、管理员分组授权中系统服务云范围的情况,决定是否追加“新表单标识-权限项”。


  • 第5个参数,由于“新表单标识-权限项”可能赋予到多个三权分立下的管理员类型,所以定义成Long[]。如果“新表单标识”不是系统服务云下的,此参数可设置为null。如果“新表单标识”是系统服务云下的,可使用cosmic账户登录平台基线a,业务基线PG测试新建库,系统服务云 - 基础服务 - 特殊管理员 - 权限控制策略,找到三权分立权限策略,点击查看详情,看看原来相应表单分配给了哪些管理员。本例中,“业务角色-修改” 只分配给了安全管理员,所以“业务角色-分配”只追加给安全管理员。


       


  • 升级程序会按照“新表单标识-权限项”以及 “三权分立时要授予权限的虚拟管理员”,决定是否将“新表单标识-权限项”追加到相应的虚拟管理员权限下。第5个参数设置为null,可不关注这一点。

  • 父类中仅仅是异常信息的解析进行日志输出使用,可不继承,自己处理异常信息。


适用版本

苍穹平台版本  >=BOS_V5.0.022(2023年6月迭代一 )


注意事项

1、升级步骤

  • 创建升级程序预置脚本 preinsdata\xxx.sql

  • 引用升级脚本,在 应用编码.xml 中 加入:

    <SqlScript Type="KSQL" Separator=";" dbkey="分库标识" Plugin="cloud:所属云,app:所属应用,class:ScriptUpgradeService,scriptPlugin:升级程序全限定包名">preinsdata/xxx.sql</SqlScript>

     

2、升级步骤示例

  • 创建升级程序预置脚本 \bos-base\datamodel\bos\1.5\main\base\preinsdata\kd_6.0.2_bos_perm_append_perm_busirole_assign.sql

  • 引用升级脚本,在 \bos-base\datamodel\bos\1.5\main\base\base.xml 中 加入:

    <SqlScript Type="KSQL" Separator=";" dbkey="basedata" Plugin="cloud:bos,app:bos,class:ScriptUpgradeService,scriptPlugin:kd.bos.permission.servicehelper.AppendBusiRoleAssignPermItemUpgradeService">preinsdata/kd_6.0.2_bos_perm_append_perm_busirole_assign.sql</SqlScript>


3、自定义权限项

    如果涉及自定义的权限项,需要先执行自定义权限项的预置,再执行此升级程序

    自定义权限项的预置:

  • 开发平台 搜索perm_permitem 以列表预览。

  • 点新增,创建新的权限项。

  • 创建好后,列表界面有一个 引出脚本 这样的按钮,点击后会下载下来 预置sql。

  • 把sql放到datamodel的 preinsdata目录,补丁升级即可。


如何通过升级程序预置追加的表单-权限项

变更记录产品版本更新内容更新日期V5.0.025初始版本2023/07/26使用场景业务实现过程中,给某个表单新增了权限项后,直接升级,那么原来拥有...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息