2009-02-20 17 views
16

Estoy tratando de determinar los requisitos de un cliente para un motor de fijación de precios en un entorno minorista. Hemos definido el motor de fijación de precios como operando en un conjunto de reglas de fijación de precios que establecen nuevos puntos de precio para los artículos comprados basados ​​en los artículos existentes que ya están en el carrito de compras.Patrones de diseño y algoritmos para aplicar reglas a los hechos

Una regla de precio simple podría ser OBTENER UNA CAMISETA 40% DE DESCUENTO. Una regla más compleja podría ser OBTENGA UNA CAMISA GRATUITA AL COMPRAR 2 PANTALONES Y GASTAR AL MENOS $ 30.

La práctica general de la industria para la aplicación de estas normas parece ser definitiva mejor precio para el cliente, pero ha llegado que podría existir la necesidad de ser una opción de clasificación, así como una opción de apilamiento.

Clasificación permitirá una regla que de lo contrario perderá salir a ganar. El apilamiento permitiría ganar múltiples reglas.

He revisado muchas de las publicaciones aquí en SO sobre motores de reglas y necesito ayuda para determinar si debería mirar una de estas herramientas como parte de mi diseño o si no qué patrones de diseño y algoritmos podrían ser aplicables a el diseño.

Está claro que esto es potencialmente un problema de NP, y la cantidad de elementos (hechos) con los que trataré podría exceder de 100+ por transacción con recargos necesarios cada vez que se agrega un nuevo artículo.

+1

curioso método que acabaste con ir? ¿Fue la elección correcta? –

+0

Creamos nuestro propio motor de reglas que terminó usando una variedad de técnicas para resolver el problema. No tengo información para compartir aquí, ya que esto se resolvió e implementó hace más de 7 años. Terminamos usando algún tipo de enfoque de localización y aplicando una ponderación a las localizaciones. Luego usamos un tipo de algoritmo de enrutamiento de menor costo para determinar la mejor combinación de ofertas de precio. El trabajo terminado resultó ser uno de mis proyectos favoritos, lo escribimos como un módulo independiente que podría usarse en otros lugares. Reglas + conjunto de entrada -> conjunto de salida con precio. – Bill

Respuesta

2

Un motor de reglas es muy adecuado. Si el motor de reglas es confiable, se adapta al resto de su arquitectura/aplicación y es necesario para una función principal de su aplicación, entonces, intente hacerlo.

Si el motor de reglas es sólo una pequeña parte de ti aplicación o lo que es peor: es un código, que no es el mismo lenguaje de programación que el resto de ustedes aplicación ... entonces usted debe reconsiderar. Cada parte de la aplicación, que es externa desde su aplicación central (incluso la base de datos es externa a una aplicación Java) es un riesgo.

entonces hay dos posibilidades: Programa de un motor de reglas simples por su cuenta o hacer uso de la estrategia o el modelo de Estado.

5

Hay un buen artículo de Martin Fowler en el motor de reglas y dónde utilizarlos. A ver si ayuda a

http://www.martinfowler.com/bliki/RulesEngine.html

+0

Estoy investigando esto. He leído su volumen de trabajo, pero no he saltado a través de su material en línea recientemente. – Bill

Cuestiones relacionadas