validar validacion usuario nombre formularios formulario ejemplos crear contraseƱa con javascript forms rule-engine angular-schema-form

validacion - validar nombre javascript



gestionando formularios web complejos (2)

Trabajo en una aplicación, cuyo núcleo es un conjunto muy complejo de formularios web. La fuente de esta complejidad.

  1. escala, algunos formularios contienen aproximadamente 50 páginas, de las cuales hasta 30 preguntas en cada página
  2. reglas complejas, por ejemplo, si el usuario responde "no" a la pregunta 4, las preguntas 5 a 15 no se aplican, por lo que deben eliminarse del formulario

Actualmente utilizamos el formulario de esquema angular para los formularios, pero no proporciona una forma convincente de administrar un gran número de reglas complejas entre los campos de formulario.

No tengo mucha experiencia con la programación basada en reglas , pero me parece que esto podría proporcionar una mejor manera de administrar las reglas entre los campos de formulario. Por ejemplo, al utilizar un enfoque basado en reglas, podríamos definir las reglas asociadas con cada campo de formulario, y el motor de reglas podría usarlas para decidir qué campos se mostrarán a continuación. Usando nuestro enfoque actual, logramos esto con una cantidad masiva de JavaScript imperativo que es casi imposible de probar y mantener.

Si alguien tiene experiencia en el desarrollo de formularios web tan complejos, me interesaría conocer su experiencia, por ejemplo, herramientas / bibliotecas que podrían recomendar. Nuestra pila actual se basa en el JDK (Java, Groovy, Grails) y JavaScript (Angular, Nodo), por lo que las herramientas / bibliotecas / marcos que se ejecutan en esas plataformas serían de particular interés.


Si desea utilizar un motor de reglas, hágase estas preguntas. Si se aplican las respuestas utilízalo.

¿Su algoritmo es un montón de cálculos o hay una gran capacidad de toma de decisiones involucrada?

  • Si tiene muchas condiciones o sus reglas no son muy tabulares (es posible que pueda almacenar las reglas en una base de datos) incluso puede adoptar un enfoque mixto pero es un poco más difícil de mantener porque tiene reglas en diferentes secciones, pero es más fácil para programar porque solo estás programando reglas específicas.

¿Qué tan complejas son tus decisiones?

  • Si tienes más de un par de sentencias condicionales.

  • Puedes definir claramente las reglas

¿Qué tan volátiles son tus reglas?

  • Aún no conoce sus reglas o sus reglas deben ser flexibles y cambiarán con el tiempo.

¿Su algoritmo necesita tweeking personalizado?

  • Si no necesita ajustar las cosas como el rendimiento, use un motor de reglas

Tengo experiencia en la creación de una solución para este tipo de proceso; no cabe duda de que no son 50 páginas de formularios a la vez, pero mi caso de uso tenía formularios técnicos largos en los que los conjuntos de preguntas se ocultaban según una respuesta anterior.

Escribí una herramienta de tiempo de diseño para que un experto estableciera las preguntas. Esta herramienta presentó las preguntas como un árbol y permitió que las preguntas se agruparan en bloques para que las reglas de mostrar / ocultar sean más fáciles de administrar para el autor. Estas reglas se codificaron como un simple ''Q10> 123'', lo que significa que cuando la respuesta a Q10 es mayor que 123, se muestra esta pregunta (o bloque de preguntas). La respuesta requerida por las preguntas podría ser entrada de texto, selecciones desplegables, etc.

El resultado de la actividad en tiempo de diseño por parte del autor fue una definición XML del árbol de preguntas, detalles de las preguntas (aviso, obligatorio, tipo, opciones, etc.) y reglas de visibilidad.

En el tiempo de ejecución, envié esto a un ''reproductor'' de JavaScript integrado en una página web. El jugador consumió las definiciones de las preguntas, configuró un modelo, creó los elementos de visualización requeridos, etc., generando el HTML requerido para representar la página. Esto incluía ejecutar una verificación de visibilidad basada en esas reglas. Esta verificación se ejecutó de nuevo cuando se dio una respuesta para que las preguntas dependientes pudieran ocultarse / visualizarse en función de la respuesta dada.

En el punto donde el usuario completó el formulario, guardamos los datos en la base de datos mediante la publicación de un formulario oculto en el servidor. Esta forma incluía un marcador ''isVisible'' para cada pregunta que también se almacenaba en el DB como un medio para poder mostrar rápidamente las respuestas resultantes y saber cuáles estaban ocultas sobre la base de que si estaban ocultas en la forma al final de la sesión debe ocultarse cuando se muestran los resultados, se imprimen o se envían por correo electrónico, etc.

Construí el mío originalmente en VBScript (¡IE era el navegador en ese entonces!), Luego lo moví a JavaScript, y más recientemente lo actualicé con JQuery. Se ha utilizado millones de veces y parece ser robusto y práctico.

En resumen, necesita una herramienta para ayudar a sus expertos a establecer las preguntas para los formularios; necesita un medio para guardar y transferir esa información; necesita una forma de procesar la definición de formulario y pregunta para el usuario; necesitas una forma de almacenar las respuestas dadas; y necesita una forma de volver a mostrar rápidamente los resultados sin necesidad de volver a calcular mostrar / ocultar en todas las preguntas.