Pros y contras de los motores de reglas de Java

¿Cuáles son los pros y los contras de adoptar los motores de reglas de Java JESS y Drools ? ¿Hay otros jugadores?

Entiendo que Drools es Open Source y JESS no lo es, pero ¿cómo se comparan en otras áreas como la facilidad de uso, el rendimiento y el nivel de integración con su código?

¿Cuáles son los pros y los contras de adoptar los motores de reglas de Java JESS y Drools?

Utilice un motor de reglas si necesita separar las reglas de negocios de la lógica de la aplicación. El artículo ¿Su proyecto necesita un motor de reglas tiene un buen ejemplo?

Por ejemplo, un sistema de escaparate típico podría involucrar código para calcular un descuento:

if (product.quantity > 100 && product.quantity < 500) { product.discount = 2; } else if (product.quantity >= 500 && product.quantity < 2000) { product.discount = 5; } else if (product.quantity >= 2000) { product.discount = 10; } 

Un motor de reglas reemplaza lo anterior con código que se ve así:

 ruleEngine.applyRules(product); 

Depende de usted decidir si poner una consola de administración de reglas en manos de personas no técnicas es algo bueno o no 🙂

Más detalles en ¿Debo usar un motor de reglas? ¿Por qué usar un motor de reglas? , Algunas pautas para decidir si usar un motor de reglas y en Google .

¿Hay otros jugadores?

Otros jugadores incluyen JRules, Corticon (JRules es la OMI más famosa, lo que no significa lo mejor).

¿Cómo se comparan en otras áreas como la facilidad de uso, el rendimiento, el nivel de integración con su código?

No puedo decirte con precisión, solo tengo una pequeña experiencia (positiva) con Drools. Pero obtendrás algunos comentarios de publicaciones de blog como JBoss Drools vs ILog JRules, una historia anecdótica (asegúrate de leerla) o Trabajar con Drools desde la perspectiva de JRules . Estoy seguro de que puedes encontrar más de ellos en Google (pero le daría una oportunidad a Drools).

Estamos evaluando reglas ahora para su uso con nuestro servidor de aplicaciones. Hemos encontrado OpenRules , que es fácil de integrar con Java y, en la medida en que nuestras pruebas han demostrado, lo suficientemente rápido. La principal ventaja de OpenRules sobre las otras es la forma en que se modifican y manejan las reglas. Todo sucede en las tablas de Excel, que es la forma más fácil para los no progtwigdores. Todos los involucrados, incluso los no técnicos, entendieron todo perfectamente 🙂

También tenemos drools integrados, pero las reglas son mucho más complicadas de entender ya que es un enfoque más programático. Es por eso que, lo más probable, nos atendremos a OpenRules.

Teníamos una pregunta similar con nosotros, finalmente recogimos Drools, uno debería usar drools si tiene lo siguiente:

  • La lógica de negocios que cree que se está saturando de múltiples condiciones si se debe a diversos escenarios
  • Tendrás demanda creciente de aumento en la complejidad.
  • Los cambios en la lógica de negocios serían frecuentes (1 – 2 veces al año también serían frecuentes)
  • Su servidor tiene suficiente memoria ya que es una herramienta hambrienta de memoria, que proporciona rendimiento al costo de la memoria

Ten más detalles en la siguiente URL

Solo agregando que muchas personas están buscando algo más parecido a la administración de si se cumplen ciertas condiciones para habilitar o deshabilitar ciertas funciones en una aplicación.

Me cansé de volver a implementar el mismo patrón una y otra vez a donde iba, así que decidí hacer un proyecto de OSS llamado Roolie http://sourceforge.net/projects/roolie/

Simplemente lo resolví y, como no se han reportado errores desde 2010 cuando se lanzó, lo actualicé a la versión 1.0 sin cambios adicionales a los necesarios para alojarlo en Maven Central (que estoy en proceso de hacer). ).

Básicamente, JSR-94 es una exageración para la mayoría de las cosas, y hay una gran curva de aprendizaje y gastos generales que van de la mano con las ofertas actuales. Eso está bien si eso es lo que quieres. Pero si solo desea encadenar reglas simples escritas en Java junto con XML para mantener sus pruebas de estado, Roolie es una forma muy rápida de hacerlo. Sin dependencias y sin curva de aprendizaje.

Cuando necesitábamos un motor de reglas, decidimos rodar el nuestro, porque los disponibles eran demasiado complicados para nuestras tareas simples. Si tiene experiencia remota con las expresiones de análisis que los usuarios pueden poner, esto no es muy difícil de hacer. En nuestro caso, la mayoría de las especificaciones las maneja un XSD y solo algunos de los campos se analizan más.