如何通过升级程序预置追加的表单-权限项
变更记录
产品版本 | 更新内容 | 更新日期 |
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目录,补丁升级即可。
如何通过升级程序预置追加的表单-权限项
本文2024-09-23 00:31:49发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140044.html