Etiqueta

09 diciembre 2015

Uso de “sockets” seguros con Omnis.

Existen dos formas de hacer que nuestro servidor “Omnis App Server” soporte conexión segura para los clientes, el primero (más extendido) es mediante el uso de un prefijo en el “WebServerURL” que para páginas HTML es el “https://”. Éste modo asegura que el servidor web y sus clientes transfieran la información en modo seguro, durante todo el tiempo que permanezcan conectados. En éste caso no es necesario hacer uso de la propiedad de las “remote task” “$issecure”.

En el segundo método que proponemos, usaremos la propiedad de que disponen las “remote task” denominada “$issecure”. En primer lugar hacer notar, que dicha propiedad pude ser cambia dinámicamente, lo que posibilita su uso sólo cuando realmente sea necesario, como por ejemplo, en el momento de tener que enviar el número de una tarjeta de crédito, para después retornar a su estado anterior o “no seguro”, lo cual permite reducir al mínimo la sobrecarga adicional en la que incurre el uso de los “secure sockets”.

Al contrario de lo que ocurría con el primer método, no existe indicación alguna de que el cliente se este ejecutando en modo seguro, además las diferencias en cuanto los tiempos de conexión segura y “no segura” (al usarse de modo dinámico) son apenas apreciables. De modo que el navegador Web puede mostrar un estado de “no seguro”, pero internamente el cliente estar ejecutándose en modo seguro.

La propiedad indicada puede ser cambiada mediante el comando siguiente:

Do $ctask.$issecure.$assign(kTrue)

Como se trata de una propiedad de la “remote task”, el uso del método “$changeform()” no afectará a su estado.

02 diciembre 2015

jsClient: uso de “assignpdf” y “showpdf”

Desde la publicación de la versión 6 de Omnis Studio, ha sido posible imprimir y visualizar archivos PDF mediante el componente PDFDevice y sus métodos javascript “addignpdf” y “showpdf”. Pero debido a un ajuste de seguridad (publicado en la nota ST/WT/1860) el uso de éstos métodos puede generar un error de tipo “You are not allowed to get the file D:/temp/test.pdf using the getpdf command”. ¿Cómo podemos resolver este problema?

La solución, pasa por realizar un pequeño cambio en su archivo “Config.json” a fin de especificar en él, qué carpetas o directorios deben ser accesibles a la función “GetPDF()”. Éste archivo lo podremos encontrar bajo la carpeta “Studio” dentro del directorio raíz de instalación de Omnis.

Concretamente, deberemos incluir, bajo su sección “Server” algo como lo siguiente:

"getpdfFolders": ["c:\\Temp", "c:\\MyPDFFile"]

Deberemos asegurarnos de que no quede ningún separador de los usados en los nombres de directorios sin ser “escapado” y de que estén encerrados entre comillas dobles. Esto permitirá el uso de los documentos PDF ubicados en las carpetas referenciadas.

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