对版本进行编辑后,版本开始彼此不同。创建指定版本后,将在默认版本和指定版本中追踪所有编辑。默认版本中的编辑可以包括其他指定版本发布的编辑。
完成指定版本的编辑后,您可以执行协调和提交过程以合并您的编辑。从默认版本检索任何更改内容并将其与版本合并的过程称为协调过程。接下来,您可以使用发布过程将对默认版本所做的更改发送至默认版本。
当针对默认版本协调指定版本时,将发现冲突。在协调操作过程中发现冲突时,最初会优先使用编辑版本来解决冲突。您收到一个提示,询问您是否要使用“冲突”视图查看冲突。在此处,您可以逐一检查这些冲突,如有必要,可进行更改。例如,您可以使用“冲突”视图来替换为目标版本,或者使用编辑工具以另一种方式修改发生冲突的要素。
协调过程
当您使用分支版本时,协调会检测您当前连接的指定版本与默认版本之间的冲突。如果您尝试协调并且存在未标记为已查看的冲突,则会返回警告。使用分支版本化,您只能使用默认版本进行协调。您无法使用另一个指定版本进行协调。
要更改协调操作期间的冲突处理方式,请参阅用于编辑的版本化选项。
要执行协调过程,您必须使用已启用版本管理功能的 Web 要素图层。您可以在版本化选项卡上访问协调命令,方法是单击内容窗格中的按数据源列出按钮 。要开始协调过程,可单击版本化选项卡上的协调按钮。将显示协调对话框。
协调对话框出现后,需要提供以下信息:
- 指定您希望定义冲突的方式。您具有以下几种选项:
定义冲突的级别 要检测这些情况 行(按对象)
另一用户像您一样编辑同一行或要素或者拓扑结构上相关的要素。即使您编辑不同属性,也会发生冲突。
列(按属性)
另一用户编辑某一要素或某个表的同一属性。这是默认设置。
用于定义冲突的选项
注:
始终优先使用编辑版本解决冲突。
撤销和放弃操作无法用于针对分支版本化数据完成协调操作完成之后做出的更改。
在分支版本化中,冲突保留在 GDB_CONFLICTS 系统表中。这样,您就可以在多个编辑会话中管理冲突、查看和解决冲突以及离开并稍后返回以继续操作。再次进行协调操作将会清空冲突表,并使用自上次协调操作之后发生的新冲突填充冲突表。这意味着如果再次执行协调,您可能丢失冲突解决的历史记录。
如果存在冲突,则可以在“冲突”视图中进行查看。
协调过程仅更新编辑版本,以便 ArcGIS Pro 可以检查冲突;此过程不会将更改内容合并到目标版本中。完成协调并查看冲突后,通过将更改提交到目标版本来完成合并过程。
使用“冲突”视图查看冲突
如果在协调过程中检测到冲突,则可以在“冲突”视图 中进行查看。该视图可以停靠在应用程序中的任意位置,也可以定位为浮动窗口。由此您能够同时与地图视图进行交互以提供背景并进一步浏览数据。
“冲突”视图包含所有冲突类及其处于冲突状态的要素或行。冲突按数据源、类、冲突类别和 ObjectID 进行组织。冲突类表示整个服务的发生冲突的 Web 要素图层。
冲突视图允许您执行以下操作:
- 确定处于冲突状态的字段或行。
- 查看冲突。
- 将冲突标记为已查看或未查看。
- 通过指定用来代替要素或属性的表示以解决冲突
在以下情况下发生冲突:
- 在当前编辑版本和目标版本中对同一要素进行更新。
- 在一个版本中更新某个要素,而在另一版本中删除该要素。
- 在当前编辑版本和目标版本中修改拓扑结构上相关的要素或关系类。
“冲突”视图还包含冲突显示,用于查看几何编辑的不同表示形式。冲突显示中的内容取决于活动地图中是否存在冲突类:
- 如果活动地图中存在冲突类,冲突显示将显示所有地图图层、使用地图符号系统并包括底图。
- 如果活动地图中不存在冲突类,冲突显示将仅显示冲突的图层、使用默认符号系统且不包括底图。
确定处于冲突状态的字段或行
“冲突”视图左上角的列表框可显示所有冲突类和要素。此列表显示了整个服务的 Web 要素图层的冲突总数。
单击对象下拉箭头时以查看每个要素的冲突。这些冲突将分为以下类别:
- 更新-删除 - 要素已在当前版本中更新并在目标版本中删除
- 删除-更新 - 要素已在当前版本中删除并在目标版本中更新
- 更新-更新 - 要素已在当前版本和目标版本中更新
在列表中选择单个要素的 ObjectID 后,“冲突”视图右侧的信息格网中将显示要素的当前版本、目标版本和公共祖先版本中的字段和属性。
通过使要素表示的所有属性和值处于冲突状态,您可以查看不同版本之间属性值的差异程度并确定要保留的数据的表示。
- 当前 - 表示指定版本中要素和属性的当前状态。这包括您所进行的任何编辑。
- 目标 - 表示目标版本中的要素及其属性。
- 公共祖先 - 表示最初创建版本时或上一次协调操作时的要素和属性。
行左侧的红色指示器用于标识冲突。例如,如果已在各版本中对要素几何进行了编辑,则会在 Shape 字段旁显示红色指示器。
如果其他属性字段处于冲突状态,则将在行的左侧显示红色指示器。如果在任一版本中删除了某个要素,则会对该版本的属性值显示 <Deleted>。
您可以使用对话框底部的两个按钮在查看所有字段或仅查看处于冲突状态的字段之间进行切换。
注:
所有字段都显示在冲突视图中;但是,应用冲突过滤器的字段不会标识为存在冲突,也不会显示红色指示器。
标记为已查看或未查看
一旦确定处于冲突状态中的字段或行,您可以将要素标记为已查看。您可以追踪列表中已检查的要素,因为这些被标记为已查看的要素将不再显示为粗体。
要在以后重新查看要素冲突,请右键单击冲突列表中的 ObjectID,然后单击标记为未查看。这会使得要素重新显示为粗体。
如果您选中视图顶部的过滤已查看冲突复选框,您可以过滤列表,以便仅显示尚未查看的冲突。
使用分支版本化,您还可以添加查看注释 右键单击要素,然后单击添加查看注释,然后在添加查看注释文本框中输入文本。要编辑现有查看注释,请右键单击要素,然后单击编辑查看注释。
注:
在下一协调和提交操作中,清除查看注释。
解决冲突
解决冲突时,您需决定要保留要素和属性的哪个表示。协调操作后,可以使用“冲突”视图指定要保留的表示。请记住,在“冲突”视图中使用替换选项与执行编辑操作相同。
在差异列表中,右键单击版本、数据集、要素或属性,然后选择以下替换选项之一:
- 使用当前版本替换
- 使用目标版本替换
- 使用公共祖先版本替换
以下是可以使用替换选项解决冲突的不同级别:
- 属性替换
它在字段级出现。如果属性中存在冲突,可以仅将当前版本中的属性值替换为当前、目标或公共祖先表示中的属性值。要执行此操作,右键单击冲突中的属性,然后在菜单上单击选项。
- 要素替换
它在行级出现。可以将整个要素替换为当前、目标或公共祖先版本中的要素的表示。这意味着将替换冲突中的字段。
- 类级别替换
要解决冲突,可以将整个要素类的当前表示替换为当前、目标或公共祖先版本表示。这将立即替换所有的冲突要求和属性,使用户能够快速更新和替换冲突要素。如果在差异列表中存在多个要素,则会将所有的要素替换为您所选择的版本。
要选择类级别替换选项,右键单击差异列表中的要素类名称,然后单击您想要使用的版本。
- 完全替换
它在根级别出现。此选项会将列表中的所有冲突要素和要素类替换为所指定的表示。如果在冲突中存在多个要素类和对象,则所有的这些要素类和对象都会被替换为您所选择的版本。
右键单击差异列表顶部的版本和连接信息,然后单击要用于替换所有冲突的版本。
字段级别冲突过滤
在协调期间检测到冲突后,您可能想要将编辑内容应用至要保留的一个或一组字段。以下示例为,进行协调时可能想要过滤出在字段上检测到的冲突:
- 将对不同版本的字段执行批量更新。
- 根据在版本中执行的编辑操作在字段中写入信息。
为避免在父版本和子版本中更新相同属性时发现冲突,可以使用添加字段冲突过滤器工具,定义要通过冲突过滤的一组字段。通过字段冲突过滤器,可在通过冲突检测过滤要素类时在要素类中标记一个或一组字段。如果仅编辑应用冲突过滤器的字段,协调操作期间不会返回冲突。仅适用于按属性定义冲突。
注:
所有字段都显示在“冲突”视图中;但是,应用冲突过滤器的字段不会标识为存在冲突,也不会显示红色指示器。
始终优先使用编辑版本来协调分支版本化数据的冲突;带有冲突过滤器的字段包含来自编辑版本的值。
您可使用移除字段冲突过滤器工具从字段中移除这些冲突过滤器。
注:
必须重新启动具有分支版本化数据的服务,才能从添加字段冲突过滤器或移除字段冲突过滤器工具中获取更改。
您可以使用 ListFieldConflictFilters Python函数,来标识要素类或表定义冲突过滤器的时间。
解决与属性规则之间的冲突
属性规则可改善地理数据库数据集的编辑体验并提高数据完整性。在执行通过属性(列)定义冲突的协调时,针对已在默认值和所要协调的版本中更新的要素评估立即计算或约束规则。如果在此过程中违反了约束规则,则不会发生合并,该要素将升级为“更新-更新”冲突,并且可以在“冲突”视图中进行查看。
解决与关系类之间的冲突
使用关系类有助于增强相关对象之间的引用完整性。如果分支版本化数据源参与关系类,则协调过程将评估此数据的引用完整性。如果违反了引用完整性,则参与要素将报告为冲突,并可以在“冲突”视图中进行查看。
从源关系类中删除要素可能会生成一条从目标关系类中删除要素的消息。因此,请注意仅替换涉及参与关系类的要素类的冲突的结果。
下面是关系要素类之间可能出现的冲突的示例:
- 在父版本中,添加目标要素并将其关联到原始类中的某个要素。
- 在子版本中,删除用于关联新目标要素的同一个源要素。
- 协调编辑后,将在目标类上检测到“更新-更新”冲突,而在源类上检测到“删除-更新”冲突。
下面是另一个示例:
- 在电力公共设施要素数据集中,删除与某个变压器关联的电线杆会导致关联的变压器也被删除。
- 同时在另一个编辑会话中,编辑器会更改刚刚因删除与其关联的电线杆而被删除的变压器的属性。
- 协调编辑后,将在源类和目标类上检测出“更新-删除”冲突。
在上一个示例中,如果第二个编辑器选择使用编辑会话表示替换所有冲突,则会重新创建在编辑会话期间删除的电线杆和变压器。
提交更改
要将编辑提交到默认版本,当前门户用户必须具有编辑该版本的权限。这意味着,默认版本必须将访问属性设置为公共,或门户用户必须是版本管理员。
要在协调并查看了冲突后将更改提交到默认版本,请在版本化选项卡上的版本化组中单击提交。
在提交过程中,可以发现冲突。在协调之后和提交过程之前对默认版本执行编辑时,可能会发生这种情况。这些编辑可以是从直接编辑到默认版本,也可以是从已从其他指定版本提交的编辑。如果发生这种情况,将返回错误,并且您必须在提交之前再次执行协调操作。
有关提交过程的其他信息:
- 提交更改内容后无法进行撤消,因为您正对目标版本应用更改。
- 如果存在未明确标记为已查看的冲突,则会在发布时打开一个对话框,警告您系统将自动解决未查看的冲突。单击是以自动使用您在协调对话框中选择的选项解决冲突并将更改发布到目标版本。
- 提交后,可在版本中继续执行编辑。要将这些更改应用到目标版本,必须再次执行协调、解决冲突和提交过程。
如果提交操作标志着工作流结束,则可删除已编辑的版本。