再同期後に情報メッセージを確認する
「ドキュメントを再同期」アクションを実行すると、すべての競合が表示されるだけでなく、情報メッセージが含まれている行のヘッダーに情報の競合アイコン
が表示されます。これらのメッセージには、サーバー上のドキュメント内でコンテンツ行の挿入、移動、削除が行われたために発生した構造的な差異が示されます。
情報の競合アイコンにマウスカーソルを合わせると、確認が必要な情報がアイテムに含まれていることがツールヒントに表示されます。情報アイコンをクリックすると、編集可能なアイテムビューに情報メッセージが表示されます。たとえば、メッセージにはサーバー上の変更によりアイテムが元の場所から移動されたことが示されます。
変更内容をサーバーに正しく保存するには、編集に関するすべての競合を解決して競合を削除する必要がありますが、情報メッセージについては操作を行う必要はありません。情報メッセージの目的は、ドキュメントを保存する前に追加の変更を行う場合などに備えて、サーバー上での挿入、移動、削除によって発生した構造的な差異を通知することです。通常は最後にサーバーに保存された変更が優先されます。
挿入に関する情報の競合
ここでは、X をドキュメント内に挿入することとします。次に示すいずれかの条件に一致する場合、挿入対象アイテムに情報の競合アイコンが表示されます。
• X が挿入された親アイテムが、サーバー上で移動または削除されている場合。
◦ X の親アイテムが移動された場合、以下のチェック処理が実行され、情報の競合を表示するかどうかが決まります。
▪ 親アイテムが同じかどうか。
▪ 以前の兄弟アイテムが同じかどうか。以前の兄弟アイテムとは、X と同じレベルに位置する X の上位アイテムのことです。
▪ ドキュメントルートのパスが同じかどうか。
▪ 以前の兄弟アイテムが、挿入されたノードである場合、以前の実際の最初の兄弟アイテムが同じかどうか。
ここでは、以下のドキュメント構造になっていることとします。
A
--B
---C
--D
B と D は A の子アイテムで、C は B の子アイテムです。
クライアント側で、B の 2 番目の子アイテムとして X を挿入すると、サーバー側で、B がセクションとして D の下に移動されます (B の子アイテムである C も移動されます)。
再同期を実行すると、B が D の下に移動されます。新しいノードである X は、B の子アイテムのままです。この段階では、以下のすべてのチェックにパスします。
▪ X の親アイテムが B のままであること。
▪ X の以前の兄弟アイテムが C のままであること。
▪ ドキュメントルートに対する X のパスが、「X、B、A、ドキュメントルート」のままであること。
▪ X の以前の兄弟アイテムが、挿入されたノードではないこと。
この場合、情報の競合は表示されません。
ただし、サーバー側で B が移動されたために、B が A の子アイテムではなくなった場合は、再同期を実行すると、ドキュメントルートに対する X のパスが変更されます。X のパスは、「X、B、ドキュメントルート」になります。その場合、情報の競合が表示されることになります。
◦ X の親が削除されている場合、削除されていない最初の上位アイテムが、自動的に X の親になります。
• X が挿入された兄弟アイテムが、サーバー上で移動または削除されている場合。
◦ X の兄弟アイテムが移動されている場合、その移動先の場所にかかわらず、X は同じ兄弟アイテムの下に挿入されます。ここでは、同じ親アイテム内で兄弟アイテムが移動されていることとします。兄弟アイテムの親が変更された場合、X は既存の親の子アイテムとして挿入されますが、兄弟アイテムに置き換わる形で挿入されます。たとえば、X の兄弟アイテムが 2 番目の子アイテムである場合、X が 2 番目の子アイテムとして挿入されます。新しい挿入位置を決定する際には、親アイテムが兄弟アイテムよりも優先されます。
◦ X の兄弟アイテムが削除された場合、X の上に位置する兄弟アイテムを逆の順序で確認することにより、X の挿入位置が決まります。
• ルートドキュメントから X へのパスがサーバー上で変更されている場合。
◦ これは、X の親が移動されたか X の階層内の親が移動されたために、異なる親を持つことになった場合です。
いずれの場合も、サーバー上の X の場所は、最初の場所とは異なっています。X に表示される情報の競合により、この差異が通知されます。いずれの場合も、X の親アイテム、X の兄弟アイテム、X の上位アイテムと下位アイテムに対するフィールドの変更は、競合を判断する際には無視されます。ただし、再同期後のドキュメントには、これらの変更がすべて表示されます。
移動に関する情報の競合
ここでは、X が別の場所に移動されていることとします。次に、移動操作のいくつかのシナリオと、その処理方法を示します。
• サーバー上で X が削除されている場合。
• クライアント側で表示される X の親がサーバー上で削除されている場合。
◦ 削除されていない最初の上位アイテムが、自動的に X の親になります。
◦ 情報の競合が X に表示されます。情報メッセージにより、X の場所が元の場所から変更されていることが通知されます。
◦ オプションは表示されません。
• X がサーバー上の同じ場所に移動された場合。
◦ 競合や情報の競合は表示されません。この場合、X の場所はクライアント側でもサーバー側でも同じであるため、無視されます。
• X がサーバー上の異なる場所に移動された場合。
◦ クライアント側での移動操作が優先されます。
◦ 競合や情報の競合は表示されません。
• コンテンツアイテムの挿入、削除、移動が原因で X の構造がサーバー上で変更されている場合。
◦ 情報の競合が表示される場合、以下のケースを除き、このシナリオは無視されます。
▪ X の以前の兄弟アイテムがサーバー上で削除されている場合。
▪ X の以前の兄弟アイテムが移動されたために、この兄弟アイテムの親アイテムが変わった場合。親アイテムは兄弟アイテムよりも優先度が高いため、X の親アイテムは変わりません。
いずれの場合も、X の親アイテム、X の兄弟アイテム、X の上位アイテムと下位アイテムに対するフィールドの変更は、競合を判断する際には無視されます。ただし、再同期後のドキュメントには、これらの変更がすべて表示されます。