Calcular datos de formulario calculating-form-data
El servicio Forms puede calcular los valores que introduce un usuario en un formulario y mostrar los resultados. Para calcular los datos de formulario, debe realizar dos tareas. En primer lugar, se crea una secuencia de comandos de diseño de formulario que calcula los datos del formulario. Un diseño de formulario admite tres tipos de secuencias de comandos. Se ejecuta un tipo de script en el cliente, otro en el servidor y el tercer tipo se ejecuta tanto en el servidor como en el cliente. El tipo de script analizado en este tema se ejecuta en el servidor. Los cálculos del lado del servidor son compatibles con transformaciones de HTML, PDF y Guía de formulario (obsoletos).
Como parte del proceso de diseño de formularios, puede utilizar cálculos y secuencias de comandos para proporcionar una experiencia de usuario más rica. Los cálculos y las secuencias de comandos se pueden agregar a la mayoría de los objetos y campos de formulario. Debe crear una secuencia de comandos de diseño de formulario para realizar operaciones de cálculo en los datos que introduce un usuario en un formulario interactivo.
El usuario introduce valores en el formulario y hace clic en el botón Calcular para ver los resultados. El siguiente proceso describe una aplicación de ejemplo que permite al usuario calcular datos:
- El usuario accede a una página HTML denominada StartLoan.html que actúa como página de inicio de la aplicación web. Esta página invoca un servlet Java llamado
GetLoanForm. - La variable
GetLoanFormservlet procesa un formulario de préstamo. Este formulario contiene una secuencia de comandos, campos interactivos, un botón de cálculo y un botón de envío. - El usuario introduce valores en los campos del formulario y hace clic en el botón Calcular . El formulario se envía al
CalculateDataServlet Java donde se ejecuta la secuencia de comandos. El formulario se devuelve al usuario con los resultados de cálculo mostrados en el formulario. - El usuario continúa introduciendo y calculando valores hasta que se muestra un resultado satisfactorio. Cuando esté satisfecho, el usuario hace clic en el botón Enviar para procesar el formulario. El formulario se envía a otro servlet Java llamado
ProcessFormque es responsable de recuperar los datos enviados. (Consulte Gestión de Forms enviado.)
El diagrama siguiente muestra el flujo lógico de la aplicación.
En la tabla siguiente se describen los pasos de este diagrama.
GetLoanForm El servlet Java se invoca desde la página de inicio del HTML.GetLoanForm Java Servlet utiliza la API de cliente de servicio de Forms para procesar el formulario de préstamo en el explorador web del cliente. La diferencia entre procesar un formulario que contiene una secuencia de comandos configurada para ejecutarse en el servidor y procesar un formulario que no contiene una secuencia de comandos es que debe especificar la ubicación de destino utilizada para ejecutar la secuencia de comandos. Si no se especifica una ubicación de destino, no se ejecuta una secuencia de comandos configurada para ejecutarse en el servidor. Por ejemplo, considere la aplicación introducida en esta sección. La variable CalculateData El Servlet Java es la ubicación de destino en la que se ejecuta el script.CalculateData Servlet Java, donde se ejecuta la secuencia de comandos.ProcessForm.Normalmente, un formulario enviado como contenido de PDF contiene secuencias de comandos que se ejecutan en el cliente. Sin embargo, también se pueden ejecutar cálculos del lado del servidor. No se puede utilizar un botón Enviar para calcular secuencias de comandos. En este caso, los cálculos no se ejecutan porque el servicio de Forms considera que la interacción ha finalizado.
Para ilustrar el uso de una secuencia de comandos de diseño de formulario, en esta sección se examina un formulario interactivo sencillo que contiene una secuencia de comandos configurada para ejecutarse en el servidor. El diagrama siguiente muestra un diseño de formulario que contiene una secuencia de comandos que agrega valores que el usuario introduce en los dos primeros campos y muestra el resultado en el tercer campo.
A. Campo denominado Campo numérico1 B. Campo denominado NumericField2 C. Campo denominado NumericField3
La sintaxis de la secuencia de comandos ubicada en este diseño de formulario es la siguiente:
NumericField3 = NumericField2 + NumericField1
En este diseño de formulario, el botón Calcular es un botón de comando y la secuencia de comandos se encuentra en el Click evento. Cuando un usuario introduce valores en los dos primeros campos (NumericField1 y NumericField2) y hace clic en el botón Calcular, el formulario se envía al servicio Forms, donde se ejecuta la secuencia de comandos. El servicio Forms vuelve a procesar el formulario en el dispositivo cliente con los resultados del cálculo mostrados en el campo NumericField3 .
Resumen de los pasos summary-of-steps
Para calcular los datos de formulario, realice las tareas siguientes:
- Incluir archivos de proyecto.
- Cree un objeto de API de cliente de Forms.
- Recupere un formulario que contenga una secuencia de comandos de cálculo.
- Vuelva a escribir el flujo de datos del formulario en el explorador web del cliente
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Creación de un objeto de API de cliente de Forms
Para poder realizar mediante programación una operación de API de cliente de servicio de Forms, debe crear un cliente de servicio de Forms. Si utiliza la API de Java, cree un FormsServiceClient objeto. Si utiliza la API del servicio web de Forms, cree un FormsServiceService objeto.
Recuperar un formulario que contenga una secuencia de comandos de cálculo
La API de cliente del servicio Forms se utiliza para crear una lógica de aplicación que gestione un formulario que contenga una secuencia de comandos configurada para ejecutarse en el servidor. El proceso es similar a la gestión de un formulario enviado. (Consulte Gestión de Forms enviado.)
Compruebe que el estado de procesamiento asociado al formulario enviado sea 1 (Calculate), lo que significa que el servicio de Forms está realizando una operación de cálculo en los datos del formulario y que los resultados deben devolverse al usuario. En este caso, se ejecuta automáticamente una secuencia de comandos configurada para ejecutarse en el servidor.
Vuelva a escribir el flujo de datos del formulario en el explorador web del cliente
Después de comprobar que el estado de procesamiento asociado a un formulario enviado es 1, debe volver a escribir los resultados en el explorador web del cliente. Cuando se muestra el formulario, el valor calculado aparece en los campos correspondientes.
Consulte también
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Inicio rápido de la API del servicio de Forms
Procesar formularios PDF interactivos
Creación de aplicaciones web que procesen Forms
Calcular los datos de formulario mediante la API de Java calculate-form-data-using-the-java-api
Calcule los datos del formulario utilizando la API de Forms (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-forms-client.jar en la ruta de clase de su proyecto Java.
-
Creación de un objeto de API de cliente de Forms
- Cree un
ServiceClientFactoryobjeto que contiene propiedades de conexión. - Cree un
FormsServiceClientusando su constructor y pasando elServiceClientFactoryobjeto.
- Cree un
-
Recuperar un formulario que contenga una secuencia de comandos de cálculo
-
Para recuperar datos de formulario que contengan una secuencia de comandos de cálculo, cree un
com.adobe.idp.Documentusando su constructor e invocando la variablejavax.servlet.http.HttpServletResponsedel objetogetInputStreamdesde dentro del constructor. -
Invocar el
FormsServiceClientdel objetoprocessFormSubmissiony pase los siguientes valores:- La variable
com.adobe.idp.Documentobjeto que contiene los datos del formulario. - Un valor de cadena que especifica variables de entorno, incluidos todos los encabezados HTTP relevantes. Debe especificar el tipo de contenido que se va a gestionar especificando uno o más valores para la variable
CONTENT_TYPEvariable de entorno. Por ejemplo, para gestionar datos XML y de PDF, especifique el siguiente valor de cadena para este parámetro:CONTENT_TYPE=application/xml&CONTENT_TYPE=application/pdf - Un valor de cadena que especifica la variable
HTTP_USER_AGENTvalor de encabezado; por ejemplo,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322). - A
RenderOptionsSpecque almacena opciones en tiempo de ejecución.
La variable
processFormSubmissionel método devuelve unFormsResultque contiene los resultados del envío del formulario. - La variable
-
Comprobar que el estado de procesamiento asociado a un formulario enviado es
1invocando la variableFormsResultdel objetogetActionmétodo. Si este método devuelve el valor1, se realizó el cálculo y los datos se pueden escribir de nuevo en el explorador web del cliente.
-
-
Vuelva a escribir el flujo de datos del formulario en el explorador web del cliente
- Cree un
javax.servlet.ServletOutputStreamobjeto utilizado para enviar una secuencia de datos de formulario al explorador web del cliente. - Cree un
com.adobe.idp.Documentinvocando el objetoFormsResultobjeto ‘sgetOutputContentmétodo. - Cree un
java.io.InputStreaminvocando el objetocom.adobe.idp.Documentdel objetogetInputStreammétodo. - Cree una matriz de bytes y rellénela con la secuencia de datos del formulario invocando la variable
InputStreamdel objetoready pasando la matriz de bytes como argumento. - Invocar el
javax.servlet.ServletOutputStreamdel objetowritemétodo para enviar la secuencia de datos del formulario al explorador web del cliente. Pase la matriz de bytes a lawritemétodo.
- Cree un
Consulte también
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Calcular los datos de formulario mediante la API de servicio web calculate-form-data-using-the-web-service-api
Calcule los datos del formulario utilizando la API de Forms (servicio web):
-
Incluir archivos de proyecto
- Cree clases de proxy Java que consuman el WSDL del servicio Forms.
- Incluya las clases proxy de Java en la ruta de clase.
-
Creación de un objeto de API de cliente de Forms
Cree un
FormsServicey establezca los valores de autenticación. -
Recuperar un formulario que contenga una secuencia de comandos de cálculo
-
Para recuperar datos de formulario publicados en un servlet Java, cree un
BLOBusando su constructor. -
Cree un
java.io.InputStreamusando la variablejavax.servlet.http.HttpServletResponsedel objetogetInputStreammétodo. -
Cree un
java.io.ByteArrayOutputStreamusando su constructor y pasando la longitud dejava.io.InputStreamobjeto. -
Copie el contenido del
java.io.InputStreamen eljava.io.ByteArrayOutputStreamobjeto. -
Cree una matriz de bytes invocando la variable
java.io.ByteArrayOutputStreamdel objetotoByteArraymétodo. -
Rellene el
BLOBinvocando susetBinaryDatay pasando la matriz de bytes como argumento. -
Cree un
RenderOptionsSpecusando su constructor. Establezca el valor de configuración regional invocando la variableRenderOptionsSpecdel objetosetLocaley pasando un valor de cadena que especifica el valor de configuración regional. -
Invocar el
FormsServiceClientdel objetoprocessFormSubmissiony pase los siguientes valores:- La variable
BLOBobjeto que contiene los datos del formulario. - Un valor de cadena que especifica variables de entorno que incluye todos los encabezados HTTP relevantes. Por ejemplo, puede especificar el siguiente valor de cadena:
HTTP_REFERER=referrer&HTTP_CONNECTION=keep-alive&CONTENT_TYPE=application/xml - Un valor de cadena que especifica la variable
HTTP_USER_AGENTvalor de encabezado; por ejemplo,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322). - A
RenderOptionsSpecque almacena opciones en tiempo de ejecución. Para obtener más información, . - Un vacío
BLOBHolderobjeto que rellena el método . - Un vacío
javax.xml.rpc.holders.StringHolderobjeto que rellena el método . - Un vacío
BLOBHolderobjeto que rellena el método . - Un vacío
BLOBHolderobjeto que rellena el método . - Un vacío
javax.xml.rpc.holders.ShortHolderobjeto que rellena el método . - Un vacío
MyArrayOf_xsd_anyTypeHolderobjeto que rellena el método . Este parámetro se utiliza para almacenar archivos adjuntos enviados junto con el formulario. - Un vacío
FormsResultHolderobjeto que rellena el método con el formulario enviado.
La variable
processFormSubmissionrellena elFormsResultHoldercon los resultados del envío del formulario. La variableprocessFormSubmissionel método devuelve unFormsResultque contiene los resultados del envío del formulario. - La variable
-
Comprobar que el estado de procesamiento asociado a un formulario enviado es
1invocando la variableFormsResultdel objetogetActionmétodo. Si este método devuelve el valor1, se realizó el cálculo y los datos se pueden escribir de nuevo en el explorador web del cliente.
-
-
Vuelva a escribir el flujo de datos del formulario en el explorador web del cliente
- Cree un
javax.servlet.ServletOutputStreamobjeto utilizado para enviar una secuencia de datos de formulario al explorador web del cliente. - Cree un
BLOBobjeto que contiene datos de formulario invocando la variableFormsResultdel objetogetOutputContentmétodo. - Cree una matriz de bytes y rellénela invocando la variable
BLOBdel objetogetBinaryDatamétodo. Esta tarea asigna el contenido de la variableFormsResulta la matriz de bytes. - Invocar el
javax.servlet.http.HttpServletResponsedel objetowritemétodo para enviar la secuencia de datos del formulario al explorador web del cliente. Pase la matriz de bytes a lawritemétodo.
- Cree un
Consulte también
Invocación de AEM Forms mediante la codificación Base64