2010-11-05 88 views
3

我有一個應用程序,將需要一個「動態業務規則」引擎。一些業務規則變化非常頻繁。然後一些申請有限的一組商業賬戶。例如:根據客戶的規模,銷售人員的數量,產品的數量,地點等,我的客戶有一個符合商店資格的流程。但他管理着不同的帳戶,每個帳戶對每個屬性都給予不同的「權重」。在軌道上的紅寶石動態業務規則引擎

如何使用Ruby實現此引擎?我知道Java有流口水,但我覺得流口水令人討厭和複雜。我寧願沒有如果你確定一個規則引擎是你需要使用JRuby的...

問候,

Rubem

+0

誰會定義可能的規則程序?你或用戶​​?你可以將它們編寫爲某個對象的方法,然後將方法名稱添加爲帳戶對象的屬性? 'Rules.send(self.rule_name,self.rule_params)'? – Arsen7 2010-11-05 08:40:18

+0

用戶。預先編寫所有可能的規則變體是不可能的。 – razenha 2010-11-05 12:34:55

回答

6

,你需要找到一個你可以在Ruby中使用。快速的谷歌搜索提出了Rools(http://rools.rubyforge.org/)和Ruby Rules(http://xircles.codehaus.org/projects/ruby-rules)。但我不確定任何一個項目的狀態。使用JRuby和Drools可能是你最好的選擇,但是再一次,我是一個Java開發人員和一個大的Drools倡導者。 :)

不知道所有的細節,這是很難說如何實現。這也取決於你希望如何更新規則。一種方法是編寫一系列與此類似的規則:「如果一家商店存在超過50名銷售人員,並且商店沒有更新其體重以反映這一點,則更新商店的重量。」但是,以某種方式,您可以將其與硬編碼進行比較。

更好的方法可能是創建具有需要滿足權重才能應用的條件的Weight對象。然後,您可以編寫一條匹配「權重」和「商店」的規則:「如果商店存在與權重條件匹配的商店,並且商店尚未將該權重分配給該商店,則將該稱量添加至商店。」然後,業務人員可以創建和更新權重,可能在Web前端數據庫中,而不是維護規則。

+0

我喜歡你的建議:) – razenha 2010-11-23 05:23:14

+0

隨意接受它作爲答案。 ;)我很想知道你最終使用了什麼規則引擎。當我決定規則引擎很可能是未來的必需品時,我剛剛學習Ruby/Rails。所以,我回到了Java和Drools。有良好的,維護良好的Ruby規則引擎嗎? – spaaarky21 2010-12-28 06:31:10

+0

您還可以使用其他產品,使您可以讓REST API服務器和您的應用程序在服務層中進行交互。所以你不需要擔心技術堆棧,然後你會有更多的選擇。例如,您可以將[JavaScript客戶端庫](http:// http://www.flexrule.com/archives/javascript-decision-as-a-service/)與服務通信以執行您的業務規則在一個REST API接口中。 – 2015-05-26 04:15:39