Lorsque vous publiez un service de carte ou de géodonnées avec la fonctionnalité WFS activée, les clients WFS conformes à la norme OGC peuvent accéder aux données. Ces clients WFS peuvent également voir les modifications les plus récentes apportées aux données.
Lorsqu'un client WFS tel qu'une visionneuse émet une requête, les données sont renvoyées puisqu'elles existent à ce moment dans la source de données. Supposons par exemple que vous possédiez une carte contenant une classe d'entités. Cette classe d'entités est issue d'une géodatabase fichier. Vous pouvez maintenant publier cette carte en tant que service cartographique et activer la fonctionnalité WFS. Un client doté d'une visionneuse WFS peut accéder aux données dans la classe d'entités à l'aide de l'URL WFS fournie par le service de carte.
Supposons maintenant qu'un autre utilisateur accède à la géodatabase fichier source et ajoute, modifie et supprime des entités de la classe d'entités. Les données les plus à jour s'afficheront alors à la prochaine actualisation de la visionneuse WFS du client.
Lorsque la source de données est une géodatabase d’entreprise, de groupe de travail et de bureau, les services de géodonnées et de carte publient les données d'une version spécifique. Si les données sont modifiées dans cette version, ces modifications sont visibles par les clients WFS et non WFS. Si des modifications sont apportées dans d'autres versions, en revanche, les clients n'y ont pas accès tant qu'ils n'ont pas réconcilié leur version avec la version publiée.
Vous disposez ainsi d'un plus grand contrôle sur les données exposées par l'intermédiaire de vos services. Supposons que vous publiiez des données avec la fonctionnalité WFS à partir d'une version nommée WFS. Les clients dotés de visionneuses WFS commencent alors à accéder aux données par l'intermédiaire de votre service. Au même instant, les éditeurs au bureau mettent à jour la version par défaut à l'aide d'ArcGIS. Les modifications apportées par les éditeurs sont ensuite activées et ajustées si nécessaire. Une fois l'évaluation terminée, la version WFS est réconciliée avec la version par défaut. A ce stade, les clients WFS peuvent visualiser les dernières mises à jour apportées par les éditeurs.
Services WFS transactionnels
Un service WFS transactionnel (parfois nommé WFS-T) permet aux éditeurs WFS de modifier les données dans la base de données source par l'intermédiaire du service WFS. Pour appliquer des changements via WFS-T, les données doivent provenir d'une géodatabase d’entreprise, de groupe de travail et de bureau. Les transactions peuvent être activées sur les services comprenant des données versionnées, des données non versionnées ou les deux. Si vous utilisez des données versionnées, il est également recommandé de publier le service à partir d'une version autre que la version par défaut.
Pour connaître la procédure détaillée de création d'un service WFS transactionnel, reportez-vous à la rubrique Didacticiel : Publication d'un service WFS-T.
Une fois les transactions activées, les clients WFS peuvent appliquer des modifications à la géodatabase à l'aide des méthodes WFS transactionnelles. Voici un exemple de la manière d'appliquer les modifications :
- le client WFS se connecte au service WFS publié avec les transactions activées,
- les entités et les lignes modifiées sont verrouillées sur le serveur (à l'aide de la méthode WFS GetFeatureWithLock, par exemple),
- les modifications sont effectuées à l'aide d'un éditeur WFS sur le client WFS,
- les modifications sont ensuite appliquées sur le serveur (à l'aide de la méthode WFS Transaction, par exemple).
Une fois les modifications réinjectées, le verrouillage est désactivé et les entités peuvent être modifiées par d'autres éditeurs WFS. Le verrouillage peut également être désactivé s'il arrive à expiration. Par défaut, le verrouillage expire après cinq minutes. Vous pouvez modifier ce paramètre en précisant un délai d'expiration en minutes à l'aide de la méthode GetFeatureWithLock. Un administrateur peut définir un délai d'expiration par défaut en modifiant manuellement une configuration et en définissant l'élément DefaultLockExpiration (temps en minutes).
Lorsqu'un client demande un verrouillage à l'aide de la méthode GetFeatureWithLock, un ensemble d'entités verrouillées et un lockID lui sont renvoyés. Si certaines des entités demandées ne peuvent pas être verrouillées, la demande échoue et le client devra rappeler la méthode GetFeatureWithLock. Tant que le verrouillage n'est pas désactivé, les autres clients ne peuvent pas demander le verrouillage de ces entités.
Les transactions d'insertion uniquement ne nécessitent pas le verrouillage des entités. Les entités existantes n'étant pas modifiées (mises à jour ou supprimées), il n'est pas nécessaire d'invoquer la méthode GetFeatureWithLock. Toutes les requêtes de transaction avec mises à jour ou suppressions doivent être accompagnées d'un attribut lockID.
Lorsque les modifications sont réinjectées par l'intermédiaire du service WFS-T, elles s'appliquent à la version publiée (avec les données versionnées) ou aux tables métier (avec les données non versionnées). Les sections ci-après traitent des principales différences de workflow à prendre en compte lors de l'utilisation de données versionnées ou non versionnées.
Remarque :
GetFeatureWithLock n'est pris en charge que pour des services de géodonnées WFS dans ArcGIS Server10.5
Services WFS-T et données versionnées
Le versionnement vous permet de présenter votre géodatabase aux éditeurs WFS et non WFS et de fusionner de manière efficace les modifications apportées par les deux groupes avec détection complète des conflits. Pour fusionner les modifications, vous pouvez réconcilier et réinjecter la version WFS-T publiée avec son parent. Si des verrouillages sont toujours actifs, la réconciliation et la réinjection échouent. Cette protection vise à éviter les conflits entre des entités verrouillées par un client WFS-T et des entités modifiées par le processus de réconciliation et de réinjection. En outre, la réconciliation et la réinjection verrouillent la version publiée, bloquant ainsi les appels GetFeatureWithLock et Transaction durant le processus. Pour plus d'informations sur l'utilisation des données versionnées, reportez-vous à la rubrique Présentation rapide du versionnement.
Les verrouillages d'entités sont gérés sur le serveur au moyen d'une table de verrouillage. Cette table est créée lorsque les transactions sont activées et s'affiche sous forme d'une table ordinaire dans la géodatabase. La table est nommée selon la convention VERSION_<versionID>_ROW_LOCKS. Afin d'éviter le blocage des réconciliations et réinjections, les administrateurs peuvent supprimer les verrouillages restants en supprimant directement les lignes de la table avant d'invoquer les méthodes de réconciliation et réinjection.
Il n'est pas recommandé de modifier la version WFS-T publiée à l'aide d'ArcGIS. En effet, un éditeur ArcGIS n'étant pas informé des verrouillages d'entités, il est par conséquent susceptible de modifier des entités verrouillées. Dans ce cas, les modifications apportées dans ArcGIS risquent d'engendrer des conflits qui vont empêcher le client WFS-T de charger ses modifications. La création et la modification des versions enfants de la version publiée peuvent provoquer des problèmes semblables, si les modifications sont réconciliées et réinjectées dans la version publiée.
Plusieurs services WFS-T peuvent faire référence à la même version publiée, puisque qu'ils partagent tous la même table de verrouillage. Il existe une relation individuelle entre la version publiée et sa table de verrouillage.
Si vous désactivez des transactions ou supprimez le service WFS, la table de verrouillage n'est pas automatiquement supprimée. Lorsqu'il n'existe plus aucun service WFS-T faisant référence à la version, cette table peut être supprimée manuellement.
Services WFS-T et données non versionnées
Si vous publiez des données non versionnées dans un service WFS-T, les modifications s'appliquent directement aux tables métier de la géodatabase. Par conséquent, les modifications validées ne peuvent pas être annulées. Pour plus d'informations sur l'utilisation des données non versionnées, reportez-vous à la rubrique Présentation rapide de l'utilisation de données non versionnées.
Avec les services WFS-T basés sur des données non versionnées, les verrouillages d'entités sont également gérés sur le serveur dans une table de verrouillage, créée lors de l'activation des transactions sur le service. Si vous prévoyez d'autoriser uniquement des clients WFS-T à apporter des modifications par l'intermédiaire du service, le comportement est identique à celui d'un service reposant sur des données versionnées. En revanche, si vous prévoyez de mettre à jour les données publiées dans le service à l'aide d'un client non WFS-T, tel qu'ArcMap, vous devez prendre en compte les points suivants :
- Les éditeurs ArcMap ne peuvent pas détecter les verrouillages d'entités et peuvent par conséquent mettre à jour les entités verrouillées via le service WFS-T.
- Si un éditeur ArcMap met à jour des entités, les clients WFS-T les perçoivent comme verrouillées. Par conséquent, les clients WFS-T ne peuvent ni verrouiller, ni mettre à jour, ni supprimer ces entités tant que l'éditeur ArcMap n'a pas enregistré les mises à jour.
Si vous désactivez des transactions ou supprimez le service WFS, la table de verrouillage n'est pas automatiquement supprimée. Lorsqu'il n'existe plus aucun service WFS-T faisant référence à la version, la table peut être supprimée manuellement.
Remarques supplémentaires
- Lorsque vous activez le suivi d'éditeur sur une classe d'entités, assurez-vous que les modifications sont définies de manière à être enregistrées en heure UTC. Les services WFS-T ne prennent pas en charge l'heure de la base de données comme fuseau horaire pour le suivi des modifications.
- L'utilisateur de SGBD qui permet à ArcGIS Server de se connecter à la géodatabase d’entreprise, de groupe de travail et de bureau doit être autorisé à créer des tables dans le SGBD pour pouvoir utiliser WFS-T.
- ArcGIS Desktop n'est doté d'aucun mécanisme de mise à jour WFS transactionnelle, ce qui signifie que vous devez utiliser un client tiers pour mettre à jour des entités à l'aide de WFS.
- Les classes d'entités qui gèrent les valeurs z ne peuvent pas être modifiées à l'aide de WFS-T.
Vous avez un commentaire à formuler concernant cette rubrique ?