Gérer les conflits de versions traditionnelles

Disponible avec une licence Standard ou Advanced.

Des conflits peuvent être détectés lorsqu’une version nommée est réconciliée avec une version parent. Si des conflits sont détectés lors de la réconciliation, ils sont résolus initialement en faveur de la version modifiée et peuvent être examinés dans la vue Conflicts (Conflits).

Des conflits surviennent dans les cas suivants :

  • La même entité est actualisée à la fois dans la version de mise à jour en cours et la version cible.
  • La même entité est actualisée dans une version et supprimée dans l’autre.
  • Une entité ou une classe de relations reliée topologiquement est modifiée dans la version de mise à jour en cours et une version cible.

La vue Conflicts (Conflits) contient toutes les classes en conflit, ainsi que leurs entités ou lignes en conflit, et vous permet d’effectuer les opérations suivantes :

  • Déterminer les champs ou lignes en conflit.
  • Visualiser les conflits.
  • Marquer les conflits comme examinés ou non examinés.
  • Résoudre les conflits en désignant la représentation à utiliser pour remplacer des entités ou des attributs.

Après avoir effectué la réconciliation et examiné les conflits, vous pouvez procéder à la fusion en réinjectant des modifications dans la version cible.

Ouvrir la vue Conflicts (Conflits)

Pour ouvrez la vue Conflicts (Conflits), procédez comme suit :

  1. Dans la fenêtre Contents (Contenu), cliquez sur le bouton List By Data Source (Répertorier par source de données) Répertorier par source de données.
  2. Vérifiez que vous êtes connecté à une version nommée. Pour changer de version, cliquez avec le bouton droit sur la source de données de la géodatabase d’entreprise Connexion à la géodatabase et sélectionnez Change Version (Changer de version) Changer de version.
  3. Sur l’onglet Versioning (Versionnement), cliquez sur le bouton Reconcile (Réconcilier) Réconcilier et procédez à la réconciliation. Si des conflits sont détectés lors de la réconciliation, une invite apparaît et vous demande si vous souhaitez examiner les conflits. Si vous cliquez sur Yes (Oui), la vue Conflicts (Conflits) s’ouvre.
    Invite concernant l’examen des conflits après la réconciliation des versions
  4. Il est possible de rouvrir la vue Conflicts (Conflits) dans la même session de mise à jour. Pour ce faire, cliquez sur le bouton Conflict Manager (Gestionnaire de conflits) Gestionnaire de conflits de l’onglet Versioning (Versionnement).

La vue Conflicts (Conflits) peut être ancrée n’importe où dans l’application ou être positionnée sous forme de fenêtre flottante. Cela vous permet d’interagir en même temps avec une vue Carte afin de fournir du contexte et d’explorer davantage les données.

Utiliser la vue Conflicts (Conflits)

La vue Conflicts (Conflits) contient toutes les classes en conflit, ainsi que leurs entités ou lignes en conflit. Les conflits sont organisés selon leur source de données, leur classe, leur catégorie et leur ObjectID. Les espaces de travail de toutes les cartes du projet sont répertoriés dans la vue Conflicts (Conflits). Les classes de conflits représentent les classes en conflit pour la totalité de la géodatabase.

La vue Conflicts (Conflits) est composée de trois sections principales qui permettent de traiter les conflits. La liste Conflicts (Conflits) contient toutes les classes et entités en conflit. La grille d’informations affiche les attributs et les valeurs de toutes les représentations de l’entité en conflit sélectionnée dans la liste Conflicts (Conflits). La visionneuse Conflict Display (Affichage des conflits) permet d’afficher et de comparer les différentes représentations des mises à jour de géométrie dans une carte.

Reportez-vous à l’image et au tableau ci-dessous pour examiner les éléments de la vue Conflicts (Conflits) :

Sections et éléments numérotés de la vue Conflicts (Conflits) du versionnement traditionnel

ElémentDescription

1

Liste Conflicts (Conflits) : cette section contient toutes les classes et entités en conflit.

2

Grille d’informations : cette section affiche les attributs et les valeurs de toutes les représentations de l’entité en conflit.

3

