2008-10-15 8 views
18

Nuestro sistema (captura de comercio de derivados de productos básicos exóticos y gestión de riesgos) se está reconstruyendo en breve. Una propuesta que he escuchado es que se incorporará un motor de reglas para facilitar a los usuarios finales (comerciantes de productos básicos, bastante sofisticados) realizar ciertos cambios en la lógica comercial.¿Alguna vez ha tenido éxito un sistema que incorporara un motor de reglas?

Soy un poco escéptico de los motores de reglas. El agilista en mí se pregunta si no son más que una solución técnica a un problema de proceso ... es decir. lleva demasiado tiempo para que nuestros desarrolladores respondan a las necesidades de cambio de la empresa. La solución a ese problema debería ser un enfoque más colaborativo para el desarrollo, una mejor cobertura de prueba, prácticas más ágiles en todas partes.

Escuchar las situaciones en las que un motor de reglas fue realmente una bendición (especialmente en un entorno comercial) sería ciertamente útil.

+6

Voy a cerrar esta pregunta como fuera de tema porque es una solicitud de historias, no una pregunta de programación. – durron597

Respuesta

13

He visto dos aplicaciones que utilizan el motor Blaze Rete de Fair Issac.

Una aplicación cerró miles de reglas en una sola base de conocimiento, tuvo problemas de memoria terribles, se ha convertido en una caja negra que pocos entienden. No lo llamaría un éxito, pero se está ejecutando en producción.

Otra aplicación usó árboles de decisión para representar del orden de cientos de preguntas en un formulario médico a clientes de disposición. Fue hecho tan elegantemente que la gente de negocios puede actualizar las reglas según sea necesario, sin tener que involucrar a un desarrollador. (Todavía tiene que ser desplegado por uno, sin embargo). Llamaría a eso un gran éxito.

Por lo tanto, depende de cuán bien enfocado esté el problema, el tamaño del conjunto de reglas, el conocimiento de los desarrolladores. Mi prejuicio es que simplemente hacer de un motor de reglas un único punto de falla y de verter reglas en él probablemente no sea un buen enfoque. Comenzaría con un enfoque basado en datos o basado en tablas y crecería hasta que se necesitara un motor de reglas. También me esforzaría por encapsular el motor de reglas como parte del comportamiento de un objeto. Ocultaría el motor de reglas de los usuarios y trataría de dividir el espacio de reglas en el modelo de dominio.

2

Mi experiencia se limita a (i) no mucho y (ii) prólogo; pero puedo decir con seguridad que un motor de reglas puede ayudarlo a expresar conceptos proposicionales mucho más limpios que el código de procedimiento.

10

No sé si diría que alguna vez son realmente una bendición, pero creo que ciertamente pueden ser valiosos. Trabajé en un sistema durante algunos años en la industria de seguros, donde se empleó con bastante éxito un motor de reglas para permitir a los usuarios comerciales crear reglas que determinaran qué políticas eran legales, según el estado.

Por ejemplo, si tenía que pagar un copago en ciertos estados, o ciertas combinaciones de deducible y copago no estaban permitidas, ya sea por consideraciones del producto o simplemente porque era ilegal debido a la ley estatal.

El número de estados en los que operaba la empresa, junto con el cambio constante en las reglas (trimestrales) lo convertiría en una práctica de codificación vertiginosa. Más importante aún, no está en la experiencia de un programador. Agrega una comunicación extra sin sentido donde el usuario final describe la regla que se aplicará a un programador que no es un experto en la industria de seguros como lo son ellos.

Diseñado correctamente, un motor de reglas todavía puede habilitar un sistema de flujo de trabajo que permita realizar buenas pruebas. En este caso, las reglas se almacenaron en una base de datos, y hubo bases de datos de QA y PROD. Entonces, los BA pueden poner a prueba sus reglas en QA y luego promocionarlas a PROD.

Al igual que con cualquier cosa, generalmente se trata de la implementación, y no la técnica real.

0

Durante un tiempo trabajé para el proyecto informático distribuido PEATE que estaba desarrollando un sistema para el cálculo de datos atmosféricos de gran volumen y gran volumen. El sistema tenía tres partes: el administrador de datos, el programador y el componente de ejecución del algoritmo. Podría haber varios de estos componentes, todos hechos a través de servicios web, pero lo que permitió fue que diferentes investigadores ejecutaran trabajos arbitrarios contra datos arbitrarios, y también permitieron que se conectaran diferentes mecanismos de programación a medida que cambiaban los requisitos.

Dejé el proyecto antes de que fuera demasiado lejos del suelo, pero parece que podría encajar en el escenario y sirve como otro ejemplo para algún tipo de motor de reglas. Dicho esto, sin embargo, si los desarrolladores originales son todavía va a ser el de hacer los algoritmos para correr, no puedo ver demasiado beneficioso tener un motor de reglas a menos que maneja una sobrecarga considerable de que cada regla o algoritmo incurrirían en su propio.

