2009-02-20 8 views
16

Je suis en train d'essayer de définir les exigences d'un client pour un moteur de tarification dans un environnement de vente au détail. Nous avons défini le moteur de tarification comme fonctionnant sur un ensemble de règles de tarification qui établit de nouveaux points de prix pour les articles achetés en fonction des articles existants déjà dans le panier.Création de modèles et d'algorithmes pour appliquer des règles aux faits

Une simple règle de prix pourrait être OBTENEZ UNE CHEMISE 40% DE RABAIS. Une règle plus complexe pourrait être OBTENEZ UNE CHEMISE GRATUITE QUAND VOUS ACHETEZ 2 PANTALONS ET DÉPENSEZ AU MOINS 30 $.

La pratique générale de l'industrie pour appliquer ces règles semble être le meilleur prix final pour le client, mais il est apparu qu'il pourrait être nécessaire d'avoir une option de classement ainsi qu'une option d'empilage. Le classement permettra une règle qui, autrement, serait perdante pour gagner. Empiler permettrait à plusieurs règles de gagner. J'ai passé en revue de nombreux articles sur SO concernant les moteurs de règles et j'ai besoin d'aide pour déterminer si je devrais examiner l'un de ces outils dans le cadre de ma conception ou sinon quels modèles et algorithmes de conception pourraient être applicables à la conception. Il est clair que c'est potentiellement un problème NP, et le nombre d'éléments (faits) que je vais traiter pourrait dépasser 100+ par transaction avec la réévaluation nécessaire chaque fois qu'un nouvel élément est ajouté.

+1

Curieux quelle méthode avez-vous fini par aller avec? Était-ce le bon choix? –

+0

Nous avons créé notre propre moteur de règles qui a fini par utiliser une variété de techniques pour résoudre le problème. Je n'ai pas d'informations à partager ici, car cela a été résolu et mis en œuvre il y a plus de 7 ans. Nous avons fini par utiliser une approche de localisation et appliquer une pondération aux localisations. Nous avons ensuite utilisé un algorithme de type routage à moindre coût pour déterminer la meilleure combinaison de prix. Le travail fini s'est avéré être un de mes projets préférés - nous l'avons écrit comme un module indépendant qui pourrait être utilisé ailleurs. Règles + jeu d'entrées -> jeu de sortie payant. – Bill

Répondre

2

Un moteur de règles est très approprié. Si le moteur de règles est fiable, s'intègre dans le reste de votre architecture/application et est nécessaire pour une fonctionnalité de base de votre application, puis allez-y. Si le moteur de règles n'est qu'une petite partie de votre application ou pire encore: du code, qui n'est pas le même langage de programmation que le reste de votre application ... alors vous devriez reconsidérer. Chaque partie de l'application, qui est externe à votre application principale (même la base de données est externe à une application Java) est un risque.

Ensuite, il y a deux possibilités: Programmer un moteur de règles simple par vous-même ou utiliser la stratégie ou le modèle d'état.

5

Il y a un bon article de Martin Fowler sur le moteur de règles et où les utiliser. Voir si aide

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

+0

Je regarde ça. J'ai lu son volume de travail, mais je n'ai pas sauté récemment sur son matériel en ligne. – Bill

Questions connexes