Visualizador de expresiones lógicas

Desarrollé un motor de reglas de negocios en el que los usuarios pueden escribir reglas en sintaxis booleana.

Por ejemplo, las reglas son: R1, R2, R3

Ejemplo de expresión: (R1 Y R2) O R3

Quiero visualizar esta expresión. Por ejemplo, el marco de visualización puede mostrar la expresión en una vista de árbol e insertar colores.

¿Hay algún javascript o algún otro marco de código para lograr esto? (La aplicación es una aplicación ASP.NET)

preguntado el 03 de diciembre de 13 a las 13:12

1 Respuestas

No puedo evitar responder a esta, aunque es posible que mi respuesta no lo ayude a resolver fácilmente su problema. En 1998, mi primer proyecto Javascript fue precisamente un visualizador de expresiones booleanas.

El código no está disponible en ninguna parte, así que no puedo compartirlo. (Dudo que incluso mi antiguo empleador todavía tenga una copia.) E incluso así, se ejecutó en IE4, 5.0 y 5.5; No creo que se haya actualizado nunca para IE6, y no sé si se ejecutó allí.

Pero todavía puedo contarte las ideas básicas, e incluso hoy en día, todavía estoy bastante orgulloso de los resultados, aunque sé que me estremecería al ver el código real.

Por supuesto, una expresión booleana se puede representar fácilmente mediante una estructura de árbol. Cada nodo que no era hoja era un nodo AND, OR o NOT en el árbol, y los AND y OR podían tener varios hijos (así que representé ("A y B y C y D" como AND(A, B , C, D), no solo como combinaciones de AND binarios). Para mostrar los datos, simplemente usé cuadros anidados. Los AND se ejecutaban horizontalmente, los OR se ejecutaban verticalmente, con la palabra clave "y" y "o" repetidas entre los bloques. NO era solo un cuadro en un cuadro con la palabra clave "no" en el exterior.

Mis nodos de hoja estaban asociados con escenarios de datos reales que el usuario podía usar para realizar pruebas, por lo que en lugar de solo "A" y "B", se veían, por ejemplo, como

age < 30
gender = 'F'
income > 40000

El usuario podría ingresar datos de muestra para los campos. age, gender y income y la salida cambiaría a una pantalla roja-verde para mostrar si cada bloque de la expresión y, por supuesto, la expresión completa era verdadera o falsa.

Los campos a utilizar eran configurables, y los casos de prueba se guardaban para elaboración futura.

Este fue un proyecto muy divertido y ayudó en la comunicación entre los empresarios que estaban escribiendo reglas y los programadores que las implementaban, grupos que a menudo tenían ideas muy diferentes de cómo se podría usar la palabra "y" en compañía educada. :-)

Pero los puntos principales son que una forma muy útil de visualizar la expresión booleana es con cuadros simples: NOT es un cuadro dentro de un cuadro, con la palabra "no" en el exterior. Los OR son cuadros que contienen cuadros agrupados verticalmente con "o" en el medio, y los AND son cuadros que contienen cuadros agrupados horizontalmente con "y" en el medio. Si realmente puede asignar valores verdaderos/falsos a sus primitivos, entonces el verde para los cuadros verdaderos y el rojo para los falsos hacen una visualización muy convincente.

...

Pero tendrás que escribir tu propio código. Lo siento.

Respondido el 03 de diciembre de 13 a las 13:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.