Visionneuse Conflict Display (Affichage des conflits) : le bouton Conflict Display (Affichage des conflits) ouvre la section de la visionneuse d’affichage des conflits en bas de la vue Conflicts (Conflits). Vous pouvez ainsi visualiser les conflits tels qu’ils apparaissent sur la carte, accéder aux entités à l’écran et les identifier.

4

Filter Reviewed Conflicts (Filtrer les conflits examinés) : cochez cette case située en haut de la liste des conflits pour filtrer la liste et afficher uniquement les conflits qui n’ont pas été examinés.

5

Indicateur rouge : un indicateur rouge à gauche de la ligne signale un conflit. Par exemple, si la géométrie de l’entité a été mise à jour dans chaque version, un indicateur rouge apparaît à côté du champ Shape (Forme).

  • Lorsque les conflits sont définis par objet : toutes les lignes mises à jour sont en gras et comportent un indicateur rouge.
  • Lorsque les conflits sont définis par attribut : toutes les lignes mises à jour sont en gras, mais seules les lignes en conflit comportent un indicateur rouge.

6

Show All (Afficher tout)Afficher tous les champs : vous permet d’afficher tous les champs.

7

Show Conflicts (Afficher les conflits)Afficher uniquement les champs en conflit : vous permet d’afficher uniquement les champs en conflit.

8

Show credits for service layers (Afficher les crédits des couches de services) : cliquez sur ce bouton pour ouvrir une boîte de dialogue répertoriant les fournisseurs et les auteurs du fond de carte.

9

Outils de navigation de la fenêtre Conflict Display (Affichage des conflits) : les outils suivants vous permettent d’accéder à la version affichée et de la contrôler, ainsi que de naviguer dans la fenêtre d’affichage des conflits :

  • Deux menus déroulants, un pour chaque fenêtre d’affichage, vous permettent d’afficher la version Current (Actuel), Pre-Reconcile (Réconciliation préalable), Target (Cible) ou Common Ancestor (Ascendant commun).

  • Zoom In (Zoom avant) Zoom avant constant : applique un zoom avant constant sur la carte.

  • Zoom Out (Zoom arrière) Zoom arrière constant : applique un zoom arrière constant sur la carte.

  • Zoom To Selected (Zoom sur la sélection) Zoom sur les résultats : applique un zoom afin de centrer la carte sur l’objet sélectionné.

  • Flash Selected (Faire clignoter la sélection) Flash : l’objet sélectionné clignote brièvement en bleu et devient rouge dans la visionneuse d’affichage des conflits.

Éléments de la vue Conflicts (Conflits)

Liste des conflits

Toutes les classes et entités en conflit sont répertoriées dans la liste des conflits affichée dans le coin supérieur gauche de la vue Conflicts (Conflits).

Cliquez sur la flèche de liste déroulante Développé d’un objet pour afficher les conflits liés à chaque entité. Ils sont répartis selon les catégories suivantes :

  • Update-Delete (Mettre à jour-Supprimer) : l’entité a été mise à jour dans la version actuelle et supprimée dans la version cible.
  • Delete-Update (Supprimer-Mettre à jour) : l’entité a été supprimée dans la version actuelle et mise à jour dans la version cible.
  • Update-Update (Mettre à jour-Mettre à jour) : l’entité a été mise à jour dans les deux versions, actuelle et cible.

Lorsque vous sélectionnez l’élément ObjectID d’une entité individuelle de la liste des conflits, les champ et les attributs des versions actuelle, de réconciliation préalable, cible et d’ascendant commun de l’entité s’affichent dans la grille d’informations sur la partie droite de la vue Conflicts (Conflits).

Conseil :

Les conflits qui n’ont pas été examinés sont affichés en gras. Les conflits qui ont été examinés ne sont plus en gras.

Grille d’informations

La grille d’informations contient les différentes représentations des valeurs d’attribut d’une entité sélectionnée. Les attributs et valeurs de toutes les représentations d’une entité en conflit vous permettent de visualiser comment les valeurs attributaires diffèrent dans les versions et vous aident à déterminer la représentation des données à conserver. Tous les champs sont affichés dans la grille d’informations et un indicateur rouge apparaît à gauche de la ligne des attributs en conflit.

