Calcular datos de formulario calculating-form-data
Las muestras y los ejemplos de este documento solo son para AEM Forms en un entorno JEE.
El servicio Forms puede calcular los valores que un usuario introduce en un formulario y mostrar los resultados. Para calcular los datos del formulario, debe realizar dos tareas. En primer lugar, se crea un script de diseño de formulario que calcula los datos del formulario. Un diseño de formulario admite tres tipos de scripts. Un tipo de script se ejecuta en el cliente, otro se ejecuta en el servidor y el tercer tipo se ejecuta tanto en el servidor como en el cliente. El tipo de script que se describe en este tema se ejecuta en el servidor. Los cálculos del lado del servidor son compatibles con las transformaciones de HTML, PDF y Guía de formularios (obsoletas).
Como parte del proceso de diseño del formulario, puede utilizar cálculos y scripts 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 campos y objetos de formulario. Cree una secuencia de comandos de diseño de formulario para realizar operaciones de cálculo con los datos que un usuario introduce 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 a un usuario calcular datos:
- El usuario tiene acceso a una página de HTML denominada StartLoan.html que actúa como página de inicio de la aplicación web. Esta página invoca un servlet Java denominado
GetLoanForm
. - El servlet
GetLoanForm
procesa un formulario de préstamo. Este formulario contiene un script, 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 enviará al servlet Java
CalculateData
donde se ejecutará el script. El formulario se devuelve al usuario con los resultados del 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 enviará a otro servlet Java denominado
ProcessForm
responsable de recuperar los datos enviados. (Consulte Gestión de Forms enviados.)
El diagrama siguiente muestra el flujo lógico de la aplicación.
En la tabla siguiente se describen los pasos de este diagrama.
GetLoanForm
se invoca desde la página de inicio del HTML.GetLoanForm
utiliza la API de cliente del servicio 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 ninguna secuencia de comandos configurada para ejecutarse en el servidor. Por ejemplo, considere la aplicación introducida en esta sección. El servlet Java CalculateData
es la ubicación de destino donde se ejecuta el script.CalculateData
, donde se ejecutará el script.ProcessForm
.Normalmente, un formulario enviado como contenido de PDF contiene scripts 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 scripts. En este caso, los cálculos no se ejecutan porque el servicio Forms considera que la interacción ha finalizado.
Para ilustrar el uso de una secuencia de comandos de diseño de formulario, esta sección examina un formulario interactivo simple 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 un usuario introduce en los dos primeros campos y muestra el resultado en el tercer campo.
A. Un campo denominado NumericField1 B. Un campo denominado NumericField2 C. Un campo denominado NumericField3
La sintaxis de la secuencia de comandos 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 el script se encuentra en el evento Click
de este botón. 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 de 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 del formulario, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un objeto de API de cliente de Forms.
- Recupere un formulario que contenga un script de cálculo.
- Escribir el flujo de datos de 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.
Crear 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 está usando la API de Java, cree un objeto FormsServiceClient
. Si está usando la API del servicio web de Forms, cree un objeto FormsServiceService
.
Recuperar un formulario que contiene un script de cálculo
La API de cliente del servicio de Forms se utiliza para crear una lógica de aplicación que administra un formulario que contiene 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 enviados.)
Compruebe que el estado de procesamiento asociado con el formulario enviado es 1
(Calculate)
, lo que significa que el servicio Forms está realizando una operación de cálculo en los datos del formulario y que los resultados se deben escribir en el usuario. En este caso, se ejecuta automáticamente un script configurado para ejecutarse en el servidor.
Vuelva a escribir el flujo de datos de formulario en el explorador web del cliente
Después de comprobar que el estado de procesamiento asociado a un formulario enviado es 1
, debe 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
Incluyendo archivos de biblioteca Java de AEM Forms
Calcular datos de formulario mediante la API de Java
Calcular datos de formulario mediante la API de servicio web
Estableciendo propiedades de conexión
Inicios rápidos de la API de servicio de Forms
Procesar PDF forms interactivos
Creación de aplicaciones web que procesan Forms
Calcular datos de formulario mediante la API de Java calculate-form-data-using-the-java-api
Calcular datos de formulario mediante la API de Forms (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR de cliente, como adobe-forms-client.jar en la ruta de clase del proyecto Java.
-
Crear un objeto de API de cliente de Forms
- Cree un objeto
ServiceClientFactory
que contenga propiedades de conexión. - Cree un objeto
FormsServiceClient
utilizando su constructor y pasando el objetoServiceClientFactory
.
- Cree un objeto
-
Recuperar un formulario que contiene un script de cálculo
-
Para recuperar datos de formulario que contengan un script de cálculo, cree un objeto
com.adobe.idp.Document
utilizando su constructor e invocando el métodogetInputStream
del objetojavax.servlet.http.HttpServletResponse
desde el constructor. -
Invoque el método
processFormSubmission
del objetoFormsServiceClient
y pase los siguientes valores:- El objeto
com.adobe.idp.Document
que contiene los datos del formulario. - Un valor de cadena que especifica variables de entorno, incluidos todos los encabezados HTTP relevantes. Especifique el tipo de contenido que se va a administrar especificando uno o varios valores para la variable de entorno
CONTENT_TYPE
. Por ejemplo, para administrar datos XML y de PDF, especifique el siguiente valor de cadena para este parámetro:CONTENT_TYPE=application/xml&CONTENT_TYPE=application/pdf
- Valor de cadena que especifica el valor del encabezado
HTTP_USER_AGENT
; por ejemplo,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. - Objeto
RenderOptionsSpec
que almacena opciones en tiempo de ejecución.
El método
processFormSubmission
devuelve un objetoFormsResult
que contiene los resultados del envío del formulario. - El objeto
-
Compruebe que el estado de procesamiento asociado con un formulario enviado es
1
invocando el métodogetAction
del objetoFormsResult
. 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.
-
-
Escribir el flujo de datos de formulario en el explorador web del cliente
- Cree un objeto
javax.servlet.ServletOutputStream
que se use para enviar un flujo de datos de formulario al explorador web del cliente. - Cree un objeto
com.adobe.idp.Document
invocando el métodogetOutputContent
del objetoFormsResult
. - Cree un objeto
java.io.InputStream
invocando el métodogetInputStream
del objetocom.adobe.idp.Document
. - Cree una matriz de bytes y rellénela con la secuencia de datos de formulario invocando el método
read
del objetoInputStream
y pasando la matriz de bytes como argumento. - Invoque el método
write
del objetojavax.servlet.ServletOutputStream
para enviar la secuencia de datos de formulario al explorador web del cliente. Pase la matriz de bytes al métodowrite
.
- Cree un objeto
Consulte también
Incluyendo archivos de biblioteca Java de AEM Forms
Estableciendo propiedades de conexión
Calcular datos de formulario mediante la API de servicio web calculate-form-data-using-the-web-service-api
Calcular datos de formulario mediante 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 de proxy Java en la ruta de clase.
-
Crear un objeto de API de cliente de Forms
Cree un objeto
FormsService
y establezca los valores de autenticación. -
Recuperar un formulario que contiene un script de cálculo
-
Para recuperar datos de formulario publicados en un servlet Java, cree un objeto
BLOB
mediante su constructor. -
Cree un objeto
java.io.InputStream
mediante el métodogetInputStream
del objetojavax.servlet.http.HttpServletResponse
. -
Cree un objeto
java.io.ByteArrayOutputStream
utilizando su constructor y pasando la longitud del objetojava.io.InputStream
. -
Copie el contenido del objeto
java.io.InputStream
en el objetojava.io.ByteArrayOutputStream
. -
Cree una matriz de bytes invocando el método
toByteArray
del objetojava.io.ByteArrayOutputStream
. -
Rellene el objeto
BLOB
invocando su métodosetBinaryData
y pasando la matriz de bytes como argumento. -
Crear un objeto
RenderOptionsSpec
mediante su constructor. Establezca el valor de configuración regional invocando el métodosetLocale
del objetoRenderOptionsSpec
y pasando un valor de cadena que especifique el valor de configuración regional. -
Invoque el método
processFormSubmission
del objetoFormsServiceClient
y pase los siguientes valores:- El objeto
BLOB
que contiene los datos del formulario. - Un valor de cadena que especifica variables de entorno que incluyen 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
- Valor de cadena que especifica el valor del encabezado
HTTP_USER_AGENT
; por ejemplo,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. - Objeto
RenderOptionsSpec
que almacena opciones en tiempo de ejecución. Para obtener más información, consulte . - Un objeto
BLOBHolder
vacío que ha rellenado el método. - Un objeto
javax.xml.rpc.holders.StringHolder
vacío que ha rellenado el método. - Un objeto
BLOBHolder
vacío que ha rellenado el método. - Un objeto
BLOBHolder
vacío que ha rellenado el método. - Un objeto
javax.xml.rpc.holders.ShortHolder
vacío que ha rellenado el método. - Un objeto
MyArrayOf_xsd_anyTypeHolder
vacío que ha rellenado el método. Este parámetro se utiliza para almacenar los archivos adjuntos enviados junto con el formulario. - Un objeto
FormsResultHolder
vacío que el método rellena con el formulario enviado.
El método
processFormSubmission
rellena el parámetroFormsResultHolder
con los resultados del envío del formulario. El métodoprocessFormSubmission
devuelve un objetoFormsResult
que contiene los resultados del envío del formulario. - El objeto
-
Compruebe que el estado de procesamiento asociado con un formulario enviado es
1
invocando el métodogetAction
del objetoFormsResult
. 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.
-
-
Escribir el flujo de datos de formulario en el explorador web del cliente
- Cree un objeto
javax.servlet.ServletOutputStream
que se use para enviar un flujo de datos de formulario al explorador web del cliente. - Cree un objeto
BLOB
que contenga datos de formulario invocando el métodogetOutputContent
del objetoFormsResult
. - Cree una matriz de bytes y rellénela invocando el método
getBinaryData
del objetoBLOB
. Esta tarea asigna el contenido del objetoFormsResult
a la matriz de bytes. - Invoque el método
write
del objetojavax.servlet.http.HttpServletResponse
para enviar la secuencia de datos de formulario al explorador web del cliente. Pase la matriz de bytes al métodowrite
.
- Cree un objeto
Ver también
Invocar AEM Forms mediante la codificación Base64