Combinar un diseño de formulario ensamblado mediante fragmentos

Puede combinar un diseño de formulario para pasarlo al servicio de Forms en función de varios fragmentos. Para ensamblar varios fragmentos, utilice el servicio Assembler. Para ver un ejemplo de cómo usar el servicio Assembler para crear un diseño de formulario utilizado por otros servicios de Forms (el servicio Output), vea Crear documentos de PDF mediante fragmentos. En lugar de utilizar el servicio Output, puede realizar el mismo flujo de trabajo mediante el servicio Forms.

Al utilizar el servicio Assembler, pasa un diseño de formulario que se ensambló mediante fragmentos. El diseño de formulario creado no hace referencia a otros fragmentos. Por el contrario, este tema trata sobre cómo pasar un diseño de formulario que hace referencia a otros fragmentos al servicio de Forms. Sin embargo, Assembler no ensambló el diseño de formulario. Se creó en Designer.

NOTA
Para obtener más información acerca del servicio Forms, consulte Referencia de servicios para AEM Forms.
NOTA
Para obtener información acerca de cómo crear una aplicación basada en Web que procese formularios basados en fragmentos, vea Crear aplicaciones Web que procese Forms.

Resumen de los pasos

Para procesar un formulario basado en fragmentos, realice las siguientes tareas:

  1. Incluir archivos de proyecto.
  2. Cree un objeto de API de cliente de Forms.
  3. Especifique los valores de URI.
  4. Procese el formulario.
  5. Escriba 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.

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.

Especificar valores de URI

Para procesar correctamente un formulario basado en fragmentos, debe asegurarse de que el servicio Forms pueda localizar el formulario y los fragmentos (los archivos XDP) a los que hace referencia el diseño de formulario. Por ejemplo, supongamos que el formulario se denomina PO.xdp y que utiliza dos fragmentos llamados FooterUS.xdp y FooterCanada.xdp. En este caso, el servicio Forms debe poder localizar los tres archivos XDP.

Puede organizar un formulario y sus fragmentos colocándolo en una ubicación y los fragmentos en otra ubicación, o bien puede colocar todos los archivos XDP en la misma ubicación. A los efectos de esta sección, supongamos que todos los archivos XDP están en el repositorio de AEM Forms. Para obtener información sobre cómo colocar archivos XDP en el repositorio de AEM Forms, consulte Recursos de escritura.

Al procesar un formulario basado en fragmentos, solo debe hacer referencia al propio formulario y no a los fragmentos. Por ejemplo, debe hacer referencia a PO.xdp y no a FooterUS.xdp o FooterCanada.xdp. Asegúrese de colocar los fragmentos en una ubicación en la que el servicio Forms pueda localizarlos.

Procesar el formulario

Un formulario basado en fragmentos se puede procesar del mismo modo que los formularios no fragmentados. Es decir, puede procesar el formulario como PDF, HTML o guías del formulario (obsoleto). El ejemplo de esta sección procesa un formulario basado en fragmentos como un formulario PDF interactivo. (Consulte Procesamiento de PDF forms interactivos.)

Escriba el flujo de datos del formulario en el explorador web del cliente

Cuando el servicio Forms procesa un formulario, devuelve un flujo de datos de formulario que debe escribir en el explorador web del cliente. Cuando se escribe en el explorador web del cliente, el formulario es visible para el usuario.

Consulte también

Procesar formularios basados en fragmentos mediante la API de Java

Procesar formularios basados en fragmentos mediante la API de servicio web

Incluir archivos de biblioteca Java de AEM Forms

Estableciendo propiedades de conexión

Inicio rápido de la API del servicio de Forms

Procesar formularios PDF interactivos

Crear aplicaciones web que procesen Forms

Procesar formularios basados en fragmentos mediante la API de Java

Procesar un formulario basado en fragmentos mediante la API de Forms (Java):

  1. Incluir archivos de proyecto

    Incluya archivos JAR de cliente, como adobe-forms-client.jar, en la ruta de clase del proyecto Java.

  2. 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 objeto ServiceClientFactory.
  3. Especificar valores de URI

    • Cree un objeto URLSpec que almacene valores de URI mediante su constructor.
    • Invoque el método setApplicationWebRoot del objeto URLSpec y pase un valor de cadena que represente la raíz web de la aplicación.
    • Invoque el método setContentRootURI del objeto URLSpec y pase un valor de cadena que especifique el valor del URI de raíz de contenido. Asegúrese de que el diseño de formulario y los fragmentos estén en el URI raíz de contenido. Si no es así, el servicio Forms genera una excepción. Para hacer referencia al repositorio, especifique repository://.
    • Invoque el método setTargetURL del objeto URLSpec y pase un valor de cadena que especifique el valor de la dirección URL de destino donde se publican los datos del formulario. Si define la dirección URL de destino en el diseño de formulario, puede pasar una cadena vacía. También puede especificar la dirección URL a la que se envía un formulario para realizar cálculos.
  4. Procesar el formulario

    Invoque el método renderPDFForm del objeto FormsServiceClient y pase los siguientes valores:

    • Un valor de cadena que especifica el nombre del diseño del formulario, incluida la extensión del nombre de archivo. Si hace referencia a un diseño de formulario que forma parte de una aplicación de Forms, asegúrese de especificar la ruta de acceso completa, como Applications/FormsApplication/1.0/FormsFolder/Loan.xdp.
    • Objeto com.adobe.idp.Document que contiene datos para combinar con el formulario. Si no desea combinar datos, pase un objeto com.adobe.idp.Document vacío.
    • Objeto PDFFormRenderSpec que almacena opciones en tiempo de ejecución.
    • Un objeto URLSpec que contiene valores de URI requeridos por el servicio Forms para procesar un formulario basado en fragmentos.
    • Objeto java.util.HashMap que almacena datos adjuntos de archivos. Este es un parámetro opcional y puede especificar null si no desea adjuntar archivos al formulario.

    El método renderPDFForm devuelve un objeto FormsResult que contiene una secuencia de datos de formulario que debe escribirse en el explorador web del cliente.

  5. Escribir el flujo de datos del formulario en el explorador web del cliente

    • Cree un objeto com.adobe.idp.Document invocando el método getOutputContent del objeto FormsResult.
    • Obtenga el tipo de contenido del objeto com.adobe.idp.Document invocando su método getContentType.
    • Establezca el tipo de contenido del objeto javax.servlet.http.HttpServletResponse invocando su método setContentType y pasando el tipo de contenido del objeto com.adobe.idp.Document.
    • Cree un objeto javax.servlet.ServletOutputStream utilizado para escribir el flujo de datos de formulario en el explorador web del cliente invocando el método getOutputStream del objeto javax.servlet.http.HttpServletResponse.
    • Cree un objeto java.io.InputStream invocando el método getInputStream del objeto com.adobe.idp.Document.
    • Cree una matriz de bytes para rellenarla con el flujo de datos de formulario invocando el método read del objeto InputStream y pasando la matriz de bytes como argumento.
    • Invoque el método write del objeto javax.servlet.ServletOutputStream para enviar el flujo de datos de formulario al explorador web del cliente. Pase la matriz de bytes al método write.