2010-01-30 90 views

Respuesta

13

Estamos evaluando las reglas ahora para su uso con nuestro servidor de aplicaciones. Nos hemos topado con OpenRules, que es fácil de integrar con Java y, en la medida en que nuestras pruebas lo han demostrado, lo suficientemente rápido. La principal ventaja de OpenRules sobre los demás 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 programadores. Todo el mundo involucrado, incluso las personas no técnicas, 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, muy probablemente, nos apegaremos a OpenRules.

+14

Drools también es compatible con las normas editadas en Excel, ya través de una interfaz web. – retronym

118

¿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 negocio de la lógica de la aplicación. El artículo Does Your Project Need a Rule Engine tiene un buen ejemplo:

Por ejemplo, un sistema típico del escaparate podría implicar 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 sustituye a la anterior con código que se parece esto:

ruleEngine.applyRules(product); 

hasta que d ecide ya sea poniendo una consola de administración regla en las manos de personas sin conocimientos técnicos es una buena cosa o no :)

Más detalles en Should I use a Rules Engine?, Why use a Rule Engine?, Some Guidelines For Deciding Whether To Use A Rules Engine y en Google.

¿Hay algún otro jugador?

Otros jugadores incluyen JRules, Corticon (JRules es el IMO más famoso, lo que no significa que sea el mejor).

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

No puedo decirlo con precisión, solo tengo una pequeña experiencia (positiva) con Drools. Pero obtendrá comentarios de publicaciones de blogs como JBoss Drools vs ILog JRules - an anecdotal story (asegúrese de leerlo) o Working with Drools from a JRules perspective. Estoy seguro de que puedes encontrar más de ellos en Google (pero le daría una oportunidad a Drools).

+0

su respuesta se ve bien. ¿Podrías decirme dónde usar baba y a Jess? Básicamente, estoy esperando la respuesta más relacionada diff. b/w drool y Jess. – Tony

+7

Wow, @Pascal, ese ejemplo de cantidad/descuento de producto es una verdadera WTF. Diga la cantidad es 5,000. El primer IF se evalúa como verdadero, los FIs ELSE nunca se evalúan. Poner ese tipo de lógica empresarial en un motor de reglas no ayudará nada, aunque podría dificultar la búsqueda del error. – DOK

+0

En su defensa, ese ejemplo fue de ese primer artículo. No estoy tan seguro de lo creíble que uno ya está buscando ... :) – Jeb

2

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

+6

Los motores de reglas utilizan algoritmos bien establecidos (como el encadenamiento directo y el algoritmo Rete) para escalar a problemas no triviales. Si simplemente está evaluando expresiones, una biblioteca existente como MVEL puede ser útil. – jevon

3

Simplemente agregue que muchas personas están buscando algo más parecido a la gestión de si se cumplen ciertas condiciones para habilitar o deshabilitar ciertas características en una aplicación.

Me cansé de volver a implementar el mismo patrón una y otra donde quiera que fuera, así que decidí hacer un proyecto de software libre para la que llamó Roolie http://sourceforge.net/projects/roolie/

acabo experto-izada y ya no ha habido errores reportados desde 2010 cuando fue lanzado, lo actualicé a v 1.0 sin más cambios que los requeridos para alojarlo en Maven Central (que estoy en proceso de hacerlo).

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

+1

Roolie afirma que tiene licencia MIT en SourceForge, pero el código informa LGPLv3. Esto esencialmente significa que es dudoso usarlo en cualquier producto comercial (y en algunos productos de código abierto, también). Ver http://nmav.gnutls.org/2013/03/the-perils-of-lgplv3.html. – ingyhere

6

Tuvimos pregunta similar con nosotros, que finalmente recogió Drools, se debe utilizar drools si ha siguiente:

    lógica
  • de negocios que usted piensa que es cada vez lleno de múltiples si las condiciones debido a la variedad de escenarios
  • Usted tendrá la creciente demanda de aumento de la complejidad
  • cambios lógicos
  • el negocio serían frecuentes (1 - 2 veces al año sería también frecuente)
  • de su servidor tiene suficiente cantidad de memoria, ya que es una herramienta que consumen mucha memoria , proporciona rendimiento en el coste de la memoria

tener más detalles en la siguiente URL

Cuestiones relacionadas