【BOS基础系统_权限】工作流中自动节点挂起-报错无权限问题记录

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

【BOS基础系统_权限】工作流中自动节点挂起-报错无权限问题记录

问题现象:工作流中自动节点挂起,错误日志如下

image.webp


分析过程:

1、需要收集对应实例PermissionTrace.log,可以查看更详细的异常堆栈

image.webp

[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导致

image.webp


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://wenku.my7c.com/article/50020183096029952


结论:

到这里,我们可以排查该实体没有指定主业务组织字段,且该权限项 【货源清单新增】的主业务组织类型是3 ,即采购组织,但是上下文中该用户的默认组织不是采购组织,导致没取到组织,然后就抛出异常 “您没有货源清单新增的数据权限“


解决:沟通修改该用户的所属管理单元为另一个组织(是采购组织),缺省组织也随之改变为该采购组织,再对流程撤销挂起,流转成功。


【BOS基础系统_权限】工作流中自动节点挂起-报错无权限问题记录

问题现象:工作流中自动节点挂起,错误日志如下分析过程:1、需要收集对应实例PermissionTrace.log,可以查看更详细的异常堆栈[BGJOB_WF_1 ...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息