qbo3中Process父项变更后外部用户无法访问子Process的问题排查
QBO3 Process权限访问问题:根因分析与修复方案
根因分析
- 权限缓存未同步:QBO3会缓存用户与业务记录的权限映射关系,手动更新
Process.ObjectID后,系统缓存中仍保留旧的Loan关联权限,导致外部用户的权限校验仍指向原错误Loan。 - ACL记录未自动继承:QBO3的子记录权限依赖父级Loan的ACL(访问控制列表)继承,直接修改
ObjectID不会自动将新Loan的权限组同步到对应Process的ACL条目,外部用户的权限未被关联到新的Process记录。 - 权限计算触发机制缺失:修改Process的父级关联(ObjectID)时,QBO3默认不会触发子记录的权限重新计算流程,导致权限关联未更新。
修复方案
1. 刷新权限缓存
- 后台执行QBO3内置的缓存清理命令:
qbo3.Security.Cache.Clear() - 若仅针对特定外部用户,可重置其个人权限缓存:
也可通过系统管理界面的「缓存管理」模块,选择刷新「权限缓存」。qbo3.User.Permissions.Refresh([UserID])
2. 同步Process的ACL关联
- 批量继承父级Loan权限:在QBO3界面中选中目标Process记录,执行「继承父级权限」的批量操作(通常在记录列表的「批量操作」下拉菜单中)。
- 若允许直接操作数据库,可执行SQL脚本批量更新ACL:
注意替换UPDATE ProcessACL SET GroupID = (SELECT TOP 1 GroupID FROM LoanACL WHERE LoanID = @CorrectLoanID AND PermissionType = 'View') WHERE ProcessID IN (SELECT ProcessID FROM Process WHERE ObjectID = @CorrectLoanID)@CorrectLoanID为正确的Loan记录ID。
3. 触发权限重新计算
- 调用QBO3的权限重计算方法,传入目标ProcessID列表:
qbo3.Process.Permissions.Recalculate([ProcessIDList]) - 批量处理时,可在系统任务模块创建定时/即时任务,执行「Process权限重计算」任务,覆盖所有更新后的Process记录。
验证步骤
- 使用问题外部用户账号登录QBO3,尝试访问目标Process记录,确认可正常打开。
- 查看Process的ACL记录,确认已关联到新Loan的权限组。
内容的提问来源于stack exchange,提问作者Eric Patrick
相关产品推荐
相关产品推荐

