Flujo de llamada de procesamiento de formularios típico

Los formularios HTML5 almacenan en la caché todos los objetos intermedios necesarios para procesar (representar o enviar) un formulario en la primera solicitud. No almacenan en caché los objetos que dependen de los datos, ya que es probable que estos objetos cambien.

Un formulario móvil mantiene dos niveles diferentes de caché: la caché de procesamiento previo y la caché de procesamiento. La caché de procesamiento previo contiene todos los fragmentos e imágenes de una plantilla resuelta, y la caché de procesamiento contiene el contenido procesado como HTML.

Flujo de trabajo de formularios HTML5

Flujo de trabajo de formularios HTML5

Los formularios HTML5 no almacenan en caché las plantillas a las que les faltan referencias de fragmentos e imágenes. Si los formularios HTML5 tardan más de lo normal en completarse, compruebe en los registros del servidor si faltan referencias y advertencias. Asegúrese también de que no se alcance el tamaño máximo del objeto.

El servicio OSGi de Forms procesa una solicitud en dos pasos:

  • Diseño y generación del estado del formulario inicial: el servicio de procesamiento OSGi de Forms llama al componente Caché de Forms para determinar si el formulario ya se ha almacenado en caché y no se ha invalidado. Si el formulario está en la caché y es válido, sirve el HTML generado desde la caché. Si el formulario se invalida, el servicio de procesamiento OSGi de Forms genera el diseño del formulario inicial y el estado de formulario en formato XML. El servicio OSGi de Forms transforma este XML en el diseño HTML y el estado de formulario JSON inicial en la caché para las solicitudes posteriores.
  • Formularios cumplimentados previamente: durante el procesamiento, si un usuario solicita formularios con datos previamente cumplimentados, el servicio de procesamiento OSGi de Forms llama al contenedor del servicio Forms y genera un nuevo estado de formulario con datos combinados. Sin embargo, como el diseño ya se ha generado en el paso anterior, esta llamada es más rápida que la primera. Esta llamada realiza únicamente la combinación de datos y ejecuta los scripts en los datos.

Si hay alguna actualización en el formulario o en cualquiera de los recursos utilizados en el formulario, el componente Caché de Forms lo detecta, y la caché de ese formulario en particular se invalida. Una vez que el servicio OSGi de Forms termina de procesarse, el jsp del procesador de perfiles agrega referencias de biblioteca JavaScript y estilo a este formulario y devuelve la respuesta al cliente. En este punto, es posible usar un servidor web típico como Apache con compresión de HTML activada. Un servidor web reduciría significativamente el tamaño de respuesta, el tráfico de red y el tiempo necesario para transmitir los datos entre el servidor y el equipo cliente.

Cuando un usuario envía el formulario, el explorador envía el estado de formulario en formato JSON al proxy del servicio de envío; a continuación, este genera un XML de datos utilizando datos JSON y envía ese XML de datos para enviar el extremo.

Componentes

Se necesita el paquete de complementos de AEM Forms para habilitar los formularios HTML5. Para obtener más información sobre la instalación del paquete de complementos de AEM Forms, consulte Instalación y configuración de AEM Forms.

Componentes OSGi (adobe-lc-forms-core.jar)

