2011-12-14 10 views
5

estaba considerando el uso de Drools Fusion para implementar las reglas siguientes ejemplares:Drools Fusion for persistentes, eventos de larga ejecución

  • si el cliente compró dos mismos productos dentro de un año, se pone tercero gratis
  • para el gasto más de 200 USD en un máximo de tres transacciones consecutivas El cliente recibe un descuento
  • cuando el cliente está inactivo por más de un año se genera un recordatorio
  • un supervisor recibe una notificación cuando un pedido individual es mayor que un promedio el valor del pedido dentro de los últimos seis monhts
  • ... y así sucesivamente, estos son sólo ejemplos de la parte superior de mi cabeza

Todas estas reglas se pueden expresar fácilmente usando Drools Fusión. Sin embargo, después de crear un prototipo y revisar la documentación, parece que este producto es más adecuado para eventos transitorios a corto plazo (mercado de valores, toma de decisiones en tiempo real).

La pregunta es: ¿Es necesario almacenar todos los eventos en la memoria? (posiblemente millones de compras muy antiguas). Además, ¿pueden los eventos de la tienda Drools Fusion sobrevivir al reinicio del servidor? (Idealmente en la base de datos).

Sé eventos Drools de fusión son simplemente hechos en Drools Expert, por lo que tal vez la pregunta se puede ampliar a: puede Drools Experto persistir y cargar con pereza hechos?

Respuesta

3

Lo que puede hacer es cargar la información del historial por cliente cada vez que obtiene una nueva transacción para ese cliente. O cargue periódicamente la información para revisar a los clientes inactivos. Todos los ejemplos que mencionas parecen hechos para mí. Obviamente, puedes modelar todo como eventos, pero como mencionas eso hará que necesites tener todo en memoria. Para responder a su pregunta sobre la cantidad de eventos almacenados/manejados, primero debe responder la pregunta si la JVM admitirá tener todos esos objetos en la memoria.

Cheers

+0

Muchas gracias. ¿Esto significa que tanto Drools Expert como Drools Fusion requieren que todos los hechos/eventos permanezcan en la memoria todo el tiempo? Pensé que Drools podría cargar perezosamente datos para el procesamiento y descartar los que ya no son necesarios ... –

+2

Sí, eso significa que puede implementar la carga diferida para algunos hechos, pero el motor funcionará mejor, obviamente teniendo todos los datos en el principal memoria. Para eventos, tiene una función de administración automática del ciclo de vida. Eso significa que todos los eventos que no coinciden con ninguna regla se descartarán automáticamente. En Expertos, puede usar afirmaciones lógicas para eliminar hechos que ya no tienen una copia de seguridad para la regla que los inserta. – salaboy

Cuestiones relacionadas