苍穹开发系列之十:获取基础资料有新增权限的创建组织
获取基础资料有新增权限的创建组织
一、问题描述/需求描述:
如何根据基础数据管控策略获取基础资料中有新增权限的创建组织。
二、思路与方案:
基础资料根据是否有控制策略分为受控基础资料和非受控基础资料。非受控基础资料的创建组织默认都是有新增权限。而受控基础资料对应的规则是在基础服务-基础数据管控策略中控制的。基础数据管控策略中有新增权限的创建组织优先取控制规则下选择的组织(集合A),如果为空则取控制视图下挂的创建组织(集合B)。视图方案的组织使用状态必须为可用状态,其中主数据控制视图还需要对应的组织设为管控单元才行。集合A是集合B的子集。另外还需要考虑创建组织的组织职能。本文只讨论基础资料存在主业务组织且为创建组织。
三、实现过程:
1、调用微服务BaseDataServiceHelper.getBdCtrlOrgs,从【基础数据管控策略-实体(bd_bdctrlstrtgy)】中获取控制规则下的创建组织,如果集合非空则返回结果,集合为空走第二步。
2、第1步的集合为空,先取基础资料对应的控制视图,一般是从【基础数据视图关系(bd_basedataview)】中取得,但是建立在已经使用基础数据管控策略的前提下才会有同步的数据,同步的数据源来自【受控基础资料(bd_bddefctrlstrtgy)】,前者为空才会来这里取数据。对应的微服务是BaseDataServiceHelper.getCtrlview。
3、第2步的控制视图为空,则说明基础资料为非受控基础资料,直接获取所有可用状态的创建组织集合。反之,则说明是受控基础资料,继续第4步。
4、取得受控基础资料的控制视图后,如果视图编码是16则表示是主数据控制视图,其他为业务管理视图。主数据控制视图相比业务管理视图需要增加一个“是否为管控单元”的过滤条件。
5、根据第4步构造好的过滤条件,在【业务单元(bos_org)】中取数过滤即可得到有新增权限的创建组织集合。
6、所有基础资料都要考虑创建组织的组织职能类型,在第3或第5步获取到的创建组织集合中做进一步的过滤。组织职能编码通过基础资料元数据的组织属性取得,职能类型名称可通过调用微服务OrgService.getBizOrgPropertyName获得,并且职能类型名称和业务单元-职能类型的标识是一一对应的关系。
7、相关元数据和物理表:
元数据标识 | 元数据名称 | 物理表 |
bd_bddefctrlstrtgy | 受控基础资料 | T_BD_DefaultCtrlStrategy |
bd_bdctrlstrtgy | 基础数据管控策略-实体 | T_BD_CtrlStrategy |
bd_basedataview | 基础数据视图关系 | t_bd_basedataview |
bos_org_viewschema | 组织视图方案 | t_org_viewschema |
bos_org_structure | 组织结构 | T_ORG_Structure |
bos_org | 业务单元 | t_ORG_ORG |
bos_org_biz | 组织职能类型 | t_ORG_BizList |
四、效果图:
五、开发环境版本
苍穹4.020以上版本
六、参考资料:
无
苍穹开发系列之十:获取基础资料有新增权限的创建组织
本文2024-09-16 17:46:50发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-17890.html