Esto suena un poco más complicado que un simple motor de reglas, pero una arquitectura así podría aplicarse también a un motor de reglas.

5

Sí, Microsoft tiene un Business Rule Engine (BRE) en BizTalk que se ha utilizado con éxito durante años. He oído que han tenido clientes que compran BizTalk (muy caro) solo para el BRE.

En mi experiencia, la practicidad de tener un usuario de negocios actualizar las reglas es casi nula. Por lo general, se necesita una persona técnica para trabajar en el editor de reglas de negocios.

3

El problema con muchos de estos motores de reglas es la falta de velocidad y el hecho de que la sustitución o el aumento de las reglas puede romper las reglas de trabajo existentes de manera sutil. Por lo tanto, aún debe volver a probar el sistema después de cada cambio de regla. Entonces, básicamente, solo cambias un idioma de computadora por otro, uno con una base de usuarios mucho más pequeña. Como se menciona en otro cartel, todavía no he visto a un analista de negocios usar con éxito un motor de reglas. Necesitas un programador de todos modos.

3

duda que tengo, pero no se puede hablar en público sobre ellos, pero su probable que han interactuado con uno varias veces este año;)

lo veo en 2 bandos: los programadores lógicos y los usuarios de negocios. Diferentes herramientas se dirigen a diferentes conjuntos, algunos a ambos. Los casos exitosos de usuarios comerciales solo han funcionado cuando se trataba de un subconjunto de la lógica, y también tenían una forma de definir casos de prueba y ejecutarlos ellos mismos (y están preparados para pensar lógicamente). Los programadores lógicos son más raros, pero a menudo se pueden encontrar provenientes de fondos de programación no imperativos (también son el tipo de personas que encuentran la programación funcional intuitiva).

Tenga en cuenta al final del día, incluso con herramientas visuales, si le está diciendo a una computadora que haga algo, todavía está programando.

4

Un motor de reglas es poco más que algo que ejecuta declaraciones declarativas. Vienen con dos ventajas principales (que yo veo):

  1. Su lógica comercial se mantiene desde un solo lugar en lugar de ser rociada a través del código de la aplicación. Técnicamente, una aplicación bien diseñada ya debería hacer esto con la arquitectura, independientemente de si un motor de reglas está presente o no.
  2. Necesita preocuparse [menos] acerca de las dependencias entre declaraciones declarativas. El motor de reglas debe ser lo suficientemente inteligente como para decidir el orden para ejecutar reglas basadas en dependencias.Puede encontrar que algunos motores de reglas soportan un orden secuencial de reglas dentro de un conjunto de reglas o llamar a conjuntos de reglas (grupos de reglas) en un orden particular, pero esto no es realmente en el espíritu de la programación declarativa. Muchos motores de reglas usan Rete (un algoritmo) para decidir cuándo programar la ejecución de declaraciones declarativas.

Sospecho que la mayoría de los motores de reglas, si no todos, agregan más sobrecarga que si escribiera el mejor programa posible que no utiliza un motor de reglas. Esto es similar a cómo escribir código en ensamblado es generalmente más rápido que un compilador (pero generalmente no se escribe el ensamblado porque es más conveniente y productivo usar abstracciones de mayor nivel).

Si se va a parar aquí, entonces probablemente utilizar los programadores para mantener reglas y utilizar un motor de reglas como una manera conveniente para construir una capa de lógica de negocio en su aplicación. Algunos motores de reglas ofrecen algo llamado plantillas que le permiten definir plantillas para reglas. La ventaja aquí es que se supone que los usuarios no técnicos pueden escribir sus propias reglas y modificar las reglas existentes.

Un motor de reglas es una herramienta más en su caja de herramientas que, cuando se utiliza correctamente, puede ser valiosa.

motores
2

reglas se utilizan de forma rutinaria en el negocio de seguros. He trabajado en sistemas con cientos (600,000) reglas que se implementaron en un motor de reglas. Funcionó muy bien.

2

¿Tiene una calificación crediticia? ¿Una puntuación de FICO, tal vez? Eso es F aire I saac CO rporation, los desarrolladores del motor de reglas Blaze.

3

Yo trabajo con una gran cantidad de vendedores en el espacio y una de las grandes cosas acerca de esto es que tengo la oportunidad de hablar con muchos de sus clientes. Así que, sí, cientos de empresas han conseguido exactamente los beneficios que se les prometió - Mayor agilidad, mejor negocio/colaboración de TI, cumplimiento de las regulaciones más fácil, mejor consistencia de la toma de decisiones, menores costes de mantenimiento, tiempos de lanzamiento al mercado, etc.

Una y otra vez, en todos los principales proveedores y reproductores de código abierto, veo que se usa correctamente: para automatizar y mejorar las decisiones operativas de gran volumen con muchas reglas, reglas que cambian mucho, reglas que interactúan de maneras complejas o reglas con un alto contenido de dominio empresarial: funcionan los sistemas de gestión de reglas empresariales.

Realmente.

Cuestiones relacionadas