管理分支版本冲突

在 Standard 或 Advanced 许可等级下可用。

当针对默认版本协调授权版本时,将发现冲突。 如果在协调过程中检测到冲突,则最初会优先使用编辑版本来解决冲突,并在“冲突”视图中查看冲突。

在以下情况下发生冲突:

  • 在当前编辑版本和目标版本中对同一要素进行更新
  • 在一个版本中更新某个要素,而在另一版本中删除该要素
  • 在当前编辑版本和目标版本中修改拓扑结构上相关的要素或关系类

“冲突”视图包含所有冲突类及其处于冲突状态的要素或行。 在分支版本化中,冲突保留在 GDB_CONFLICTS 系统表中。 由此,可以一次查看一个冲突,或者,如有必要,可以管理多个编辑会话中的冲突,查看并解决冲突,以及离开并稍后返回以继续使用“冲突”视图进行更改。

冲突视图允许您执行以下操作:

  • 确定处于冲突状态的字段或行
  • 查看冲突
  • 将冲突标记为已查看或未查看
  • 通过指定用来代替要素或属性的表示以解决冲突
警告:

如果管理多个编辑会话中的冲突,则在执行第二个协调操作或协调后操作时,将清除所有未查看的冲突。 此过程将删除冲突解决的历史记录。

完成协调并查看冲突后,通过将更改提交到目标版本来完成合并过程。

打开冲突视图

请按照以下步骤来打开“冲突”视图:

  1. 内容窗格中,单击按数据源列出按钮 按数据源列出
  2. 确保您已连接到授权版本。 要更改版本,请右键单击 web 要素图层数据源 ArcGIS Server,然后选择更改版本 切换版本
  3. 单击版本化选项卡。
  4. 请完成以下选项之一以打开“冲突”视图:
    • 单击协调按钮 协调 并完成协调过程。 如果在协调过程中发现冲突,则将显示提示,询问您是否要查看冲突。 单击将打开“冲突”视图。
      协调版本后提示查看冲突
    • 完成协调后,要进一步查看并管理冲突,请单击版本化选项卡上的冲突管理器按钮 冲突管理器

“冲突”视图可以停靠在应用程序中的任意位置,也可以定位为浮动窗口。 由此您能够同时与地图视图进行交互以提供背景并进一步浏览数据。

使用冲突视图

“冲突”视图包含所有冲突类及其处于冲突状态的要素或行。 冲突按数据源、类、冲突类别和 ObjectID 进行组织。 将在“冲突”视图中列出工程中所有地图的工作空间。 冲突类表示整个服务的发生冲突的 Web 要素图层。

“冲突”视图包含三个用于处理冲突的主要部分。 “冲突”列表包含所有冲突类及处于冲突状态的要素。 信息格网将显示从“冲突”列表中选择的处于冲突状态的要素的所有表示的属性和值。 “冲突显示”查看器用于查看和比较地图中几何编辑内容的不同表示。

请参考以下图像和表格,以查看“冲突”视图的元素:

冲突视图编号部分和元素

元素描述

1

冲突列表 - 冲突列表部分包含所有冲突类及处于冲突状态的要素。

2

信息格网 - 信息格网部分将显示处于冲突状态的要素的所有表示的属性和值。

3

冲突显示查看器 - 冲突显示查看器是位于“冲突”视图底部的可扩展部分。 由此,当冲突显示在地图上时,可以查看冲突,以及导航并标识显示中的要素。

4

过滤已查看冲突 - 选中冲突列表顶部的此复选框将过滤列表,以仅显示尚未查看的冲突。

5

红色指示器 - 行左侧的红色指示器用于标识冲突。 例如,如果已在各版本中对要素几何进行了编辑,则会在 Shape 字段旁显示红色指示器。

6

显示全部显示所有字段 - 允许查看所有字段。

7

显示冲突仅显示冲突字段 - 允许仅查看处于冲突状态的字段。

8

显示服务图层的制作者名单 - 单击此图标将显示一个对话框,其中可列出底图的提供者和制作者。

9

冲突显示导航工具 - 可以使用以下工具来导航并控制显示的版本,以及在冲突显示窗口内进行导航:

  • 两个下拉菜单(每个显示窗口一个)用于更改显示以显示当前版本、目标版本或公共祖先版本。

  • 放大 固定比例放大 - 在地图上以固定比例放大。

  • 缩小 固定比例缩小 - 在地图上以固定比例缩小。

  • 缩放至所选对象 缩放至结果 - 将地图缩放至所选对象的中心。

  • 闪烁所选对象 闪烁 - 所选对象将在冲突显示查看器中以蓝色短暂闪烁,然后改为以红色短暂闪烁。

冲突视图的元素

冲突列表

“冲突”视图左上角的冲突列表中将显示所有冲突类和要素。 此列表显示了整个服务的 Web 要素图层的冲突总数。

单击对象下拉箭头 已展开 以查看每个要素的冲突。 这些冲突将分为以下类别:

  • 更新-删除 - 要素已在当前版本中更新并在目标版本中删除
  • 删除-更新 - 要素已在当前版本中删除并在目标版本中更新
  • 更新-更新 - 要素已在当前版本和目标版本中更新

在冲突列表中选择单个要素的 ObjectID 后,“冲突”视图右侧的信息格网中将显示要素的当前版本、目标版本和公共祖先版本中的字段和属性。

提示:

尚未查看的冲突将以粗体显示。 已查看的冲突不再以粗体显示。

信息格网

在信息格网中,可以查看所选要素的属性值的不同表示。 通过使要素表示的所有属性和值处于冲突状态,您可以查看不同版本之间属性值的差异程度并确定要保留的数据的表示。 所有字段都将显示在信息格网中,并且处于冲突状态的属性行左侧将显示红色指示器。

以下各列将显示要素不同表示的属性值:

  • 当前 - 表示授权版本中要素和属性的当前状态。 这包括您所进行的任何编辑。
  • 目标 - 表示默认版本中的要素及其属性。
  • 公共祖先 - 表示最初创建版本时或上一次协调操作时的要素和属性。

如果在任一版本中删除了某个要素,则会对该版本的属性值显示 <Deleted>。 如果已将要素插入授权版本且这些要素被提升为冲突,则会在目标公共祖先列中显示 Did not exist

提示:

所有字段都显示在“冲突”视图内的信息格网中;但是,应用字段级别冲突过滤器的字段不会标识为存在冲突,也不会显示红色指示器。

冲突显示

冲突显示按钮用于打开“冲突”视图底部的冲突显示查看器部分。 当冲突显示在地图上时,借助冲突显示查看器,可以查看冲突,以及导航并标识显示中的要素。 显示的冲突将基于在冲突列表中选择的单个要素的 ObjectID

冲突显示导航工具位于冲突显示查看器下方。 这些工具包含两个下拉菜单,用于更改要比较的版本,其中版本选项包括当前版本、目标版本或公共祖先版本。

冲突显示中的内容取决于活动地图中是否存在冲突类:

  • 如果活动地图中存在冲突类,冲突显示将显示所有地图图层、使用地图符号系统并包括底图。
  • 如果活动地图中不存在冲突类,冲突显示将仅显示冲突的图层、使用默认符号系统且不包括底图。

将冲突标记为已查看或未查看

一旦确定处于冲突状态中的字段或行,您可以将要素标记为已查看。 您可以追踪列表中已检查的要素,因为这些被标记为已查看的要素将不再显示为粗体。

要在以后重新查看要素冲突,请右键单击冲突列表中的 ObjectID,然后单击标记为未查看。 这会使得要素重新显示为粗体。

如果您选中视图顶部的过滤已查看冲突复选框,您可以过滤列表,以便仅显示尚未查看的冲突。

使用分支版本化,您还可以添加查看注释 右键单击要素,然后单击添加查看注释,然后在添加查看注释文本框中输入文本。 要编辑现有查看注释,请右键单击要素,然后单击编辑查看注释

注:

在下一协调和提交操作中,清除查看注释。

解决冲突

在解决冲突时,需要确定要保留的要素和属性的表示。 协调操作后,可以使用“冲突”视图指定要保留的表示。 请记住,在“冲突”视图中使用替换选项与执行编辑操作相同。

在“冲突”视图中,右键单击版本、数据集、要素或属性,然后选择以下替换选项之一:

  • 使用当前版本替换
  • 使用目标版本替换
  • 使用公共祖先版本替换

分支版本的冲突快捷菜单

以下是可以使用替换选项解决冲突的不同级别:

  • 属性替换

    这会发生在字段级别。 如果属性中存在冲突,可以仅将当前版本中的属性值替换为当前、目标或公共祖先表示中的属性值。 要执行此操作,右键单击冲突中的属性,然后在菜单上单击选项。

  • 要素替换

    这会发生在行级别。 可以将整个要素替换为当前、目标或公共祖先版本中的要素的表示。 这意味着将替换冲突中的字段。

  • 类级别替换

    要解决冲突,可以将整个要素类的当前表示替换为当前、目标或公共祖先版本表示。 由此即可立即替换所有冲突的要素和属性,以便快速更新和替换冲突要素。 如果在冲突列表中存在多个要素,则会将所有的要素替换为您所选择的版本。

    要选择类级别替换选项,右键单击冲突列表中的要素类名称,然后单击任意想要使用的版本。

  • 完全替换

    它在根级别出现。 此选项会将列表中的所有冲突要素和要素类替换为所指定的表示。 如果在冲突中存在多个要素类和对象,则所有的这些要素类和对象都会被替换为您所选择的版本。

    右键单击冲突列表顶部的版本和连接信息,然后单击要用于替换所有冲突的版本。

字段级别冲突过滤

在协调期间检测到冲突后,您可能想要将编辑内容应用至要保留的一个或一组字段。 以下示例为,进行协调时可能想要过滤出在字段上检测到的冲突:

  • 将对不同版本的字段执行批量更新。
  • 根据在版本中执行的编辑操作在字段中写入信息。

为避免在父版本和子版本中更新相同属性时发现冲突,可以使用添加字段冲突过滤器工具,定义要通过冲突过滤的一组字段。 通过字段冲突过滤器,可在通过冲突检测过滤要素类时在要素类中标记一个或一组字段。 如果仅编辑应用冲突过滤器的字段,协调操作期间不会返回冲突。 仅适用于按属性定义冲突。

您可以使用 ListFieldConflictFilters Python函数,来标识要素类或表定义冲突过滤器的时间。

注:

所有字段都显示在“冲突”视图中;但是,应用冲突过滤器的字段不会标识为存在冲突,也不会显示红色指示器。

始终优先使用编辑版本来协调分支版本化数据的冲突;带有冲突过滤器的字段包含来自编辑版本的值。

您可使用移除字段冲突过滤器工具从字段中移除这些冲突过滤器。

注:

必须重新启动具有分支版本化数据的服务,才能从添加字段冲突过滤器移除字段冲突过滤器工具中获取更改。

解决与属性规则之间的冲突

属性规则可改善地理数据库数据集的编辑体验并提高数据完整性。 在执行通过属性(列)定义冲突的协调时,针对已在默认版本和所要协调的版本中更新的要素评估立即计算或约束规则。 如果在此过程中违反了约束规则,则不会发生合并,该要素将升级为“更新-更新”冲突,并且可以在“冲突”视图中进行查看。

解决与关系类之间的冲突

使用关系类有助于增强相关对象之间的引用完整性。 如果分支版本化数据源参与关系类,则协调过程将评估此数据的引用完整性。 如果违反了引用完整性,则参与要素将报告为冲突,并可以在“冲突”视图中进行查看。

从源关系类中删除要素可能会触发一条消息,以从目标关系类中删除要素。 因此,请注意仅替换涉及参与关系类的要素类的冲突的结果。

下面是关系要素类之间可能出现的冲突的示例:

  • 在父版本中,添加目标要素并将其关联到原始类中的某个要素。
  • 在子版本中,删除用于关联新目标要素的同一个源要素。
  • 协调编辑后,将在目标类上检测到“更新-更新”冲突,而在源类上检测到“删除-更新”冲突。

下面是另一个示例:

  • 在电力公共设施要素数据集中,删除与某个变压器关联的电线杆会导致关联的变压器也被删除。
  • 同时在另一个编辑会话中,编辑器会更改刚刚因删除与其关联的电线杆而被删除的变压器的属性。
  • 协调编辑后,将在源类和目标类上检测出“更新-删除”冲突。

在上一个示例中,如果第二个编辑器选择使用编辑会话表示替换所有冲突,则会重新创建在编辑会话期间删除的电线杆和变压器。

相关主题