我有一个需要“动态业务规则”引擎的应用程序。一些业务规则变化非常频繁。其中一些申请了一组有限的商业账户。例如:我的客户有一个流程,根据他们的规模、销售人员数量、产品数量、位置等来确定商店的资格。但是他管理不同的帐户,每个帐户对每个属性赋予不同的“权重”。
如何使用 Ruby 实现这个引擎?我知道 Java 有口水,但我发现口水烦人和复杂。而且我更喜欢不必使用 JRuby ......
问候,
鲁本
我有一个需要“动态业务规则”引擎的应用程序。一些业务规则变化非常频繁。其中一些申请了一组有限的商业账户。例如:我的客户有一个流程,根据他们的规模、销售人员数量、产品数量、位置等来确定商店的资格。但是他管理不同的帐户,每个帐户对每个属性赋予不同的“权重”。
如何使用 Ruby 实现这个引擎?我知道 Java 有口水,但我发现口水烦人和复杂。而且我更喜欢不必使用 JRuby ......
问候,
鲁本
如果您确定您需要一个规则引擎,那么您需要找到一个可以在 Ruby 中使用的引擎。快速的 Google 搜索找到了 Rools (http://rools.rubyforge.org/) 和 Ruby Rules (http://xircles.codehaus.org/projects/ruby-rules)。不过,我不确定这两个项目的状态。将 JRuby 与 Drools 一起使用可能是您最好的选择,但话又说回来,我是一名 Java 开发人员,也是 Drools 的大力倡导者。:)
在不了解所有细节的情况下,很难说应该如何实施。它还取决于您希望如何更新规则。一种方法是编写类似于此的规则集合:“如果存在一家拥有超过 50 名销售人员的商店,并且该商店尚未更新其权重以反映这一点,则更新该商店的权重。” 但是,在某种程度上,您可以将其与硬编码进行比较。
更好的方法可能是创建权重对象,其中包含应用权重需要满足的标准。然后,您可以编写一条同时匹配权重和商店的规则:“如果存在与权重的条件匹配的商店,并且商店尚未分配该权重,则将权重添加到商店。” 然后业务人员可以只在 Web 前端数据库中创建和更新权重,而不是维护规则。