Etiqueta

25 noviembre 2015

Cómo cancelar un proceso desde un “remote form”.

En éste artículo describimos como implementar un botón “Cancelar” en un “remote form” que permita al usuario cancelar o abortar un proceso que está ejecutándose en el servidor Omnis. Haremos uso de la propiedad “$alwaysenabledobject”.

Normalmente, y siempre que desde un “remote form” ordenamos la ejecución de un proceso en el servidor, mostramos un mensaje de “Trabajando…” al cliente, mientras todos los controles del “remote form” permanecen desactivados hasta completarse la tarea y el servidor vuelva a responder, momento, en el que todos los objetos del “remote form” son de nuevo habilitados. Habitualmente, hacemos esto con el fin de controlar la cola de procesos en ejecución sobre el servidor para ese cliente.

Sin embargo, podemos optar por implementar un botón “Cancelar” el cual permanezca siempre activo, con el fin de permitir al usuario cancelar un proceso activo en el servidor, mediante simplemente hacer clic. Para conseguir que un botón permanezca en estado de “siempre activado”, disponemos de una propiedad disponible para los botones, denominada “$alwaysenabledobject”. Dicha propiedad permite que incluso, cuando se ha iniciado la ejecución de un proceso de larga duración sobre el servidor, el usuario pueda optar por cancelar el proceso, liberando al servidor.

Por ejemplo, imaginemos que vamos a enviar una lista amplia documentos al servidor, el esquema de implantación para éste proceso,  podría ser el siguiente.
  1. El usuario inicia el proceso 
  2. for x = 1 to findocumentos
  3.   enviar documento al servidor y esperar respuesta
  4.   documento siguiente 
  5. end for


Disponer de un botón “Cancelar” en modo “siempre activado” nos permitiría introducir una modificación en el esquema anterior, que permita la cancelación del bucle, tal como sigue:
  1. El usuario inicia el proceso
  2. for x = 1 to findocumentos
  3.   si se ha pulsado el botón “Cancelar” detener el bucle
  4.   enviar documento al servidor y esperar respuesta
  5.   documento siguiente
  6. end for

No hay comentarios: