A menudo, es necesario que los clientes envíen varios formularios para solicitar un servicio o beneficio. Este proceso requiere localizar todos los formularios pertinentes, rellenarlos, enviarlos y realizar un seguimiento de forma individual. Además, es necesario que los clientes rellenen datos comunes varias veces en los formularios. Todo el proceso resulta engorroso y suele ser propenso a errores cuando se trabaja con un gran número de formularios. La función Conjuntos de formularios de AEM Forms puede ayudar a simplificar la experiencia del usuario en estos casos.
Un conjunto de formularios es una colección de formularios HTML5 agrupados y presentados como un único conjunto de formularios para los usuarios finales. Cuando estos empiezan a rellenar un conjunto de formularios, pueden desplazarse de un formulario a otro sin problemas. Al final, pueden enviar todos los formularios con un solo clic.
AEM Forms proporciona a los autores de formularios una interfaz de usuario intuitiva para crear, configurar y administrar conjuntos de formularios. Como autor, puede ordenar los formularios en la secuencia concreta que desea que sigan los usuarios finales. Además, puede aplicar condiciones o expresiones de idoneidad en formularios individuales para controlar su visibilidad en función de las entradas del usuario. Por ejemplo, puede configurar el formulario de datos del cónyuge para que aparezca únicamente cuando el estado civil se especifique como Casado.
Además, puede configurar campos comunes en distintos formularios para compartir enlaces de datos comunes. Cuando utiliza los enlaces de datos adecuados, los usuarios finales solo tienen que cumplimentar los datos comunes una vez, y estos se rellenan automáticamente en los formularios posteriores.
Los conjuntos de formularios también se admiten en la aplicación de AEM Forms, lo que permite que el personal de campo disponga de un conjunto de formularios sin conexión, visite a los clientes, introduzca los datos y sincronice posteriormente el conjunto con el servidor de AEM Forms para enviar los datos de los formularios a los procesos empresariales.
Puede asociar varios XDP o plantillas de formulario creados con Designer a un conjunto de formularios. Los conjuntos de formularios se pueden utilizar para procesar de forma selectiva los XDP en función de los valores introducidos por los usuarios en los formularios iniciales y sus perfiles.
Use la Interfaz de usuario de AEM Forms para administrar todos los formularios, conjuntos de formularios y recursos relacionados.
Para crear un conjunto de formularios, haga lo siguiente:
Seleccione Forms > Formularios y documentos.
Seleccione Crear > Conjunto de formularios.
En la página Agregar propiedades, añada los siguientes detalles y haga clic en Siguiente.
La pantalla Seleccionar formularios muestra los formularios XDP o los archivos XDP disponibles. Busque y seleccione los formularios que desea incluir en el conjunto de formularios y, a continuación, haga clic en Agregar a conjunto de formularios. Si es necesario, vuelva a buscar los formularios que desea agregar. Después de agregar todos los formularios al conjunto de formularios, haga clic en Siguiente.
Asegúrese de que los nombres de campo de los formularios XDP no contienen el carácter de punto. De lo contrario, los scripts que intenten resolver los campos con caracteres de punto no podrán hacerlo.
En la página Configurar formularios, puede hacer lo siguiente:
fs.valueOf(<Form Identifier>, <fieldSom expression>) > <value>
Por ejemplo, si tiene dos formularios en el conjunto de formularios denominados Gastos comerciales y Gastos de viajes, puede agregar un fragmento de JavaScript en el campo Expresión de idoneidad para ambos formularios para comprobar los datos introducidos por el usuario en un formulario sobre el tipo de gasto. Si el usuario elige Gastos comerciales, se procesa el formulario Gastos comerciales para el usuario final. En cambio, si el usuario elige Gastos de viaje, se procesa un formulario diferente para el usuario final. Para obtener más información, consulte Expresión de idoneidad.
Además, el autor también puede optar por quitar un formulario del conjunto de formularios utilizando el icono Eliminar de la esquina derecha de cada fila o agregar otro conjunto de formularios utilizando el icono "+" que aparece en la barra de herramientas. El icono "+" vuelve a dirigir al usuario al paso anterior del asistente, el cual se utilizó para "Seleccionar formularios". Las selecciones existentes se mantienen, y cualquier selección adicional que realice debe agregarse al conjunto de formularios utilizando el icono Agregar a conjunto de formularios de esa página.
La interfaz de usuario de AEM Forms administra todos los formularios que se utilizan en el conjunto de formularios.
Una vez creado un conjunto de formularios, puede realizar las siguientes acciones en ese conjunto:
Para editar un conjunto de formularios, haga lo siguiente:
Seleccione Forms > Formularios y documentos.
Busque el conjunto de formularios que desea editar. Pase el ratón sobre él y seleccione Editar ().
En la página Configurar formularios, puede editar las siguientes opciones:
También puede hacer clic en el icono Eliminar correspondiente para eliminar el formulario del conjunto de formularios.
Una vez que haya creado un conjunto de formularios utilizando la interfaz de usuario de AEM Forms Management, puede utilizar el conjunto de formularios en una actividad de Punto de inicio o Asignar tarea mediante Workbench.
Al diseñar un proceso, en la sección Presentación y datos de Asignar tarea/Punto de inicio, seleccione Usar un recurso CRX. Aparecerá el Explorador de recursos CRX.
Seleccione el conjunto de formularios para filtrar el conjunto de formularios en el repositorio de AEM (CRX).
Seleccione un conjunto de formularios y haga clic en Aceptar.
Las expresiones de idoneidad de un conjunto de formularios se utilizan para definir y controlar dinámicamente los formularios que se muestran a un usuario. Por ejemplo, se utilizan para mostrar un formulario concreto solo si el usuario pertenece a un grupo de edad en particular. Puede especificar y editar las expresiones de idoneidad mediante Forms Manager.
Las expresiones de idoneidad pueden ser cualquier instrucción de JavaScript válida que devuelva un valor booleano. La última instrucción del fragmento de código JavaScript se trata como un valor booleano que determina la idoneidad del formulario en función del procesamiento en el resto (líneas anteriores) del fragmento de código JavaScript. Si el valor de la expresión es true, el formulario puede mostrarse al usuario. Estos formularios se denominan "formularios aptos".
No se ejecuta la expresión de idoneidad para el primer formulario del conjunto de formularios. El primer formulario se muestra siempre, independientemente de su expresión de idoneidad.
Además de las funciones de JavaScript estándares, el conjunto de formularios también expone la API fs.valueOf, que proporciona acceso al valor del campo de un formulario de un conjunto de formularios. Utilice esta API para acceder al valor del campo de un formulario de un conjunto de formularios. La sintaxis de la API es fs.valueOf (formUid, fieldSOM), donde:
Los parámetros formUid y fieldSOM deben ser literales de cadena.
Uso válido de la API:
fs.valueOf("form1", "xfa.form.form1.subform1.field1")
Uso no válido de la API:
var formUid = "form1";
var fieldSOM = "xfa.form.form1.subform1.field1"; fs.valueOf(formUid, fieldSOM);
Un conjunto de formularios es una colección de varios formularios HTML5 con esquemas comunes o diferentes. El conjunto de formularios admite la cumplimentación previa de campos de formulario mediante un archivo XML. Puede asociar un archivo XML con un conjunto de formularios, de modo que al abrir un formulario del conjunto de formularios, algunos de los campos del formulario se cumplimenten previamente.
El archivo XML de relleno previo se especifica utilizando el parámetro dataRef de la URL del conjunto de formularios. El parámetro dataRef especifica la ruta absoluta del archivo XML de datos que se combina con el conjunto de formularios.
Por ejemplo, tiene tres formularios (formulario1, formulario2 y formulario3), en el conjunto de formularios con la siguiente estructura:
formulario1
campo
campodelformulario1
formulario2
campo
campodelformulario2
formulario3
campo
campodelformulario3
Cada formulario tiene un campo de nombre común denominado "campo" y un campo de nombre único denominado "campo de<i>formulario".
Puede rellenar previamente este conjunto de formularios utilizando un XML con la siguiente estructura:
<?xml version="1.0" encoding="UTF-8" ?>
<formSetRootTag>
<field>common field value</field>
<form1field>value1</form1field>
<form2field>value2</form2field>
<form3field>value3</form3field>
</formSetRootTag>
La etiqueta raíz XML puede tener cualquier nombre, pero las etiquetas de elemento correspondientes a los campos deben tener el mismo nombre que el campo. La jerarquía del XML debe imitar la jerarquía del formulario, lo que significa que el XML debe tener las etiquetas correspondientes para ajustar los subformularios.
El fragmento XML anterior muestra que el XML de relleno previo del conjunto de formularios es una unión de los fragmentos XML de relleno previo de los formularios individuales. Si ciertos campos de los diferentes formularios tienen una jerarquía/esquema de datos similar entre sí, los campos se rellenan previamente con los mismos valores. En este ejemplo, los tres formularios se rellenan previamente con el mismo valor para el campo común, "campo". Es una forma sencilla de transferir los datos de un formulario al siguiente. Otra forma de hacerlo es enlazar los campos al mismo esquema o referencia de datos. Si desea separar los datos del conjunto de formularios en función del esquema de los formularios, puede hacerlo especificando el atributo "raíz de datos" del formulario durante la creación del conjunto de formularios (el valor predeterminado es "/", que se asigna a la etiqueta raíz del conjunto de formularios).
En el ejemplo anterior, si especifica las raíces de datos "/formulario1", "/formulario2" y "/formulario3" respectivamente para los tres formularios, debe utilizar un XML de relleno previo con la siguiente estructura:
<?xml version="1.0" encoding="UTF-8" ?>
<formSetRootTag>
<form1>
<field>field value1</field>
<form1field>value1</form1field>
</form1>
<form2>
<field>field value2</field>
<form2field>value2</form2field>
</form2>
<form3>
<field>field value3</field>
<form3field>value3</form3field>
</form3>
</formSetRootTag>
En un conjunto de formularios, el XML ha definido un esquema XML con la siguiente sintaxis:
<formset>
<fs_data>
<xdp:xdp xmlns:xdp="https://ns.adobe.com/xdp/">
<xfa:datasets xmlns:xfa="https://www.xfa.org/schema/xfa-data/1.0/">
<xfa:data>
<rootElement>
... data ....
</rootElement>
</xfa:data>
</xfa:datasets>
</xdp:xdp>
</fs_data>
<fs_draft>
... private data...
</fs_draft>
</formset>
Si hay dos formularios con raíces de datos superpuestas, o si la jerarquía de elementos de un formulario se superpone con la jerarquía raíz de datos de otro, se combinan los valores de los elementos superpuestos en el xml de relleno previo. El XML de envío tiene una estructura similar a la del XML de relleno previo, pero el XML de envío tiene más etiquetas de contenedor y algunas etiquetas de datos de contexto del conjunto de formularios anexadas al final.
Reglas de sintaxis para crear un archivo XML de relleno previo:
parent elements:
null
cardinality: [0,1]
submitXML: P
prefillXML: O
children: fs_data
El elemento raíz del conjunto de formularios XML. Se recomienda no utilizar esta palabra como nombre de rootSubform en ningún formulario del conjunto de formularios.
parent elements:
formset
cardinality: [1]
submitXML: P
prefillXML: O
children: xdp:xdp/rootElement
El subárbol indica los datos de los formularios del conjunto de formularios. El elemento es opcional en el XML de relleno previo únicamente si el elemento del conjunto de formularios no está presente
parent elements: fs_data/null
cardinality: [0,1]
submitXML: O
prefillXML: O
children: xfa:datasets
Esta etiqueta indica el inicio del XML del formulario HTML5. Se agrega al XML de envío si está presente en el XML de relleno previo o si no hay ningún XML de relleno previo. Esta etiqueta se puede eliminar del XML de relleno previo.
parent elements: xdp:xdp
cardinality: [1]
submitXML: O
prefillXML: O
children: xfa:data
parent elements: xfa:datasets
cardinality: [1]
submitXML: O
prefillXML: O
children: rootElement
parent elements: xfa:datasets/fs_data/null
cardinality: [0,1]
submitXML: P
prefillXML: O
children: controlled by the Forms in Form set
El nombre rootElement es solo un marcador de posición. El nombre real se selecciona de entre los formularios utilizados en el conjunto de formularios. El subárbol que comienza con rootElement contiene los datos de los campos y los subformularios de los formularios del conjunto de formularios. Existen múltiples factores que determinan la estructura de rootElement y sus elementos secundarios.
En el XML de relleno previo, esta etiqueta es opcional, pero si falta, se ignora la totalidad del XML.
NOMBRE DE LA ETIQUETA DEL ELEMENTO RAÍZ
Si hay un elemento raíz en el XML de relleno previo, el nombre de ese elemento también se agrega al XML de envío. En los casos en los que no hay un XML de relleno previo, el nombre de rootElement es el nombre del subformulario raíz del primer formulario del conjunto de formularios que tiene una propiedad dataRoot establecida en "/". Si no existe ese formulario, el nombre de rootElement es fs_dummy_root, el cual es una palabra clave reservada.
La aplicación AEM Forms permite a los trabajadores de campo sincronizar sus dispositivos móviles con un servidor de AEM Forms y trabajar en sus tareas. La aplicación funciona incluso cuando el dispositivo está sin conexión guardando los datos de forma local en el dispositivo. Mediante las funciones de anotación, como las fotografías, los trabajadores de campo pueden proporcionar información precisa para integrarla en los procesos empresariales.
Los siguientes patrones de datos no son totalmente compatibles con los conjuntos de formularios:
Patrón solo parcialmente compatible con los conjuntos de formularios | Ejemplo |
El tamaño de entrada y el tamaño del patrón no coinciden | Cuando pattern= num{z,zzz} E input= 12,345 o 1,23 |
Patrones de cláusula de imagen con corchetes "(" ")" | num{(zz,zzz)} |
Varios patrones de datos | num{zz,zzz} | num{z,zzz,zzz} |
Patrones abreviados | num.integer{}, num.decimal{}, num.percent{} o num.currency{} |