ブランチ バージョンの競合の管理

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

名前付きバージョンがデフォルト バージョンとリコンサイルされたときに、競合が検出されることがあります。 リコンサイル処理中に競合が検出された場合は、最初に編集バージョンを優先して解決されます。それらの競合は競合ビューで確認できます。

競合は次のような場合に発生します。

  • 現在の編集バージョンとターゲット バージョンの両方で同じフィーチャが更新された場合
  • あるバージョンで更新されたフィーチャが、別のバージョンで削除された場合
  • トポロジ的に関連するフィーチャまたはリレーションシップ クラスが現在の編集バージョンとターゲット バージョンの両方で変更された場合

競合ビューには、競合しているすべてのクラスとそれらのフィーチャまたは行が表示されます。 ブランチ バージョンニングでは、競合はシステム所有の GDB_CONFLICTS という名前のテーブルに保存されます。 これにより、競合を 1 つずつ確認できます。また、必要に応じて競合ビューを使用して、複数の編集セッションにわたる競合を管理したり、競合を確認して解決したり、そのままにしておいて後で引き続き変更したりすることができます。

競合ビューでは次の操作を実行できます。

  • 競合しているフィールドまたは行の特定
  • 競合の表示
  • 競合を確認済みまたは未確認としてマーク
  • フィーチャまたは属性を置換するために使用するバージョンの状態を指定することによる競合の解決
注意:

複数の編集セッションにわたる競合を管理している場合は、2 回目のリコンサイル処理またはポスト処理が実行されると、未確認の競合がすべて消去されます。 この処理により、競合解決の履歴が削除されます。

リコンサイルを終了し、競合を確認した後は、ターゲット バージョンに変更内容をポストして、マージ処理を完了できます。

競合ビューを開く

競合ビューを開くには、次の手順を実行します。

  1. [コンテンツ] ウィンドウで [データ ソース別にリスト] ボタン データ ソース別にリスト をクリックします。
  2. 名前付きバージョンに接続していることを確認します。 バージョンを変更するには、Web フィーチャ レイヤー データ ソース ArcGIS Server を右クリックし、[バージョンの管理] 接続バージョンの変更 をクリックします。
  3. リボン上の [バージョニング] タブをクリックします。
  4. 競合ビューを開くには、次のいずれかのオプションを実行します。
    • [リコンサイル] ボタン リコンサイル をクリックして、リコンサイル処理を完了します。 リコンサイル中に競合が検出された場合は、競合を確認するかどうか尋ねるメッセージが表示されます。 [はい] をクリックすると、競合ビューが開きます。
      バージョンのリコンサイル後に競合の確認を求めるメッセージ
    • リコンサイルが完了した後にさらに詳しく競合を確認して管理するには、[バージョニング] タブにある [競合マネージャー] ボタン 競合マネージャー をクリックします。

競合ビューは、アプリの任意の位置にドッキングしたり、フローティング ウィンドウとして配置したりできます。 これにより、マップ ビューを操作しながら、コンテキストを提供し、詳細にデータを確認できます。

競合ビューの使用

競合ビューには、競合しているすべてのクラスとそれらのフィーチャまたは行が表示されます。 競合は、データソース、クラス、競合カテゴリ、および ObjectID を使って整理されます。 プロジェクトに含まれるすべてのマップのワークスペースが競合ビューにリスト表示されます。 競合クラスは、サービス全体の競合における Web フィーチャ レイヤーを表します。

競合ビューは、競合を処理するための 3 つの主要なセクションで構成されます。 競合リストには、競合クラスおよび競合しているフィーチャがすべて含まれます。 情報グリッドには、競合リストから選択された競合フィーチャのすべてのバージョンの状態における属性と値が表示されます。 [競合を表示] ビューアーは、マップ内でジオメトリの編集の異なるバージョンの状態を表示して比較するために使用します。

競合ビューの要素を確認するには、以下の画像と表をご参照ください。

競合ビューの番号付きセクションと要素

要素説明

1

競合リスト - 競合リスト セクションには、競合クラスおよび競合しているフィーチャがすべて含まれます。

2

情報グリッド - 情報グリッド セクションには、競合しているフィーチャのすべてのバージョンの状態における属性と値が表示されます。

3

[競合を表示] ビューアー - 競合表示ビューアーは、競合ビューの下部にある拡大可能なセクションです。 このセクションでは、競合をマップ上に表示されるとおりに表示できます。また、ビューアー内でのフィーチャのナビゲートや個別属性表示も可能です。

4

[確認済みの競合のフィルター処理] - 競合リストの上部にあるこのチェックボックスをオンにすると、リストをフィルター処理して、確認されていない競合のみを表示できます。

5

赤色のインジケーター - 行の左に表示される赤色のインジケーターは競合を表しています。 たとえば、フィーチャのジオメトリが各バージョンで編集された場合、Shape フィールドの横に赤色のインジケーターが表示されます。

6

[すべて表示]すべてのフィールドを表示 - すべてのフィールドを表示できます。

7

[競合の表示]競合しているフィールドのみ表示 - 競合しているフィールドのみを表示できます。

8

[サービス レイヤーの著作権情報を表示] - このアイコンをクリックすると、ベースマップのプロバイダーとメーカーの一覧を示すダイアログ ボックスが表示されます。

9

[競合を表示] ナビゲーション ツール - 次に示すツールを使用すると、表示されたバージョンをナビゲートおよび制御したり、競合表示ウィンドウ内を移動したりできます。

  • 表示ウィンドウごとに 1 つずつ、2 つのドロップダウン メニューがあり、これらを使用して、[現在][ターゲット][共通の上位バージョン] の間でバージョンの表示を切り替えることができます。

  • [拡大] 定率拡大 - マップ上で定率拡大を適用します。

  • [縮小] 定率縮小 - マップ上で定率縮小を適用します。

  • [選択セットにズーム] 結果にズーム - 選択したオブジェクトを中心にしてマップが拡大されます。

  • [選択オブジェクトをフラッシュ] 点滅 - [競合を表示] ビューアーで、選択オブジェクトが青色で短く点滅した後、赤色になります。

競合ビューの要素

競合リスト

競合ビューの左上にある競合リストには、すべての競合クラスおよび競合フィーチャが表示されます。 このリストには、サービス全体の Web フィーチャ レイヤーの競合の合計数が示されます。

各フィーチャの競合を表示するには、オブジェクトのドロップダウン矢印 展開 をクリックします。 これらは、以下のカテゴリに分けられます。

  • [更新-削除] - フィーチャは現在のバージョンでは更新済みで、ターゲット バージョンでは削除済みです。
  • [削除-更新] - フィーチャは現在のバージョンでは削除済みで、ターゲット バージョンでは更新済みです。
  • [更新-更新] - フィーチャは現在のバージョンとターゲット バージョンの両方で更新済みです。

競合リストで個々のフィーチャの ObjectID を選択すると、競合ビューの右側の情報グリッドに、フィーチャの現在のバージョン、ターゲット バージョン、共通の上位バージョンのフィールドと属性が表示されます。

ヒント:

確認されていない競合は太字で表示されます。 確認されると、競合が太字で表示されなくなります。

情報グリッド

情報グリッドでは、選択したフィーチャの各種のバージョンの状態における属性値を表示できます。 競合しているフィーチャのバージョンまたは編集セッションにおける属性と値を表示すると、属性値がバージョン間でどのように異なっているかを確認することができ、保存する値を決定するのに役立ちます。 すべてのフィールドが情報グリッドに表示され、属性が競合している場合は、その行の左に赤色のインジケーターが表示されます。

次に示す列には、フィーチャの各種のバージョンの状態における属性値が表示されます。

  • [現在] - 名前付きバージョンのフィーチャおよび属性の現在の状態を表します。 ここにはユーザーが行ったすべての変更が含まれます。
  • [ターゲット] - デフォルト バージョンのフィーチャとその属性を表します。
  • [共通の上位バージョン] - バージョンが最初に作成された時点、または最後にリコンサイル操作が行われた時点のフィーチャおよび属性を表します。

いずれかのバージョンでフィーチャが削除されている場合は、そのバージョンの属性値に <Deleted> が表示されます。 フィーチャが名前付きバージョンに挿入され、競合が発生すると、[ターゲット] 列および [共通の上位バージョン] 列に Did not exist が表示されます。

ヒント:

競合ビュー内の情報グリッドにはすべてのフィールドが表示されますが、フィールド レベルの競合フィルターが適用されたフィールドは競合とは認識されず、赤色のインジケーターは表示されません。

競合を表示

[競合を表示] ボタンをクリックすると、競合ビューの下部に競合表示ビューアー セクションが開きます。 競合表示ビューアーでは、競合をマップ上に表示されるとおりに表示できます。また、ビューアー内でのフィーチャのナビゲートや個別属性表示も可能です。 表示される競合は、競合リストで選択されている個々のフィーチャの ObjectID に基づきます。

[競合を表示] ビューアーの下部には競合表示ナビゲーション ツールがあります。 これらのツールに含まれる 2 つのドロップダウン メニューを使用すると、比較対象のバージョンを変更できます。バージョンのオプションには、[現在][ターゲット][共通の上位バージョン] があります。

[競合を表示] の内容は、アクティブなマップに競合クラスがあるかどうかに応じて異なります。

  • アクティブなマップに競合クラスがある場合は、すべてのマップ レイヤー、マップ シンボル、ベースマップが表示されます。
  • アクティブなマップに競合クラスがない場合は、競合しているレイヤー、デフォルト シンボルが表示されます。ベースマップは表示されません。

競合を確認済みまたは未確認としてマーク

競合しているフィールドまたは行の特定を行った後、フィーチャに確認済みのマークを付けることができます。 確認済みのマークが付いたフィーチャは太字で表示されなくなるため、リスト内で簡単に見分けることができます。

フィーチャの競合を未確認状態に戻す場合は、競合リストの ObjectID を右クリックして、[未確認としてマーク] をクリックします。 これにより、フィーチャが再び太字で表示されます。

ビューの上部にある [確認済みの競合のフィルター処理] チェックボックスをオンにすると、ビューをフィルター処理して、確認されていない競合のみを表示できます。

ブランチ バージョンニングでは、確認メモも追加できます。 フィーチャを右クリックして [確認メモの追加] をクリックし、[確認メモの追加] テキスト ボックスにテキストを入力します。 既存の確認メモを編集するには、フィーチャを右クリックして [確認メモの編集] をクリックします。

注意:

確認メモは、次のリコンサイルおよびポスト操作時に消去されます。

競合の解決

競合を解決する際に、維持するフィーチャと属性の状態を決定します。 リコンサイル操作の後、競合ビューを使用して保持するバージョンの状態を指定します。 競合ビューで置換オプションを使用することは、編集操作を実行することと同じであることに注意してください。

競合ビューで、バージョン、データセット、フィーチャ、または属性を右クリックして、以下のいずれかの置換オプションを選択します。

  • 現在のバージョンで置換
  • ターゲット バージョンで置換
  • 共通の上位バージョンで置換

ブランチ バージョンの競合ショートカット メニュー

置換オプションを使用して競合を解決できるさまざまなレベルを以下に示します。

  • 属性の置換

    この競合解決は、フィールド レベルで適用されます。 属性に競合がある場合は、現在のバージョンの属性値のみを、現在のバージョン、ターゲット バージョン、または共通の上位バージョンの状態のいずれかの属性値で置換できます。 これを行うには、競合のある属性を右クリックし、メニューでこのオプションをクリックします。

  • フィーチャの置換

    この競合解決は、行レベルで適用されます。 フィーチャ全体を、現在のバージョン、ターゲット バージョン、または共通の上位バージョンのフィーチャの状態で置換できます。 つまり、競合しているフィールドが置換されます。

  • クラス レベルの置換

    フィーチャクラス全体の現在の状態を、現在のバージョン、ターゲット バージョン、または共通の上位バージョンの状態で置換し、競合を解決できます。 この方法では、競合しているすべてのフィーチャと属性が一度に置換されるため、競合するフィーチャをすばやく更新して置換することができます。 [競合] リストに複数のフィーチャが存在する場合は、これらのすべてが選択したバージョンで置換されます。

    クラス レベルの置換オプションを選択するには、競合リストでフィーチャクラスの名前を右クリックし、使用するバージョンをクリックします。

  • 完全な置換

    この競合解決は、ルート レベルで適用されます。 このオプションを使用すると、リスト内の競合しているすべてのフィーチャとフィーチャクラスが指定された状態に置換されます。 複数のフィーチャクラスとオブジェクトに競合がある場合は、これらのすべてが選択したバージョンで置換されます。

    競合リストの上部にあるバージョンおよび接続情報を右クリックし、すべての競合を置換するために使用するバージョンをクリックします。

