フィルターと関連データを使用して同期

Standard または Advancedのライセンスで利用可能。

双方向レプリケーションおよび一方向レプリケーションでは、レプリカの作成で使用された同じフィルターとリレーションシップ クラス ルールが同期中に適用されます。 送信する変更を決定する場合には、各レプリカ データセットに含まれている編集内容のうち、最後の同期以降に適用されたすべての編集内容が評価されます。 編集内容がレプリカのフィルター条件を満たしている場合は、その編集内容が同期されます。

注意:

チェックアウト/チェックイン レプリカでは、子レプリカに加えられたすべての編集内容が同期されます。 このため、「リレーションシップの維持」セクションに記載されている内容を除いて、次のルールはチェックアウト/チェックイン レプリカには適用されません。

下の図は、編集セッションでフィーチャが移動した場合にレプリカ エリア フィルターが同期中にどのように適用されるかを示しています。 次の編集内容が同期中に相対レプリカに送信されます。

  1. 1 つのフィーチャがレプリカ エリア内の新しい場所に移されます。
  2. 1 つのフィーチャがレプリカ エリア内から外部に移されます。 そのフィーチャの新しい場所は、レプリカ エリアの外部に存在する場合でも、同期中に相対エリアで更新されます。
    注意:

    編集内容を送信する場合は、そのフィーチャが前回の同期時にレプリカ フィルター内に存在していたことが必要となります。 たとえば、フィーチャを挿入し、外部に移してから、相対レプリカと同期した場合、これらの変更は送信されません。

  3. 1 つのフィーチャがレプリカ エリアの外部からレプリカ エリア内に移されます。
  4. レプリカ エリア内に存在しないフィーチャが移された場合、そのフィーチャは同期中に相対エリアで更新されません。

編集セッションでフィーチャが移動した場合にレプリカ エリア フィルターが同期中に適用される様子

編集内容がフィルター条件を満たしていない場合でも、次の条件を満たしていると、同期されることがあります。

  • スキーマのみのフィルターが適用されたデータセットに属しており、少なくとも 1 つのリレーションシップ クラスに関連付けられている。
  • 次のいずれかの条件も満たしている。
    • フィルター条件を満たしている別のデータセット内の行に関連付けられている。 関連付けられている行は、最後の同期以降に編集が加えられていなくてもかまいません。
    • スキーマのみのフィルターが適用されたデータセットに関連付けられているデータセット内に存在する。

つまり、スキーマのみ以外のフィルターが適用されたフィーチャクラスまたはテーブル内の行は、フィルター条件を満たしている場合にしか同期することができません。

これらのルールは、関連データを結び付けることもできます。 これは、リレーションシップ クラスを介して、隔たりのある関連先クラス内の行をレプリカ内の関連元との複数のリレーションシップからたどることができる場合に実現できます。

リレーションシップの維持

同期中にリレーションシップが維持されます。 たとえば、相対レプリカに新しいリレーションシップが追加された場合に、関連付けられている行を同期すると、そのリレーションシップが維持されます。 リレーションシップを維持すると、関連元のキーが objectID フィールドの場合に、変更を受信したレプリカで外部キー値の変更が必要になることがあります。

次の例は、同期中の関連レコードの動作を示します。

この例では、フィルター設定による複製を目的として 3 つの建物が選択されています。 レプリカ作成プロセスに関連レコードが含まれているため、関連先クラスも複製されます。 関連元フィーチャに関連付けられている関連先クラス内のフィールドが子レプリカで編集されます。 レプリカを同期すると、これらの編集内容が親レプリカ内の関連先クラスで更新されます。

関連レコードをレプリカに取り込む場合のレプリカ作成および同期プロセス

例 1

最初の例では、関連元クラスの一部のフィーチャ (建物) が複製を目的として選択されています。 建物は、シンプル リレーションシップ クラスを使って、レプリケーションから除外されたテーブル内の属性レコードに関連付けられます。 子レプリカでの編集中に、1 つの建物が削除されました。 同期を実行すると、削除されたフィーチャとのリレーションシップを無効にするために、関連先クラス (テーブル) の外部キー フィールド内の対応するエントリが NULL に設定されます。

属性なしのシンプル リレーションシップ クラスから関連レコードをレプリカに組み込むときのレプリカ作成と同期処理

また、この同期動作では、属性付きのリレーションシップ クラス テーブル内のリレーションシップを表す行が削除されることがあります (次の例を参照)。

例 2

この例では、関連元フィーチャクラスと関連先クラス テーブルとのリレーションシップに属性が割り当てられています。つまり、そのリレーションシップ自体が関連テーブルを持っています。 そのリレーションシップと関連先クラスの両方がレプリカ作成プロセスから除外されました。 子レプリカの関連元フィーチャクラスに加えられた編集の結果として、1 つのフィーチャが削除されました。 同期を実行すると、そのフィーチャと関連先クラスのオブジェクトとのリレーションシップを表す属性付きのリレーションシップ クラス テーブル内の行が削除されます。

同期中にリレーションシップだけが削除されます。関連オブジェクト自体が削除されることはありません。

属性付きのリレーションシップ クラスからレプリカに関連レコードを取り込む場合のレプリカ作成および同期プロセス

関連トピック