Procesador de formularios XFA de Adobe (com.adobe.livecycle.adobe-lc-forms-core) es el nombre para mostrar del paquete OSGi de formularios HTML5 cuando se ve desde la vista Paquete de la Consola de administración Felix (https://[host]:[port]/system/console/bundles).

Este componente contiene componentes OSGi para las opciones de procesamiento, administración de caché y configuración.

Servicio OSGi de Forms

Este servicio OSGi contiene la lógica para procesar un XDP como HTML y administra el envío de un formulario para generar el XML de datos. Este servicio utiliza el contenedor del servicio Forms. El contenedor del servicio Forms llama internamente al componente nativo XMLFormService.exe, que realiza el procesamiento.

Si se recibe una solicitud de procesamiento, este componente llama al contenedor del servicio Forms para generar la información de estado y diseño que se procesa más adelante para generar estados DOM de formulario HTML y JSON.

Este componente también es responsable de la generación del XML de datos desde el estado de formulario JSON enviado.

Componente Caché

Los formularios de HTML5 utilizan el almacenamiento en caché para optimizar el rendimiento y el tiempo de respuesta. Puede configurar el nivel del servicio de caché para ajustar el equilibrio entre rendimiento y utilización del espacio.

Estrategia de cachéDescripción
NingunoNo almacenar en caché los artefactos
ConservadoraAlmacenar en caché solo los artefactos intermedios que se generan antes del procesamiento del formulario, como la plantilla que contiene fragmentos e imágenes en línea
AgresivaAlmacenar en caché el contenido HTML procesado
Almacene en caché todos los artefactos almacenados en caché en el nivel conservador.
Nota: Esta estrategia ofrece el mejor rendimiento, pero consume más memoria para almacenar los artefactos en caché.

Los formularios HTML5 realizan el almacenamiento en caché en memoria utilizando la estrategia de LRU. Si la estrategia de caché se establece en Ninguna, no se creará la caché, y los datos de caché existentes, si los hay, se borrarán. Además de la estrategia de almacenamiento en caché, también puede configurar el tamaño total de la caché en memoria, lo que puede resultar útil para establecer el límite máximo del tamaño de la caché y, si se sobrepasa, se utilizará el modo LRU para liberar recursos de caché.

NOTA
La caché en memoria no se comparte entre nodos de clúster.

Servicio de configuración

El servicio de configuración permite ajustar los parámetros de configuración y la configuración de caché de los formularios HTML5.

Para actualizar esta configuración, vaya a la Consola de administración Felix CQ (disponible en https://<'[server]:[port]'/system/console/configMgr) y busque y seleccione Configuración de Mobile Forms.

Puede configurar el tamaño de la caché o deshabilitar la caché mediante el servicio de configuración. También puede habilitar la depuración con el parámetro Opciones de depuración. Encontrará más información sobre la depuración de formularios en Depuración de formularios HTML5.

Componentes de tiempo de ejecución (adobe-lc-forms-runtime-pkg.zip)

El paquete Runtime contiene las bibliotecas del lado del cliente que se utilizan para procesar formularios HTML.

Componentes importantes disponibles como parte del paquete Runtime:

Motor de scripts

La implementación de Adobe XFA admite dos tipos de lenguajes de scripts para permitir la ejecución de lógica definida por el usuario en formularios: JavaScript y FormCalc.

El motor de scripts de los formularios HTML se escribe en JavaScript para admitir la API de scripts XFA en ambos lenguajes.

En el momento del procesamiento, el script de FormCalc se traduce (y se almacena en caché) en JavaScript en el servidor de forma transparente para el usuario o el diseñador.

Este motor de scripts utiliza algunas funciones de ECMAScript5, como Object.defineProperty. El motor/biblioteca se entrega como una biblioteca de cliente de CQ con el nombre de categoría xfaforms.profile. También proporciona la API de FormBridge para permitir que los portales o las aplicaciones externas interactúen con el formulario. Con FormBridge, una aplicación externa puede ocultar mediante programación ciertos elementos, obtener o establecer sus valores o cambiar sus atributos.

Para obtener más información, consulte el artículo Form Bridge.

Motor de diseño

La presentación y el aspecto visual de los formularios HTML5 se basan en las funciones de SVG 1.1, jQuery, BackBone y CSS3. El aspecto inicial de un formulario se genera y se almacena en caché en el servidor. La modificación de ese diseño inicial y cualquier cambio adicional en el diseño del formulario se administran en el cliente. Para ello, el paquete Runtime contiene un motor de diseño escrito en JavaScript y basado en jQuery/Backbone. Este motor administra todo el comportamiento dinámico, como Añadir/Eliminar instancias repetibles o el diseño de objetos acumulables. Este motor de diseño procesa una página de formulario cada vez. Al principio, el usuario solo ve una página, y la barra de desplazamiento horizontal corresponde únicamente a la primera página. Sin embargo, cuando un usuario se desplaza hacia abajo, comienza a procesarse la siguiente página. Esta representación página por página reduce el tiempo necesario para procesar la primera página en un explorador y mejora el rendimiento percibido del formulario. Este motor/biblioteca es parte de una biblioteca de cliente de CQ con el nombre de categoría xfaforms.profile.

El motor de diseño también contiene un conjunto de widgets utilizados para capturar el valor de los campos de formulario de un usuario. Estos widgets están modelados como widgets de la interfaz de usuario de jQuery que implementan ciertos contratos adicionales para funcionar sin problemas con el motor de diseño.

Para obtener más información sobre los widgets y los contratos correspondientes, consulte Widgets personalizados para formularios HTML5.

Estilo

El estilo asociado con los elementos de HTML se añade en línea o en función del bloque CSS integrado. Algunos estilos comunes que no dependen del formulario forman parte de la biblioteca de cliente de CQ con el nombre de categoría xfaforms.profile.

Además de las propiedades de estilo predeterminadas, cada elemento de formulario también contiene ciertas clases CSS basadas en el tipo de elemento, el nombre y otras propiedades. Estas clases permiten restaurar los elementos especificando su propio código CSS.

Para obtener más información sobre el estilo y las clases predeterminados, consulte Introducción a los estilos.

Script del lado del servidor y servicios web

Todos los scripts que marcados para ejecutarse en el servidor o para llamar a un servicio web (independientemente de dónde estén marcados para ejecutarse) se ejecutan siempre en el servidor.

El motor de scripts de cliente:

  1. Realiza una llamada sincrónica al servidor que pasa el estado de formulario actual en forma de JSON.
  2. Ejecuta el script o el servicio web en el servidor.
  3. Genera un nuevo estado JSON.
  4. Combina el nuevo estado JSON en el cliente cuando se devuelve la respuesta.

Paquetes de recursos de localización

Los formularios HTML5 admiten los idiomas italiano (it), español (es), portugués brasileño (pt_BR), chino simplificado (zh_CN), chino tradicional (solo soporte limitado) (zh_TW), coreano (ko_KR), inglés (en_US), francés (fr_FR), alemán (de_DE) y japonés (ja). En función de la configuración regional recibida en el encabezado de la solicitud, se envía el paquete de recursos correspondiente al cliente. Este paquete de recursos se agrega al JSP del perfil como una biblioteca de cliente de CQ con el nombre de categoría xfaforms.I18N. Puede anular la lógica de selección del paquete de configuración regional en el perfil.