使用过滤器和相关数据进行同步

对于双向和单向复制,在同步期间会应用复本创建时所使用的相同过滤器和关系类规则。确定要发送的更改时,将对上次同步之后各个复本数据集中应用的所有编辑进行评估。如果某一编辑符合复本过滤器,则同步该编辑。

注:

对于检出/检入复本,将同步针对子复本所做的所有编辑。因此,下述规则中除维护关系一节中提到的规则以外,其他规则不适用于检出/检入复本。

下图说明了在编辑会话中移动要素时如何在同步期间应用复本区域过滤器。同步期间,以下编辑将发送到相关复本:

  1. 将要素移动到复本区域内的新位置。
  2. 从复本区域内移出要素。同步期间将在相关复本上更新要素的新位置,即使该位置位于复本区域外。
    注:

    对于要发送的编辑,要素必须在上次同步时已存在于复本过滤器中。例如,如果插入要素后将其移出,然后与相关复本进行同步,则不会发送这些更改。

  3. 将要素从复本区域外移动到复本区域内。
  4. 移动复本区域外部的要素时,同步期间不会在相关复本上对其进行更新。

在编辑会话中移动要素时,将在同步期间应用复本区域过滤器。

如果编辑不符合过滤器,则在满足以下条件时该编辑仍能够得到同步:

  • 它属于具有仅方案过滤器的数据集并且包含在至少一个关系类中。
  • 它还满足下述条件之一:
    • 它与另一个满足过滤器的数据集中的一行相关联。与之相关联的行在上次同步之后并不需要经过编辑。
    • 它所处的数据集与具有仅方案过滤器的数据集相关联。

这意味着如果要素类或表具有仅方案过滤器以外的其他过滤器,则其中的行仅在满足这些过滤条件时才会得到同步。

这些规则也允许链接相关数据。当关系类中较远的目标类中的行可通过多个关系追溯至复本中的原始版本时,可能会发生这种情况。

维护关系

同步过程会维护关系。例如,如果将新关系添加到关系复本,则同步所包含的行时将维护该关系。如果原始键是 objectID 字段,则可能需要更改接收更改的复本上的外键值才能维护关系。

以下示例描述同步期间相关记录的行为:

示例

在本示例中,通过定义查询选择三个建筑物进行复制。因为相关记录包含在复本创建过程中,所以也复制相关目标类。在子复本上编辑与原始要素相关联的目标类字段。同步复本时,在父复本中的相关目标类上更新这些编辑。

将相关记录合并到复本中时的复本创建和同步过程

示例一

在第一个示例中,选择原始类中的一些要素(建筑物)进行复制。建筑物通过简单关系类与表中未包括在复制过程中的属性记录相关联。在子复本上进行编辑时,删除了一个建筑物。同步时,为将与被删除的要素的关系置为无效,相关目标类(表)中的外键字段中的对应条目被设置为 NULL。

将非属性化简单关系类中的相关记录合并到复本中时的复本创建和同步过程

此同步行为也可能导致表示属性关系类表中关系的行被删除(如下一示例所示)。

示例二

在本例中,原始要素类与目标类表之间的关系是属性化关系,这意味着关系本身具有相关联的表。关系和目标类都被排除在复本创建过程之外。在子复本上对原始要素类进行编辑使得一个要素被删除。同步时,属性化关系类表中表示此要素与目标类中对象的关系的行将被删除。

同步时,仅删除关系,相关对象本身不会被删除。

将属性化关系类中的相关记录合并到复本中时的复本创建和同步过程

相关主题