树数据集的完整性检查

编辑
  • 文档创建者:jiangsr
  • 浏览次数:5213次
  • 编辑次数:8次
  • 最近更新:Leo.Tsai 于 2019-09-16
  • 1. 描述

    树数据集主要是用来构建部门之间的关系,每个部门需要提供一个原始的标记字段和父标记字段,后端在同步的时候根据这两个字段来建立一种树结构。

    但客户有时在更新设计器版本时,会出现同步树数据集失败的情况,主要是因为树数据集配置错误或者本身并不是一个完整的树结构。

    下面举几种比较完备的树结构,来告诉大家构建树数据集时需要注意哪些事项。

    2. 树结构及注意事项

    2.1 树结构(类型一)

    2.1.1 数据表

    222

    2.1.2 树数据集

    222

    上面是一个就是一个完整的树数据集,以“部门 ID”为原始标记字段,“上级 ID”是父标记字段。

    例如:

    第二行的意思是“人力资源部”的原始标记为 11,其父部门是标记为 1 的部门(然后可以根据这个标记来查询它的父部门是总部)。

    第一行表示总部的标记是 1,父标记为空,表示它是根部门,没有父部门,通常如果一个部门没有父部门,那么父部门标记为空。

    遍历这个数据集后,能得到所有的部门信息,职位信息;根据“上级 ID”,到“部门 ID”这一列去查找相应的部门名称,从而可以构建父部门。

    2.1.3 注意事项

    需要注意的是:“上级 ID”中出现的标记(除了是空),都必须在“部门ID”中找到对应的标记,可以看到上图中所有的“上级 ID”都能在“部门 ID”中找到对应的值。

    如果出现下图的这种情况,“上级 ID”为 2,但是在部门 ID中找不到是 2 的部门信息,这样就没办法构建上级ID为2的部门信息,这样就认为树是不完整的,同步数据集的同步动作直接返回,不进行同步操作。

    222

    那么在日志里面会报如下形式的错误:

    222

    意思是找不到标记 2 对应的部门!

    2.2 树结构(类型二)

    2.2.1 数据表

    222

    2.2.2 树数据集

    222

    这个以“部门名称”和“上级名称”来构建树,这个所谓的标记字段只是为了标记部门直接的层级关系,不会参与业务处理。

    这其中也要要求“上级名称”中的标记字段要能在“部门名称”中找到对应的部门,如果找不到,则直接退出,拒绝同步。

    2.2.3 注意事项

    注意事项同上。“上级名称”中出现的标记(除了是空),都必须在“部门名称”中找到对应的标记,否则就认为树是不完整的,同步数据集的同步动作直接返回,不进行同步操作。

    2.3 树结构(类型三)

    2.3.1 数据表

    222

    2.3.2 树数据集

    222

    同样的是使用“部门 ID”和“上级 ID”来做标记,同样需要保证“上级 ID”列的能在“部门 ID”中能够找的到,否则也会拒绝同步。

    根据“部门ID”和“上级ID”来构建树。

    2.3.3 注意事项

    确保树数据集是正确的充要条件:

    a. 父标记字段中出现的值(除了是空),在原始标记字段中都能找到对应的值。

    b. 原始标记字段相同的行,其部门名和父标记这两列也必须相同,如上图数据表中的最后两行。

    c. 父标记和部门名相同的行,其原始标记列必须相同,如上图数据表中的最后两行。

    如果出现下图的这些情况会报错:

    1)报错信息如下:

    222

    一个确定的部门有两个父部门,显然不是树结构。

    一旦一个部门的标记相同,就代表这个部门是确定的,那么这个部门的“上级 ID”和“部门 ID”必须相同。

    如下图中 lyon 和 loy 的部门标记都为 d,但是他们的父部门竟然不相同,显然是数据错了,改正过来就行了。

    222

    2)报错信息如下:

    222

    一个标记对应的部门名称不同也是错误的,这样也会拒绝同步的。

    222

    3)报错信息如下:

    222

    意思就是在父部门确定的情况下,部门名称是唯一的,那么部门标记也是唯一的;上图说明部门标记不唯一。

    部门名称是可以相同的,比如销售部有个子部门叫性能组,研发部也可以有个子部门叫性能组。

    但是当父部门确定的情况下,部门名是不能重复的。

    例如:lyon 和 loy 所在的部门都是性能组,且父部门标记都是d,那就表明两个人在同一个部门,那么部门标记就应该相同,上图的两个员工部门标记不相同,那么也会报错,拒绝同步。即在父部门确定的情况下,根据部门名能唯一的确定一个部门。

    222

    4)实际情况中还有一种是互为上下级的情况,这种结构或者说数据有时候会在一些实行扁平化管理的公司出现,即A部门是B部门的上级,B部门又是A部门的上级,这样的两个部门在组织同步的时候也会失败,但很少见。

    3. 补充说明

    原始字段和父标记字段中不能出现 0,0000000 类似的字段,因为这些标记会被解析成 0,而 0 是程序中的保留字段,是所有部门的 ID,所以要尽量避免.

    在构建树结构的时候,如果一个部门没有父部门,那么父部门就空着,不要随便写。

    另外,在设计器升级之前一定要备份 JAR 文件。







    附件列表


    主题: 报表设计
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]