Les colonnes suivantes affichent les valeurs d’attribut des différentes représentations de l’entité :

  • Current (Actuelle) - Représente l’état actuel des entités et des attributs dans la version nommée. Cela inclut toute modification que vous avez apportée.
  • Pre-Reconcile (Réconciliation préalable) : représente la manière dont les entités apparaissent dans votre version avant la réconciliation.
  • Target (Cible) : représente les entités et leurs attributs dans la version cible.
  • Common ancestor (Ascendant commun) - Représente les entités et les attributs lors de la création initiale de la version ou de la dernière opération de rapprochement.

Si une entité a été supprimée dans l’une des versions, la mention <Deleted> apparaît comme valeur attributaire de la version. Si des entités ont été insérées dans une version nommée et qu’elles sont impliquées dans un conflit, la mention Did not exist apparaît dans les colonnes Target (Cible) et Common Ancestor (Ascendant commun).

Conseil :

Tous les champs sont affichés dans la grille d’informations de la vue Conflicts (Conflits) ; toutefois, les champs sur lesquels un filtre des conflits est appliqué ne sont pas identifiés comme étant en conflit et n’affichent pas d’indicateur rouge.

Affichage des conflits

Le bouton Conflict Display (Affichage des conflits) ouvre la section de la visionneuse d’affichage des conflits en bas de la vue Conflicts (Conflits). Cette visionneuse vous permet de visualiser les conflits tels qu’ils apparaissent sur la carte, d’accéder aux entités à l’écran et de les identifier. Les conflits affichés sont basés sur l’élément ObjectID de l’entité individuelle sélectionné dans la liste des conflits.

Les outils de navigation de l’affichage des conflits se trouvent sous la visionneuse Conflict Display (Affichage des conflits). Ces outils contiennent deux menus déroulants qui vous permettent de modifier les versions comparées, les options permettant de sélectionner la version Current (Actuel), Pre-Reconcile (Réconciliation préalable), Target (Cible) ou Common Ancestor (Ascendant commun).

Le contenu de l’affichage des conflits dépend de la présence de la classe en conflit dans la carte active :

  • Lorsque la classe en conflit figure dans la carte active, le conflit affiche toutes les couches de carte, utilise la symbologie de la carte et inclut le fond de carte.
  • Si la classe en conflit ne figure pas dans la carte active, le conflit affiche uniquement la couche en conflit, utilise la symbologie par défaut et n’inclut pas le fond de carte.

Marquer les conflits comme examinés ou non examinés

Une fois que vous avez déterminé les champs ou lignes en conflit, vous pouvez marquer une entité comme examinée. Vous pouvez effectuer le suivi des entités que vous avez examinées car celles marquées comme examinées n’apparaissent plus en gras dans la liste.

Si vous décidez de revenir ultérieurement sur un conflit d’entité, cliquez avec le bouton droit sur l’élément ObjectID dans la liste Conflicts (Conflits) et sélectionnez Mark as not reviewed (Marquer comme non révisé). L'entité s'affiche de nouveau en gras.

Si vous cochez la case Filter Reviewed Conflicts (Filtrer les conflits examinés) en haut de la vue, vous pouvez filtrer la liste pour n’afficher que les conflits qui n’ont pas encore été examinés.

Résoudre les conflits

Lorsque vous résolvez des conflits, vous choisissez la représentation des entités et des attributs que vous souhaitez conserver. Quelle que soit la version en faveur de laquelle vous souhaitez effectuer une réconciliation (version cible ou mise à jour), vous pouvez spécifier la représentation à conserver : actuelle (telle qu’elle apparaissait dans votre version avant la réconciliation), cible (telle qu’elle apparaît dans les modifications apportées par un autre utilisateur) ou d’ascendant commun (manière dont l’entité ou l’attribut apparaît dans la version cible).

Dans la vue Conflicts (Conflits), cliquez avec le bouton droit sur la version, le jeu de données, l’entité ou l’attribut et sélectionnez l’une des options de remplacement suivantes :

  • Remplacer par la version antérieure à la réconciliation
  • Remplacer par la version cible
  • Remplacer par la version d’ascendant commun

