Integración del formulario adaptable con la base de datos mediante el flujo de trabajo de AEM submit-forms-to-database-using-forms-portal
El servicio de conversión automatizada de formularios (AFCS) le permite convertir un formulario PDF no interactivo, un formulario AcroForm o un formulario PDF basado en XFA en un formulario adaptable. Al iniciar el proceso de conversión, tiene la opción de generar un formulario adaptable con o sin enlaces de datos.
Si selecciona generar un formulario adaptable sin enlaces de datos, puede integrar el formulario adaptable convertido con un modelo de datos de formulario, un esquema XML o JSON después de la conversión. Para el modelo de datos de formulario, es necesario enlazar manualmente los campos de formulario adaptables con el modelo de datos de formulario. Sin embargo, si genera un formulario adaptable con enlaces de datos, el servicio de conversión asocia automáticamente los formularios adaptables con un esquema JSON y crea un enlace de datos entre los campos disponibles en el formulario adaptable y el esquema JSON. A continuación, puede integrar el formulario adaptable con una base de datos de su elección, rellenar los datos del formulario y enviarlo a la base de datos. Del mismo modo, tras una integración correcta con la base de datos, se pueden configurar los campos del formulario adaptable convertido para recuperar los valores de la base de datos y rellenar automáticamente los campos.
La siguiente figura muestra las distintas etapas de integración de un formulario adaptable convertido con una base de datos:
En este artículo se describen las instrucciones paso a paso para ejecutar correctamente todas estas etapas de integración.
Requisitos previos pre-requisites
- Configuración de una instancia de autor de AEM 6.4 o 6.5
- Instalar el Service pack más reciente para la instancia de AEM
- Última versión del paquete de complementos de AEM Forms
- Configuración del servicio de conversión automatizada de formularios
- Configure una base de datos. La base de datos utilizada en la implementación de muestra es MySQL 5.6.24. Sin embargo, puede integrar el formulario adaptable convertido con cualquier base de datos de su elección.
Formulario adaptable de ejemplo sample-adaptive-form
Para ejecutar el caso de uso para integrar formularios adaptables convertidos con la base de datos mediante un flujo de trabajo AEM, descargue el siguiente archivo PDF como ejemplo.
Puede descargar el formulario de contacto de ejemplo utilizando lo siguiente:
El archivo PDF sirve como entrada al servicio de conversión automatizada de formularios (AFCS). El servicio convierte este archivo en un formulario adaptable. La siguiente imagen muestra el formulario de contacto en formato PDF.
Instalar el archivo mysql-connector-java-5.1.39-bin.jar. install-mysql-connector-java-file
Realice los siguientes pasos en todas las instancias de autor y publicación para instalar el archivo mysql-connector-java-5.1.39-bin.jar:
- Vaya a
http://server:port/system/console/depfinder
y busque el paquete com.mysql.jdbc. - En la columna Exportado por, compruebe si el paquete fue exportado por algún otro paquete. Continúe si el paquete no se exporta mediante ningún otro.
- Vaya a
http://server:port/system/console/bundles
y haga clic en Install/Update. - Haga clic en Choose File y busque para seleccionar el archivo mysql-connector-java-5.1.39-bin.jar. Seleccione también las casillas de verificación Start Bundle y Refresh Packages.
- Haga clic en Install o Update. Una vez finalizado, reinicie el servidor.
- (Solo Windows) Desactive el cortafuegos de su sistema operativo.
Preparación de datos para el modelo de formulario prepare-data-for-form-model
La integración de datos de AEM Forms le permite configurar y conectarse a fuentes de datos diferentes. Después de generar un formulario adaptable mediante el proceso de conversión, puede definir el modelo de formulario basado en un modelo de datos de formulario, XSD o un esquema JSON. Puede utilizar una base de datos, Microsoft Dynamics o cualquier otro servicio de terceros para crear un modelo de datos de formulario.
Este tutorial utiliza la base de datos MySQL como fuente para crear un modelo de datos de formulario. Cree un esquema en la base de datos y agregue la tabla de contacto al esquema en función de los campos disponibles en el formulario adaptable.
Utilice la siguiente instrucción DDL para crear la tabla contacto en la base de datos.
CREATE TABLE `contactus` (
`name` varchar(45) NOT NULL,
`email` varchar(45) NOT NULL,
`phonenumber` varchar(10) DEFAULT NULL,
`issuedesc` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Configuración de la conexión entre la instancia de AEM y la base de datos configure-connection-between-aem-instance-and-database
Realice los siguientes pasos de configuración para crear una conexión entre la instancia de AEM y la base de datos MySQL:
-
Vaya a la página de configuración de la consola web de AEM en
http://server:port/system/console/configMgr
. -
Busque y haga clic para abrir Apache Sling Connection Pooled DataSource en modo de edición en la configuración de la consola web. Especifique los valores de las propiedades tal como se describe en la siguiente tabla:
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2 10-row-2 11-row-2 12-row-2 13-row-2 14-row-2 15-row-2 html-authored Propiedad Valor Nombre de la fuente de datos Un nombre de fuente de datos para filtrar los controladores del grupo de fuentes de datos. Clase de controlador JDBC com.mysql.jdbc.Driver URI de conexión JDBC jdbc//[host]:[port]/[schema_name] Nombre de usuario Un nombre de usuario para autenticar y realizar acciones en tablas de base de datos Contraseña La contraseña asociada al nombre de usuario Aislamiento de transacciones READ_COMMITTED Máximo de conexiones activas 1000 Conexiones máximas inactivas 100 Conexiones mínimas inactivas 10 Tamaño inicial 10 Espera máxima 100 000 Prueba a la vista previa Comprobado Prueba mientras está inactiva Comprobado Consulta de validación Los valores de ejemplo son SELECT 1(mysql), select 1 from dual(oracle), SELECT 1(MS Sql Server) (validationQuery) Tiempo de espera de consulta de validación 10 000
Creación de un modelo de datos de formulario create-form-data-model
Una vez configurado MySQL como fuente de datos, ejecute los siguientes pasos para crear un modelo de datos de formulario:
-
En la instancia de autor de AEM, vaya a Forms > Data Integrations.
-
Pulse Create > Form Data Model.
-
En el asistente Create Form Data Model, especifique workflow_submit como nombre del formulario del modelo de datos, y toque Next.
-
Seleccione la fuente de datos MySQL que ha configurado en la sección anterior y pulse Create.
-
Toque Edit y expanda la fuente de datos que aparece en el panel izquierdo para seleccionar la tabla contacto get y insert servicios y pulse Add Selected.
-
Seleccione el objeto del modelo de datos en el panel derecho y pulse Edit Properties. Seleccione get y insert de las listas desplegables Read Service y Write Service. Especifique los argumentos del servicio de lectura y pulse Done.
-
En la pestaña Services, seleccione el servicio get y pulse Edit Properties. Seleccione Output Model Object, desactive la alternancia Return array y pulse Done.
-
Seleccione el servicio Insert y pulse Edit Properties. Seleccione el Input Model Object y toque Done.
-
Pulse Save para guardar el modelo de datos de formulario.
Puede descargar el ejemplo del modelo de datos de formulario mediante lo siguiente:
Generación de formularios adaptables con enlace JSON generate-adaptive-forms-with-json-binding
Utilice el servicio de conversión automatizada de formularios (AFCS) para convertir el formulario de contacto a uno adaptable con enlace de datos. Asegúrese de no seleccionar la casilla Generate adaptive form(s) without data bindings para generar el formulario adaptable.
Seleccione el formulario de contacto que está disponible en la output carpeta Forms & Documents y pulse Edit. Pulse Preview, escriba los valores en los campos del formulario adaptable y pulse Submit.
Inicie sesión en crx-repository y vaya a /content/forms/fp/admin/submit/data para ver los valores enviados en formato JSON. A continuación, se muestran los datos de ejemplo en formato JSON al enviar el formulario Contacto adaptable y convertido:
{
"afData": {
"afUnboundData": {
"data": {}
},
"afBoundData": {
"data": {
"name1": "Gloria",
"email": "abc@xyz.com",
"phone_number": "2346578965",
"issue_description": "Test message"
}
},
"afSubmissionInfo": {
"computedMetaInfo": {},
"stateOverrides": {},
"signers": {},
"afPath": "/content/dam/formsanddocuments/docs_conversion/output/sample_form_json",
"afSubmissionTime": "20191204014007"
}
}
}
Debe crear ahora un modelo de flujo de trabajo que pueda procesar estos datos y enviarlos a la base de datos MySQL utilizando el modelo de datos de formulario que ha creado en las secciones anteriores.
Creación de un modelo de flujo de trabajo para procesar datos JSON create-workflow-model
Siga estos pasos para crear un modelo de flujo de trabajo y enviar los datos de formulario adaptables a la base de datos:
-
Abra la consola Modelos de flujo de trabajo. La URL predeterminada es
https://server:port/libs/cq/workflow/admin/console/content/models.html/etc/workflow/models
. -
Seleccione Create, luego Create Model. Aparecerá el cuadro de diálogo Add Workflow Model.
-
Introduzca Title y Name (opcional). Por ejemplo, workflow_json_submit. Seleccione Done para crear el modelo.
-
Seleccione el modelo de flujo de trabajo y pulse Edit para abrir el modelo en modo de edición. Toque + y agregue el paso Invoke Form Data Model Service al modelo del flujo de trabajo.
-
Seleccione el paso Invoke Form Data Model Service y seleccione .
-
En la pestaña Form Data Model, seleccione el modelo de datos de formulario que ha creado en el campo Form Data Model path y seleccione insert de la lista desplegable Service.
-
En la pestaña Input for Service, seleccione Provide input data using literal, variable, or a workflow metadata, and a JSON file en la lista desplegable. Luego, seleccione la casilla Map input fields from input JSON, seleccione Relative to payload y agregue data.xml como el valor para el campo Select input JSON document using.
-
En la sección Service Arguments, agregue los siguientes valores para los argumentos del modelo de datos de formulario:
Observe que los campos del modelo de datos de formulario, por ejemplo, contacto dot name, están asignados a afData.afBoundData.data.name1, que hace referencia a los enlaces del esquema JSON para el formulario adaptable que ya se ha enviado.
Configuración del envío de formularios adaptables configure-adaptive-form-submission
Ejecute los siguientes pasos para enviar el formulario adaptable al modelo de flujo de trabajo creado en la sección anterior:
-
Seleccione el formulario de contacto que ya se ha convertido y que está disponible en la carpeta output en Forms & Documents y seleccione Edit.
-
Abra las propiedades del formulario adaptable seleccionando Form Container y luego .
-
En la sección Submission, seleccione Invoke an AEM workflow de la lista desplegable Submit Action. Luego seleccione el modelo de flujo de trabajo que creó en la sección anterior y especifique data.xml en el campo Data File Path.
-
Pulse para guardar las propiedades.
-
Seleccione Preview, escriba los valores en los campos del formulario adaptable y seleccione Submit. Los valores enviados ahora se muestran en la tabla de la base de datos MySQL en lugar de crx-repository.
Configuración de formularios adaptables para rellenar los valores predeterminados de la base de datos de forma automática
Ejecute los siguientes pasos para configurar el formulario adaptable para rellenar de forma automática los valores predeterminados de la base de datos MySQL en función de la clave principal definida en la tabla (correo electrónico, en este caso):
-
Seleccione el campo correo electrónico en el formulario adaptable y pulse .
-
Toque Create y seleccione is changed de la lista desplegable Select State en la sección When.
-
En la sección Then, seleccione Invoke Service y get como el servicio para el modelo de datos de formulario que ha creado en la sección anterior de este artículo.
-
Seleccione correo electrónico en la sección Input y los tres campos restantes del modelo de datos de formulario, Nombre, Número de teléfono y Descripción del problema en la sección Output. Pulse Done para guardar la configuración.
Como resultado, en función de las entradas de correo electrónico existentes en la base de datos MySQL, puede rellenar automáticamente los valores predeterminados de los tres campos restantes en el modo Preview de formulario adaptable. Por ejemplo, si especifica aya.tan@xyz.com en el campo Correo electrónico (en función de los datos existentes en la sección Preparación del modelo de datos de formulario de este artículo) y en la pestaña fuera del campo, los tres campos restantes, Nombre, Número de teléfono y Descripción del problema se muestran automáticamente en el formulario adaptable.
Puede descargar el ejemplo de formulario adaptable convertido utilizando lo siguiente: