我需要计算服务的价格。价格取决于很多规则,可能是这样的:
其中一些规则可能会相互矛盾(即退税会导致价格低于最低价格),有些可以合并。此外,基于时间标准的规则有点棘手,因为需要根据当前有效价格计算价格:如果价格是:
并且您从11:00到13:00使用该服务,然后总价格为12 $(第一个小时为5美元,第二个小时为7美元)
关于如何实现这一点的任何提示?我在考虑使用规则引擎,但不确定如何启动它。
到目前为止,我调查了https://github.com/ulfurinn/wongi-engine和https://github.com/Ruleby/ruleby。
此外,我发现了一个类似的问题,其中一个回复建议在纯红宝石中实际实现它:Calculating Prices based on Rules (Ruby Rule Engine)
不幸的是,定价模型不适合讨论......我没有决定要复杂的东西: - (
答案 0 :(得分:0)
除了规则的复杂性之外,您可以考虑的一个方面是这些规则的变化频率以及您需要多快才能对这些变更作出反应。我会问自己以下问题:
回答这些问题将有助于您确定哪种规则引擎更适合您的最终解决方案。有很少的规则引擎实现,有些是轻量级的,非常容易使用,但不允许动态编辑规则,其他很重,有点难以使用,但会提供编辑器和工具,将帮助您为客户和业务人员实施更强大,更灵活的解决方案。
您可以使用的规则引擎有很多好的方法, Drools 是其中之一,它允许您以一种公平的方式定义规则。 Drools还附带了一个名为 Guvnor 的工具,通过适当的配置,您可以执行CRUD操作规则并将其部署到生产中。 Drools还允许您创建时间激活规则,使用这些日期/时间基本规则让您的生活变得轻松。
您可以使用许多规则引擎框架,但无论您选择哪种框架,您都需要做很多工作才能使这些规则可用。
您可以在此页面中看到一些规则引擎示例:http://tech.gaeatimes.com/index.php/archive/top-10-java-business-rule-engines/
如果您不想使用那些繁重的规则引擎,我们正在创建一个非常易于使用的轻量级规则引擎。是一个Java基本规则引擎,规则将嵌入到代码中,但我认为使用我们的组/规则层次结构执行结合执行策略来构建解决方案所需的所有功能,如果您想阅读更多检查 EZ-Rules文档@ Opnitech :http://opnitech.com/content/products/ez-rules/代码可用 @ Github - EZ-Rules