Edición Web con servicios WFS
En este tema
Cuando publique un mapa o un servicio de geodatos con el recurso WFS habilitado, se puede acceder a los datos a través de clientes WFS compatibles con OGC. Estos clientes WFS también pueden ver los últimos cambios realizados en los datos.
Cuando una solicitud procede de un cliente WFS, como por ejemplo un visor, los datos se devuelven como si existieran en la fuente de datos en ese momento. Por ejemplo, suponga que tiene un documento de mapa que contiene una clase de entidad. Dicha clase de entidad procede de una geodatabase de archivos. Después, publica ese documento de mapa como un servicio de mapas y habilita el recurso WFS. Los clientes que tengan un visor WFS podrán acceder a los datos de la clase de entidad mediante la dirección URL de WFS proporcionada por el servicio de mapas.
Ahora suponga que otro usuario accede a la geodatabase de archivos de origen y agrega, actualiza y elimina entidades en la clase de entidad. La próxima vez el cliente con el visor WFS se actualiza los datos con las ediciones más recientes es lo que se muestra.
Cuando la fuente de datos es una geodatabase de geodatabase corporativa, de grupo de trabajo o de escritorio, los servicios de geodatos y los servicios de mapas publican los datos procedentes de una versión específica. Si los datos se editan en esa versión, tanto los clientes WFS como los no WFS podrán ver los cambios realizados. Sin embargo, si las ediciones se hacen en otras versiones, los clientes no verán los cambios hasta que éstos se concilien con la versión publicada.
Esto significa que tendrá un mayor control sobre los datos expuestos a través de sus servicios. Suponga que publica datos con el recurso WFS desde una versión llamada WFS. Por un lado, los clientes que tienen visores WFS empiezan a acceder a los datos a través de su servicio. Mientras que por otro, los editores de la oficina utilizan ArcGIS para actualizar la versión predeterminada. A continuación, los cambios realizados por los editores se revisan y se ajustan si es necesario. Después de completar la evaluación, la versión WFS se concilia con la versión predeterminada. Y llegados a este punto, es ahora cuando los clientes WFS podrán ver las últimas actualizaciones realizadas por los editores.
Servicios WFS transaccionales
Un servicio WFS transaccional (conocido algunas veces como WFS-T) permite a los editores de WFS aplicar los cambios en los datos de la base de datos de origen a través del servicio WFS. Para aplicar los cambios a través de WFS-T, los datos deben proceder de una geodatabase de geodatabase corporativa, de grupo de trabajo o de escritorio. Las transacciones se pueden habilitar en los servicios que tienen datos versionados, datos no versionados o una combinación de ambos. Si selecciona utilizar los datos versionados también se recomienda que publique el servicio desde una versión no predeterminada.
Para instrucciones sobre cómo crear un servicio WFS transaccional, consulte el Tutorial: Publicar un servicio WFS-T.
Después de habilitar las transacciones, los clientes WFS pueden aplicar los cambios a la geodatabase utilizando métodos WFS transaccionales. A continuación, se muestra un ejemplo de cómo se pueden aplicar los cambios:
- El cliente WFS conecta con el servicio WFS que se ha publicado con las transacciones habilitadas.
- Las entidades editadas y las filas se bloquean en el servidor (esto se puede hacer con el método WFS GetFeatureWithLock).
- Las ediciones se realizan con un editor de WFS en el cliente WFS.
- Dichas ediciones se aplican al servidor (esto se puede llevar a cabo con el método WFS de Transacción).
Cuando se envían las ediciones, los bloqueos se liberan y otros editores de WFS pueden editar las entidades. Los bloqueos también se liberan al expirar. Por defecto, los bloqueos expirarán a los cinco minutos, pero esto se puede ajustar especificando un tiempo de espera en minutos utilizando el método GetFeatureWithLock. El administrador puede establecer el tiempo de espera predeterminada editando manualmente la configuración y estableciendo el elemento DefaultLockExpiration (tiempo en minutos).
Cuando un cliente solicita un bloqueo con GetFeatureWithLock, se devuelve un conjunto de entidades con las entidades bloqueadas y un Id. de bloqueo. Si no se puede bloquear alguna de las entidades, la solicitud falla y el cliente tendrá que volver a inicializar GetFeatureWithLock. De este modo, hasta que no se liberen los bloqueos, se evitará que otros clientes adquieran bloqueos en estas entidades.
Para realizar transacciones de solo inserción no es necesario que las entidades estén bloqueadas. Además, si no se están modificando (ni actualizando o eliminando) las entidades existentes no es necesario inicializar GetFeatureWithLock. Cualquier solicitud de transacción con actualizaciones o eliminaciones debe tener un Id. de bloqueo.
Cuando se envían los cambios a través de WFS-T, se aplican en la versión publicada (con los datos versionados) o en las tablas de negocio (con datos no versionados). Las siguientes secciones tratan las diferencias importantes de flujos de trabajo que se han de tener en cuenta cuando se trabaja con datos versionados o no versionados.
Servicios WFS-T y datos versionados
La potencia del versionado permite mostrar la geodatabase tanto a los editores WFS como a los no WFS y fusionar de manera eficaz las ediciones realizadas por los dos grupos, incluida la detección total de los conflictos. Para fusionar las ediciones, puede conciliar y enviar la versión WFS-T publicada con su versión principal. Si hay bloqueos importantes, el sistema no permitirá que ni la conciliación ni el envío se realicen correctamente. De este modo, se evitan los conflictos entre las entidades bloqueadas por clientes WFS-T y los cambios en las entidades debido al proceso de conciliación y envío. Además, conciliar y publicar los bloqueos la versión publicada, evitando que GetFeatureWithLock y Transacción se inicialicen durante ese proceso. Para obtener más información acerca de trabajar con datos versionados, consulte Un recorrido rápido por las versiones.
Los bloqueos de entidad se mantienen en el servidor por medio de una tabla de bloqueos. La tabla de bloqueos se crea cuando se habilitan las transacciones y aparece como una tabla habitual de la geodatabase. El nombre de la tabla se crea siguiendo la convención VERSION_<versionID>_ROW_LOCKS. Para evitar que el proceso de conciliar y enviar se bloquee, los administradores podrán eliminar los bloqueos importantes eliminando directamente las filas de la tabla de bloqueos antes de inicializar el proceso de conciliar y enviar.
La versión WFS-T publicada no deberá editarse con ArcGIS. El editor de ArcGIS no tiene en cuenta los bloqueos de entidad y, por tanto, se pueden editar las entidades bloqueadas. En ese caso, las ediciones realizadas en ArcGIS pueden entrar en conflicto e impedir que el cliente WFS-T pueda cargar los cambios. Crear y editar versiones secundarias de la versión publicada también podría causar problemas similares si los cambios se concilian y se envían a la versión publicada.
Diversos servicios WFS-T pueden hacer referencia a la misma versión publicada, dado que todos ellos comparten la misma tabla de bloqueos. Existe una asociación uno a uno entre la versión publicada y su tabla de bloqueos.
Si deshabilita transacciones o elimina el servicio WFS, la tabla de bloqueos no se borrará automáticamente. Cuando no haya servicios WFS-T haciendo referencia a la versión, podrá eliminar la tabla manualmente.
Servicios WFS-T y datos no versionados
Si publica datos no versionados en un servicio WFS-T las ediciones se aplican directamente a las tablas de negocio de la geodatabase de forma que, una vez se han realizado las ediciones, no se pueden deshacer. Para obtener más información acerca de trabajar con datos no versionados, consulte Un recorrido rápido por el trabajo con datos no versionados.
Con los servicios WFS-T basados en datos no versionados, los bloqueos de entidad también se mantienen en el servidor en una tabla de bloqueos que se crea cuando se habilitan las transacciones en el servicio. Si únicamente tiene previsto que los clientes WFS-T realicen las ediciones a través del servicio, el comportamiento será el mismo que el servicio basado en datos versionados. Sin embargo, si desea editar los datos publicados en el servicio con un cliente no de WFS-T, como ArcMap, hay algunas cosas importantes que debe recordar:
- Los editores de ArcMap no tienen en cuenta los bloqueos de entidad y, como resultado, las entidades bloqueadas a través del servicio WFS-T se pueden editar.
- Si un editor de ArcMap edita las entidades, aparecerán bloqueadas para los clientes WFS-T. Como resultado, los clientes WFS-T no pueden bloquear, actualizar o eliminar dichas entidades hasta que el editor de ArcMap guarde las ediciones.
Si deshabilita transacciones o elimina el servicio WFS, la tabla de bloqueos no se borrará automáticamente. Cuando no haya servicios WFS-T haciendo referencia a la versión, podrá eliminar la tabla manualmente.
Notas adicionales
- Cuando habilite el rastreo del editor en una clase de entidad, asegúrese de que las ediciones estén definidas para registrarse en UTC. Los servicios WFS-T no admiten la hora de la base de datos como zona horaria para el rastreo de ediciones.
- El usuario DBMS que utiliza ArcGIS Server para conectarse a la geodatabase de geodatabase corporativa, de grupo de trabajo o de escritorio debe disponer de permisos para crear tablas en la DBMS con el fin de poder utilizar WFS-T correctamente.
- ArcGIS for Desktop no tiene ningún mecanismo para la edición de WFS transaccional, lo que significa que debe utilizar otro cliente para editar las entidades con WFS.
- Las clases de entidad que son sensibles a valores z no se pueden editar con WFS-T.