Synchronisation avec des filtres et des données reliées
Cette rubrique s'applique uniquement à ArcEditor et ArcInfo.
Pour la réplication bidirectionnelle et monodirectionnelle, les mêmes filtres et règles des classes de relations utilisés lors de la création du réplica s'appliquent pendant la synchronisation, à l'exception des filtres basés sur un ensemble de sélection. Lorsque vous sélectionnez les modifications à envoyer, toutes les modifications de chaque jeu de données de réplica appliquées depuis la dernière synchronisation sont évaluées. Si une modification correspond aux filtres du réplica, elle sera synchronisée.
Le graphique suivant décrit l'application du filtre de zone du réplica lors de la synchronisation, lorsque des entités sont déplacées au cours d'une session de mise à jour. Les modifications suivantes seront envoyées au réplica associé pendant la synchronisation :
- Une entité est déplacée vers un nouvel emplacement à l'intérieur de la zone du réplica.
- Une entité est déplacée à l'extérieur de la zone du réplica. Le nouvel emplacement de l'entité sera actualisé sur le réplica associé pendant la synchronisation, même s'il figure à l'extérieur de la zone du réplica.Remarque :La modification est envoyée uniquement si l'entité était présente dans le filtre du réplica lors de la synchronisation précédente. Par exemple, si vous insérez, retirez, puis synchronisez une entité avec le réplica associé, ces modifications ne sont pas envoyées.
- Une entité est déplacée de l'extérieur vers l'intérieur de la zone du réplica.
Une entité déplacée qui ne figure pas dans la zone du réplica (scénario 4) n'est pas actualisée dans le réplica associé lors de la synchronisation.
Les filtres basés sur des ensembles de sélection sont appliqués lors de la création de réplicas, mais sont ignorés lors de la synchronisation. Le processus de synchronisation traite un filtre d'ensemble de sélection comme s'il s'agissait de lignes. Par exemple, si un seul ensemble de sélection est utilisé pour définir les lignes à répliquer à partir d'une table lors de la création de réplicas, toutes les modifications apportées à cette table s'appliquent au cours de la synchronisation. Si un ensemble de sélection et d'autres filtres sont utilisés pour définir les lignes à répliquer à partir d'une table lors de la création de réplicas, seuls les autres filtres s'appliquent au cours de la synchronisation. Par exemple, si un ensemble de sélection et ensemble de définitions sont appliqués lors de la création de réplicas, seul l'ensemble de définitions s'applique au cours de la synchronisation.
Si les données que vous répliquez incluent des classes de relations, ceci influencera le processus de synchronisation. La section suivante décrire l'application des classes de relations lors de la synchronisation.
Si une modification ne correspond pas aux filtres, elle peut encore être synchronisée si elle répond aux critères suivants :
- Elle appartient à un jeu de données avec un filtre de type structure uniquement et fait partie d'au moins une classe de relations.
Elle doit également répondre à l'un des critères suivants :
- Elle est reliée à une ligne d'un autre jeu de données correspondant aux filtres. La ligne reliée n'a pas besoin d'être mise à jour depuis la dernière synchronisation.
- Elle figure dans un jeu de données relié à un autre jeu de données avec un filtre de type structure uniquement.
Cela signifie que les lignes des classes ou tables d'entités comportant des filtres autres que structure uniquement peuvent être synchronisées seulement si elles correspondent aux critères de filtre.
Ces règles permettent également l'enchaînement des données reliées. Cette situation peut survenir dans les classes de relations, lorsqu'une ligne de classe de destination distante peut être retrouvée en remontant plusieurs relations jusqu'à l'origine dans le réplica.
Exemple
Dans cet exemple, trois bâtiments sont sélectionnés pour être répliqués. Les enregistrements reliés étant inclus dans le processus de création du réplica, la classe de destination reliée est également répliquée. Les champs de la classe de destination reliés aux entités d'origine sont mis à jour dans le réplica enfant. Lorsque les réplicas sont synchronisés, ces modifications sont actualisées dans la classe de destination reliée du réplica parent.
Conservation des relations
La synchronisation gère les relations. Par exemple, si une nouvelle relation est ajoutée au réplica associé, elle est conservée lorsque les enregistrements correspondants sont synchronisées. La conservation de la relation peut nécessiter le changement de la valeur de clé étrangère du réplica qui reçoit des modifications, si la clé d'origine représente le champ IdObjet.
Les exemples suivants décrivent le comportement des enregistrements reliés pendant la synchronisation :
Exemple un
Dans ce premier exemple, certaines entités d'une classe d'origine, des bâtiments, ont été sélectionnées pour la réplication. Les bâtiments sont reliés via une relation non attribuée à des enregistrements attributaires d'une table ayant été exclus de la réplication. Lors de la modification dans le réplica enfant, un bâtiment a été supprimé. Lors de la synchronisation, pour annuler la relation avec l'entité supprimée, l'entrée correspondante dans le champ de clé étrangère de la classe de destination, la table, est définie sur NUL.
Ce comportement de synchronisation peut également entraîner la suppression de lignes représentant les relations dans une table de classe de relations décrites par des attributs (comme indiqué dans l'exemple suivant).
Exemple deux
Dans cet exemple, la relation entre la classe d'entités d'origine et la table de classes de destination est attribuée. Cela signifie que la relation elle-même dispose d'une table reliée. La classe de relations et la classe de destination ont été exclues du processus de création du réplica. Les modifications apportées à la classe d'entités d'origine du réplica enfant ont entraîné la suppression d'une entité. Lors de la synchronisation, la ligne de la table de classe de relations décrites par des attributs représentant la relation de cette entité à un objet dans la classe de destination, est supprimée.
Seules des relations peuvent être supprimées lors de la synchronisation. Les objets reliés ne sont jamais supprimés.