Etiqueta

11 septiembre 2017

Gestión de licencias del Servidor de Aplicaciones Omnis versión 8.1 y Web Service

Desde la versión 8.1, las conexiones hacia el Servidor de Aplicaciones Omnis (mediante jsClient) realizadas desde un mismo navegador del cliente, ahora cuentan como un solo uso de licencia para el servidor. Anteriormente se contaba cada conexión como usuarios independientes, lo que incluía el consumo adicional de licencias de servidor.

La tecnología "jsClient" ahora genera automáticamente un UUID de identificación, el cual guardará como una cookie (denominada OMNISCLIENTID) y que se enviará como parámetro con cada conexión. La cookie caducará tras un año, generando entonces un nuevo UUID. Las cookies deben estar habilitadas tanto en el servidor web, como en cualquier cliente que desee conectarse, para que esto funcione.

En cuanto al uso de la extensión "Web Services", mencionar que ya no necesitamos un número de serie para hacer uso de servicios web basados en REST, no obstante recuerde que si hacemos uso del objeto "HTTPClientWorker" para generar un cliente de Servicios Web (WSDL), necesitaremos instalar y configurar Java (no será necesario con los nuevos objetos de OW3 CURL).

Componentes JSON&JS (Parte 3 de 12)

Propiedades


Para establecer las propiedades del control, disponemos de los apartados siguientes:

  • Flags
Permiten indicar que eventos estarán o no habilitados, si el control tendrá fondo transparente, si se permite la capacidad de arrastrar-soltar y otros por el estilo.

  • Standard properties
Tabla de propiedades estándar soportadas por el control además de las básicas, tales como su nombre.

  • Properties
Permite la definición de un objeto con las propiedades específicas del control; La columna nombre, (name) determina cada uno de los miembros del "object-properties" es el nombre de la propiedad, la cual deberá escribirse sin el símbolo "$". El resto de las columnas determinarán cada aspecto de la propiedad.

  • Multivalue properties
Permite configurar posibles valores (múltiples valores) para las propiedades que así lo requieran.

  • Constants
Permite la definición de un objeto con las constantes que tendremos disponibles para su uso con el control. (Name, Value y Desc) 

  • Events
Permite definir que eventos generará el control (además de los especificados en el grupo "Flags") e incluye eventos estándar como "evClick"; Note que sus nombres incluyen el prefijo "ev" 

  •  Methods
Permite indicar los nombres de los métodos de tipo "client-executed" (ejecución del lado del cliente) proporcionados por el control; El nombre del método deberá incluir el prefijo "$".

  •  Html
Permite indicar cómo deberá generarse el HTML que enviará el control al cliente.

La opción "Save" creará el archivo JSON del control sobre la carpeta "html/controls". La opción "Build" creará el archivo JavaScript correspondiente al control, sobre la carpeta "html/scripts" (localizable sobre el directorio raíz de instalación Omnis). También se le preguntará sobre la idónea inclusión de una referencia al archivo JavaScript del control, en el archivo "jsctempl.htm", lo cual garantizará que el control esté disponible para probarlo con cualquier formulario remoto que pueda contenerlo.

Tras la creación de cualquier control JSON, deberá reiniciarse Omnis, a fin de que esté disponible para su uso. Después del reinicio, el control aparecerá sobre la pestaña "JSON Components" del "Component Store" listo para ser usado. Para su entrega con la aplicación final, deberá colocar los archivos JSON y JavaScript sobre las carpetas correspondientes del servidor Web y verificar que se esté haciendo referencia al mismo, desde la página html, encargada de cargar el formulario remoto.







05 septiembre 2017

Indicador de carga personalizado (comando "showloadingoverlay")

Desde la versión Omnis Studio 8.0.2 en adelante es posible agregar un indicador de carga (imagen animada) sobre un determinado componente o bien cubriendo el entero formulario remoto, ésto es posible gracias a un nuevo "clientcommand", denominado "showloadingoverlay".

Esto es realmente útil, pues nos permite mostrar al usuario un indicador de que se está la espera de la conclusión de un proceso largo, hasta que la información deseada aparezca actualizada para ese componente o formulario, al mismo tiempo que se evita posibles acciones del usuario sobre los elementos mostrados en el mismo. Resultará especialmente útil si están realizando operaciones asíncronas, como cargar una lista con valores desde un acceso SQL. Cómo ya sabemos, los llamados comandos-cliente, tales como "showloadingoverlay", deben ser ejecutados mediante el método "$clientcommand", del siguiente modo:

Do $cinst.$clientcommand("showloadingoverlay",rowvariable)

Donde "rowvariable" es "row(show,controlName,message,cssClass)".

  • show
Valor booleano "kTrue" indica que deberá mostrarse, "kFalse" para ocultarlo.

  • controlName
Es el la propiedad "$nombre" del componente en el formulario, sobre el que se deberá mostrar o eliminar el indicador. Dejar éste parámetro vacío, causará que el indicador se muestre sobre el entero formulario. 

  • message
(Opcional) Texto para mostrar junto con el indicador.

  • cssClass
(Opcional) Clase CSS para aplicar al indicador. Nos permite personalizar su apariencia.
De forma predeterminada, el indicador oscurecerá lo que haya detrás, mostrando una animación, junto con el texto (opcional) incluido. Si desea personalizar su apariencia, puede hacerlo mediante el uso de CSS. Cree una clase CSS sobre el archivo "user.css" y pase su nombre de clase como parámetro cssClass.

El indicador de carga estará contenido en un "div" de tipo "toplevel", a la que se le asignará el nombre de su clase CSS. Este div tiene como nombre de clase "indicator", la clase CSS tiene el nombre "container", además de un elemento "p" con "message" como nombre de clase . Son los nombres que deberemos usar al aplicar los estilos CSS.

La clase "omnisLoadingOverlay" contenida en el fichero "omnis.css" puede servirnos como base.