我需要计算服务的价格。价格取决于许多规则,这些规则可能类似于:
- 使用服务的星期几
- 使用服务的日期(可能重叠)
- 客户类型(会员返利)
- 使用的服务数量
- 服务组合(如果同时使用服务a和服务b,则更便宜)
- 成本上限
- 最低价格
其中一些规则可能是矛盾的(即回扣会导致价格低于最低价格),有些可以合并。此外,基于时间标准的规则有点棘手,因为价格需要根据当前有效价格计算:如果价格是:
- 5美元,从09:00到12:00
- 7美元从12:01到08:59
如果您在11:00至13:00使用该服务,则总价为12美元(第一小时5美元,第二小时7美元)
关于如何实现这一点,有什么提示吗?我在考虑使用规则引擎,但不确定如何启动。
我看了看https://github.com/ulfurinn/wongi-engine和https://github.com/Ruleby/ruleby目前为止
此外,我发现了一个类似的问题,其中一个回复建议在纯ruby中实际实现它:基于规则计算价格(ruby规则引擎)
不幸的是,定价模式没有讨论。。。我没有决定有那么复杂的东西:-(
除了规则的复杂性之外,您可能会考虑的一个方面是这些规则的更改频率以及您需要对这些更改做出多快反应。我会问自己以下问题:
- 您想动态编辑规则并将更改热部署到生产中吗
- 您希望业务能够根据规则执行CRUD操作吗
回答这些问题也将帮助您决定哪种规则引擎更适合您的最终解决方案。规则引擎的实现非常少,有些是轻量级的,非常容易使用,但不允许动态编辑规则;另一些是重型的,有点难以使用,但将提供编辑器和工具,帮助您为客户和业务人员实现更健壮、更灵活的解决方案。
对于规则引擎,有很多很好的方法可以使用,Drools就是其中之一,它将允许您以相当简单的方式定义规则。Drools还附带了一个名为Guvnor的工具,只要配置得当,您就可以根据规则执行CRUD操作,并将其部署到生产中。Drools还允许您创建时间激活规则,使用这些日期/时间基准规则可以让您的生活变得轻松。
有很多规则引擎框架可以使用,但无论你选择哪种框架,你都要做很多工作来使这些规则可用。
您可以在此页面中看到一些规则引擎示例:http://tech.gaeatimes.com/index.php/archive/top-10-java-business-rule-engines/
如果你不想使用那些繁重的规则引擎,我们正在创建一个非常易于使用的轻量级规则引擎。是一个基于Java的规则引擎,规则将嵌入代码中,但我认为它具有使用我们的组/规则层次结构执行和执行策略构建解决方案所需的所有功能,如果您想阅读更多信息,请查看EZ规则文档@Opnitech:http://opnitech.com/content/products/ez-rules/代码可用@Github-EZ规则