Menu contextuel Conflict (Conflit) de la version traditionnelle

Voici les différents niveaux auxquels les options de remplacement permettent de résoudre des conflits :

  • Remplacement d'attribut :

    Cette méthode est appliquée au niveau du champ. Si les attributs présentent des conflits, vous pouvez simplement remplacer la valeur attributaire dans la version actuelle par l’une des représentations : actuelle, préalable à la réconciliation, cible ou d’ascendant commun. Pour ce faire, cliquez avec le bouton droit sur l'attribut en conflit, puis sélectionnez l'option de votre choix dans le menu contextuel.

  • Remplacement d'entité :

    Cette méthode est appliquée au niveau de la ligne. Vous pouvez remplacer une entité complète par la représentation de l’entité dans la version actuelle, préalable à la réconciliation, cible ou d’ascendant commun. Cela signifie que tous les champs en conflit sont remplacés.

  • Remplacement au niveau de la classe :

    Vous pouvez choisir de remplacer la représentation actuelle de la classe d’entités complète par la représentation de la version actuelle, préalable à la réconciliation, cible ou d’ascendant commun afin de résoudre le conflit. Cette méthode remplace l'ensemble des entités et attributs conflictuels en une seule fois, ce qui vous permet d'actualiser et de remplacer rapidement les entités conflictuelles. Si la liste Conflits contient plusieurs entités, toutes sont remplacées par la version de votre choix.

    Pour choisir une option de remplacement au niveau de la classe, cliquez avec le bouton droit sur le nom de la classe d'entités dans la liste Conflits, puis sélectionnez la version que vous souhaitez utiliser.

  • Remplacement complet :

    Il s'agit d'un remplacement au niveau de la racine Cette option de remplacement remplace toutes les entités et classes d’entités en conflit de la liste par la représentation sélectionnée. Si plusieurs classes d’entités et objets sont en conflit, ils sont tous remplacés par la version que vous choisissez.

    Cliquez avec le bouton droit sur les informations de version et de connexion en haut de la liste Conflicts (Conflits) et sélectionnez la version à utiliser pour remplacer tous les conflits.

  • Fusionner les géométries :

    Cette opération se produit au niveau du champ et est associée expressément à l’attribut Shape (Forme). L’option de combinaison des géométries est uniquement disponible dans le menu contextuel Shape (Forme) lorsqu’il existe un conflit avec le champ Shape (Forme). Si deux éditeurs mettent à jour la géométrie de la même entité, mais ne modifient pas la même zone de cette entité, ils ont la possibilité de résoudre le conflit en combinant des géométries et en acceptant les deux mises à jour. Une fois les géométries fusionnées, vous obtenez une entité contenant les mises à jour effectuées par les deux éditeurs.

    Si les mises à jour effectuées par un éditeur partagent une région qui a également été mise à jour par un autre éditeur, leurs zones modifiées se chevauchent. Bien que la fusion des géométries soit possible, toute tentative de fusion se solde par un échec avec le message d’erreur suivant :

    Erreur détectée lors de la fusion des géométries. Impossible de combiner les deux géométries. Les régions mises à jour se chevauchent.

Filtrage des conflits au niveau des champs

Dans certains cas d’utilisation du versionnement traditionnel, lorsque des conflits sont détectés lors de la réconciliation, il peut être préférable de conserver des mises à jour appliquées à un champ ou à un ensemble de champs. Voici quelques cas au cours desquels vous souhaiterez peut-être filtrer les conflits détectés dans un champ lors d’une réconciliation :

  • Une mise à jour par lots est effectuée sur un champ dans différentes versions.
  • Des informations sont écrites dans un champ en fonction des mises à jour effectuées au sein de la version.

Pour empêcher l’identification des conflits lorsque le même attribut est mis à jour dans les versions parent et enfant, vous pouvez utiliser l’outil Ajouter un filtre des conflits de champs afin de définir l’ensemble des champs dans lesquels les conflits doivent être filtrés. Un filtre des conflits de champs permet de baliser un champ ou un ensemble de champs au sein des classes d’entités pour les éliminer de la détection des conflits. Les conflits ne sont pas renvoyés pendant la réconciliation si vous ne mettez à jour que des champs sur lesquels des filtres de conflits sont activés. Cette option n’est disponible que lorsque vous définissez des conflits par attribut.

Remarque :

Tous les champs sont affichés dans la vue Conflicts (Conflits) ; toutefois, les champs sur lesquels un filtre des conflits est appliqué ne sont pas identifiés comme étant en conflit et n’affichent pas d’indicateur rouge.

Lorsque la réconciliation est terminée, la valeur placée dans le champ présentant un filtre des conflits varie selon que vous avez choisi d'effectuer une réconciliation en faveur de la version cible ou de la version de mise à jour. Si vous avez choisi d'effectuer la réconciliation en faveur de la cible, les champs avec un filtre des conflits affiche la valeur de la version cible. Si vous avez choisi d'effectuer la réconciliation en faveur de la mise à jour, les champs avec un filtre des conflits affiche la valeur de la version de mise à jour.

L’outil Supprimer le filtre des conflits de champs peut supprimer ces filtres de conflits de ces champs.

La fonction Python ListFieldConflictFilters permet de savoir si des filtres de conflits ont été définis pour une table ou une classe d’entités.

Remarque :

Lorsqu’un filtre des conflits de champs est défini pour une table ou une classe d’entités, les clients ArcGIS antérieurs à la version 10.2.1 ne peuvent pas ouvrir la table ou la classe d’entités. Les filtres des conflits de champs peuvent être définis dans un champ, puis supprimés après la réconciliation des versions, si les versions antérieures de ArcGIS ont besoin d’accéder aux données.

Résoudre les conflits avec des règles attributaires

Les règles attributaires améliorent l’expérience de mise à jour et renforcent l’intégrité des données des jeux de données des géodatabases. La réconciliation d’une classe d’entités versionnée de manière traditionnelle avec un calcul immédiat ou des règles de contrainte évalue ces règles attributaires. Si une règle de contrainte est enfreinte, l’erreur associée est signalée et la réconciliation échoue. Réconciliez les conflits par ligne afin d’éviter toute erreur de règle de contrainte.

Résoudre des conflits avec des classes de relations

Il est possible d’utiliser des classes de relations pour renforcer l’intégrité référentielle entre des objets reliés. Si des sources de données versionnées participent à une classe de relations, le processus de rapprochement évalue l’intégrité référentielle de ces données. Si elle n’est pas respectée, les entités impliquées sont signalées comme des conflits et peuvent être examinées dans la vue Conflicts (Conflits).

La suppression d’une entité d’une classe de relations source risque de générer un message entraînant la suppression d’une entité de la classe de relations destinataire. Soyez conscients des ramifications lorsque vous décidez d'effectuer un remplacement lors de conflit impliquant des classes d'entités qui font partie de classes de relations.

Voici un exemple de conflit susceptible de survenir entre des classes de relations :

  • Dans une version parent, vous ajoutez une entité de destination et la relier à une entité dans la classe d’origine.
  • Dans une version enfant, vous supprimez la même entité d’origine qui a été utilisée pour établir la relation avec la nouvelle entité de destination.
  • Lorsque les mises à jour sont réconciliées, un conflit supprimer-mettre à jour est détecté sur la classes d’origine.

Voici un autre exemple :

  • Dans votre jeu de classes d'entités d'installations électriques, vous supprimez un pylône relié à un transformateur, ce qui entraîne la suppression de celui-ci.
  • Dans une autre session de mise à jour simultanée, un éditeur modifie les attributs du transformateur que vous venez de supprimer en supprimant son pylône associé.
  • Lorsque les mises à jour sont réconciliées, un conflit mettre à jour-supprimer est détecté sur les classes d’origine et de destination.

Dans ce dernier exemple, si le second éditeur choisit de remplacer tous les conflits par les représentations de la session de modification, le pylône et le transformateur supprimés lors de votre session de modification sont recréés.

Rubriques connexes