Rule Engine en JavaScript
drools rule-engine (3)
Dado que el javascript vive en el navegador, es bastante fácil para un usuario verificar su código fuente y evitar cualquier mecanismo de validación js. Es por eso que generalmente se hace en el lado del servidor.
Es una molestia, pero normalmente implemento la validación tanto en javascript como en el servidor, de esa manera los usuarios "normales" tendrán una respuesta rápida y los "hackers" se mantendrán fuera del sistema. Desafortunadamente, creo que esa es la forma en que debe ir si desea una buena experiencia de usuario y una buena seguridad.
Para responder a su pregunta, que yo sepa, no hay una biblioteca común que pueda usarse tanto en el lado del cliente como en el lado del servidor.
PD. recuerda JavaScript no es Java! :-) http://en.wikipedia.org/wiki/JavaScript#JavaScript_and_Java
¿Hay algún motor de reglas en JavaScript?
La pregunta está en este contexto:
- Considere una aplicación web que tenga un formulario que los usuarios llenen.
- A medida que un usuario completa cada campo y pasa al siguiente, la lógica de negocios escrita en JavaScript controla la visibilidad (y otros atributos) de los elementos del formulario más abajo en la página.
La misma lógica de negocios también se aplica en el lado del servidor después de que se envía el formulario, aunque, en Java para protegerse contra cualquier contratiempo o manipulación en el lado del navegador.
Ahora, ¿no sería bueno si tuviéramos un motor de reglas como JSR 94 / Drools / JRules que ejecutaría reglas tanto en Java como en JavaScript? Con tal motor de reglas, puedo evitar la codificación rígida de mis reglas, y también conservo la flexibilidad de tener la validación del lado del cliente y del lado del servidor.
(PD: probé la ruta AJAX y observé que la aplicación se vuelve mucho menos receptiva, lo que dificulta la venta a los usuarios que han estado acostumbrados a una versión de JavaScript puro y codificada a mano).
Esta es una pregunta válida. De este artículo , JSR 94.
no estandariza lo siguiente: El motor de reglas en sí mismo El flujo de ejecución de las reglas El lenguaje utilizado para describir las reglas El mecanismo de implementación para la tecnología Java EE
Por lo tanto, puede ser posible utilizar un DSL que pueda ejecutarse en el cliente y el servidor, y esto podría desarrollarse, ejecutarse y gestionarse según la arquitectura JSR 94. O no.
Otro artículo La creación de un motor de reglas simple utilizando la API de scripting de Java emplea JSR-233 más otras cosas para crear un sistema de motor de reglas. Esto, sin embargo, es anterior al JSR 94.
Llegué a esta página de porque yo también estaba buscando una solución. Actualmente, tengo una página para validar en el lado del cliente donde los grupos de campos pueden activar diferentes reglas de validación y los requisitos están cambiando. Escribir esto en código imperativo simplemente crea un lío con alta complejidad ciclomática.
Sin embargo, lo más fácil es usar una de las muchas bibliotecas de validación de formularios de JavaScript que hay. Sigue buscando.
JSR-94 es una especificación de Java, así que no veo qué tiene que ver con el navegador.
Hay reglas de Google JSON:
http://code.google.com/p/jsonrules/
Usted dijo que intentó la ruta AJAX. ¿Eso significa un motor de reglas que se ejecuta en el servidor y una llamada asíncrona para acceder a él?