2009-02-20 67 views
16

我正在努力确定客户对零售环境中定价引擎的要求。我们已将定价引擎定义为按照一组定价规则进行操作,这些定价规则基于购物车中已有的物品确定购买物品的新价格点。将规则应用于事实的设计模式和算法

一个简单的价格规则可能是获得一件衬衫40%的折扣。 更复杂的规则可能是当您购买2条裤子并赠送至少30美元时获得免费衬衫

应用这些规则的一般行业惯例似乎对客户来说是最终的最佳价格,但它已经出现,可能需要排名选项以及堆栈选项。

排名将允许一个规则,否则将失去赢。堆叠可以让多个规则获胜。

我在这里回顾了很多有关规则引擎的帖子,我需要帮助确定是否应该将这些工具之一作为我的设计的一部分,或者如果不是可以应用哪些设计模式和算法该设计。

很明显,这可能是一个NP问题,而且我将要处理的物品(事实)数量可能会超过每次交易100+,并且每次添加新物品时都需要重新定价。

+1

好奇你最终会用哪种方法?这是正确的选择吗? – 2016-01-20 15:23:42

+0

我们创建了自己的规则引擎,最终使用各种技术来解决问题。我没有信息在这里分享,因为这已经在7年前解决和实施了。我们最终使用了某种本地化方法,并对本地化应用权重。然后,我们使用最低成本路由类型的算法来确定价格交易的最佳组合。完成的工作原来是我最喜欢的项目之一 - 我们将其作为一个可以在其他地方使用的独立模块编写。规则+输入集 - >定价输出集。 – Bill 2017-01-11 20:16:57

回答

2

规则引擎非常适合。如果规则引擎是可靠的,则适合您的架构/应用程序的其余部分,并且需要您的应用程序的核心功能,然后继续使用它。

如果规则引擎只是您应用程序的一小部分,或者更糟糕:是一些代码,它与您的其他应用程序不是相同的编程语言......那么您应该重新考虑。每个应用程序部分都是您的核心应用程序的外部(即使数据库是Java应用程序的外部数据库)也是一种风险。

然后有两种可能性:自己编写一个简单的规则引擎,或者使用策略或状态模式。