フィールド レベルの競合フィルタリング

リコンサイル中に競合が検出された際、フィールドまたはフィールド セットに適用された編集を残したい場合があります。 リコンサイル中にフィールドで検出された競合を除外したい状況の例を以下に示します。

  • 複数の異なるバージョンにおいて、あるフィールドに対する一括更新が実行される場合
  • バージョン内で実行された編集に基づき、情報がフィールドに書き込まれる場合

親バージョンと子バージョンで同じ属性が更新されたときに競合が識別されないようにするため、[フィールド競合フィルターの追加 (Add Field Conflict Filter)] ツールを使用して、フィールド セットに競合フィルターを定義できます。 フィールド競合フィルターでは、フィーチャクラス内のフィールドまたはフィールド セットを、競合検出からフィルタリングされるものとしてタグ付けできます。 競合フィルターが定義されたフィールドのみが編集された場合は、リコンサイルの操作中、競合は返されません。 これは、属性で競合を定義した場合のみに適用されます。

ListFieldConflictFilters Python 関数を使用して、フィーチャクラスまたはテーブルに競合フィルターがいつ定義されたかを確認できます。

注意:

[競合] ビューにはすべてのフィールドが表示されますが、競合フィルターが適用されたフィールドは競合とは認識されず、赤色のインジケーターは表示されません。

ブランチ バージョン対応データでは、常に編集バージョンを優先して競合がリコンサイルされるので、競合フィルターを持つフィールドには編集バージョンからの値が含まれます。

[フィールド競合フィルターの削除 (Remove Field Conflict Filter)] ツールを使用して、これらのフィールドから競合フィルターを削除できます。

注意:

[フィールド競合フィルターの追加 (Add Field Conflict Filter)] または [フィールド競合フィルターの削除 (Remove Field Conflict Filter)] ツールによる変更を反映するには、ブランチ バージョン対応データを含むサービスを再起動する必要があります。

属性ルールによる競合の解決

属性ルールを使用すると、編集の操作性や、ジオデータベース データセットのデータ整合性を向上させることができます。 競合が属性 (列) 単位で定義されている状況でリコンサイルを実行すると、デフォルト バージョンとリコンサイルされるバージョンの両方で更新されたフィーチャに対して、即時計算または制約ルールが評価されます。 この処理の実行中に制約ルールの違反が発生すると、マージは実行されず、フィーチャは [更新-更新] の競合に進み、競合ビューで確認できるようになります。

リレーションシップ クラスによる競合の解決

リレーションシップ クラスを使用すれば、関連するオブジェクト間の参照整合性を維持するために役立ちます。 ブランチ バージョン対応データ ソースがリレーションシップ クラスに参加している場合、リコンサイル処理ではこのデータの参照整合性が評価されます。 参照整合性の違反がある場合、参加しているフィーチャが競合としてレポートされ、競合ビューで確認できるようになります。

関連元のリレーションシップ クラスからフィーチャを削除すると、関連先のリレーションシップ クラスからフィーチャを削除するためのメッセージがトリガーされることがあります。 このため、リレーションシップ クラスに属しているフィーチャクラスの競合を置換するという一見単純な操作がもたらす影響に注意しなければなりません。

次に、リレーションシップ クラス間で競合が発生する例を示します。

  • 親バージョンで、関連先フィーチャを追加し、それを関連元クラスのフィーチャに関連付けます。
  • 子バージョンで、新しい関連先フィーチャに関連付けるために使用された、同じ関連元フィーチャを削除します。
  • 編集内容をリコンサイルすると、関連先クラスでは更新 - 更新の競合が、関連元クラスでは削除 - 更新の競合が検出されました。

次のような例もあります。

  • 電力フィーチャ データセットで、変圧器へのリレーションシップを持つ電柱を削除した結果、関連する変圧器も削除されます。
  • 同時に別の編集セッションが開始され、電柱の削除に伴って削除されたばかりの変圧器の属性を、別の編集ユーザーが変更します。
  • 編集内容をリコンサイルすると、関連元クラスと関連先クラスで更新 - 削除の競合が検出されました。

この例では、2 人目の編集ユーザーがすべての競合を編集セッションの状態で置換することにした場合、1 人目の編集ユーザーの編集セッションで削除された電柱と変圧器が再作成されます。

関連トピック