【BOS基础系统_权限】工作流中自动节点挂起-报错无权限问题记录
问题现象:工作流中自动节点挂起,错误日志如下
分析过程:
1、需要收集对应实例PermissionTrace.log,可以查看更详细的异常堆栈
[BGJOB_WF_1 14:40:07]pe com.kingdee.eas.base.permission.PermissionException: 您没有 货源清单新增 的数据权限! at com.kingdee.eas.base.permission.app.service.DataPermissionService.checkPermission(DataPermissionService.java:887) at com.kingdee.eas.base.permission.app.PermissionControllerBean._checkDataPermission(PermissionControllerBean.java:722) at com.kingdee.eas.base.permission.app.AbstractPermissionControllerBean.checkDataPermission(AbstractPermissionControllerBean.java:349)
2、根据这里错误堆栈我们下载环境上对应jar包,分析可知是由于取到的验权组织是null导致
3、这里我们需要知道:
人工/审批/脚本节点 脚本/后置脚本中的__bosContext 取得是流程发起人的上下文。
自动节点后置脚本及任务调用取得是:节点配置的参与人的上下文 ,且上下文通过:模拟对应人做登录来获取
那么这里我们就可以得出:验权的用户是自动节点的参与人,组织是用户的默认组织
4、那么问题来了,该用户的默认组织(缺省组织)是什么,为什么上面没取到?
这里我们有需要知道,权限这里获取验权组织的逻辑:
1、如果单据提示有指定主业务组织字段则 取该单据的主业务组织字段对应的组织(大部分单据没有指定)
单据实体查询是否有指定主业务组织字段查询方法:
--根据bostype查实体的主业务组织字段(替换单据实体bostype),执行服务端脚本,如果没有输出值就是没有指定
com.kingdee.eas.base.permission.app.util.BizObjectOrgUtil.getBizOrgPropertyName(ctx, new com.kingdee.bos.util.BOSObjectType("2A2632A9"));
2、单据没有指定主业务组织字段,则根据权限项的主业务组织类型 去上下文中找该组织类型的组织,如果有就返回,没有就是空
权限项主业务组织类型查询方法参考:
https://vip.kingdee.com/article/50020183096029952
结论:
到这里,我们可以排查该实体没有指定主业务组织字段,且该权限项 【货源清单新增】的主业务组织类型是3 ,即采购组织,但是上下文中该用户的默认组织不是采购组织,导致没取到组织,然后就抛出异常 “您没有货源清单新增的数据权限“
解决:沟通修改该用户的所属管理单元为另一个组织(是采购组织),缺省组织也随之改变为该采购组织,再对流程撤销挂起,流转成功。
【BOS基础系统_权限】工作流中自动节点挂起-报错无权限问题记录
问题现象:工作流中自动节点挂起,错误日志如下分析过程:1、需要收集对应实例PermissionTrace.log,可以查看更详细的异常堆栈[BGJOB_WF_1 ...
点击下载文档
本文2024-09-22 20:08:25发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-111708.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章