我有一个需要“动态业务规则”引擎的应用程序。一些业务规则经常更改。其中一些适用于一组有限的商业帐户。例如:我的客户根据他们的规模,销售人员数量,产品数量,位置等有一个他们对商店进行限定的流程。但他管理不同的帐户,每个帐户为每个属性提供不同的“权重”。
如何使用Ruby实现此引擎?我知道Java有流口水,但我觉得流口水很烦人而且很复杂。而且我更喜欢不必使用JRuby ......
此致
Rubem
答案 0 :(得分:6)
如果你确定你需要一个规则引擎,你需要找到一个可以在Ruby中使用的规则引擎。快速谷歌搜索带来了Rools(http://rools.rubyforge.org/)和Ruby Rules(http://xircles.codehaus.org/projects/ruby-rules)。我不确定这两个项目的状态。使用JRuby和Drools可能是你最好的选择,但话说回来,我是一名Java开发人员和Drools的大倡导者。 :)
在不知道所有细节的情况下,有点难以说明应如何实施。它还取决于您希望如何更新规则。一种方法是编写一系列类似于此的规则:“如果商店中存在超过50个销售人员并且商店没有更新其权重以反映这一点,那么更新商店的权重。”但是,您可以通过某种方式将其与硬编码进行比较。
更好的方法可能是创建Weight对象,其中包含要应用权重需要满足的条件。然后,您可以编写一个在权重和商店上匹配的规则:“如果存储符合权重的条件并且商店尚未分配权重,则将权重添加到商店。”然后,业务人员可以创建和更新权重,可能在Web前端数据库中,而不是维护规则。