历史版本3 :树数据集的完整性检查 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

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

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

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

2. 树结构及注意事项编辑

2.1 树结构(类型一)

1)数据表:

222

2)树数据集:

222

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

例如:

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

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

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

3)注意事项

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

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

222

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

222

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

2.2 树结构(类型二)

1)数据表:

222

2)树数据集:

222

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

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

3)注意事项

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

2.3 树结构(类型三)

1)数据表:

222

2)树数据集:

222

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

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

3)注意事项

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

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

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

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

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

222

报错信息如下:

222

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

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

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

222

报错信息如下:

222

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

222

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

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

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

报错信息如下:

222

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

3. 补充说明编辑

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

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

另外,在设计器升级之前一定要备份jar包fsconfig.xml文件。