Java kural motorlarının artıları ve eksileri [kapalı]


108

Java kural motorları JESS ve Drools'u benimsemenin artıları ve eksileri nelerdir? Başka oyuncu var mı?

Drools'un Açık Kaynak olduğunu ve JESS'in olmadığını anlıyorum, ancak kullanım kolaylığı, performans, kodunuzla entegrasyon seviyesi gibi diğer alanlarda nasıl karşılaştırılırlar?

Yanıtlar:


128

Java kural motorları JESS ve Drools'u benimsemenin artıları ve eksileri nelerdir?

İş kurallarını uygulama mantığından ayırmanız gerekirse bir kural motoru kullanın. Project Need bir kural altyapısı mu makale iyi bir örnek vardır:

Örneğin, tipik bir vitrin sistemi, bir indirimi hesaplamak için bir kod içerebilir:

if (product.quantity > 100 && product.quantity < 500) {
  product.discount = 2;
} else if (product.quantity >= 500 && product.quantity < 2000) {
  product.discount = 5;
} else if (product.quantity >= 2000) {
  product.discount = 10;
}

Bir kural motoru, yukarıdakileri şuna benzer bir kodla değiştirir:

ruleEngine.applyRules(product);

Teknik bilgisi olmayan kişilerin eline bir kural yönetici konsolu koymanın iyi bir şey olup olmadığına karar vermek size kalmış :)

Daha fazla ayrıntı Bir Kural Motoru kullanmalı mıyım? , Neden bir Kural Motoru kullanmalı? , Bir Kural Motorunun Kullanılıp Kullanılmayacağına Karar Vermek İçin ve Google'da Bazı Yönergeler .

Başka oyuncu var mı?

Diğer oyuncular arasında JRules, Corticon (JRules, en ünlü IMO'dur - bu en iyisi anlamına gelmez).

kodunuzla kullanım kolaylığı, performans, entegrasyon seviyesi gibi diğer alanlarda nasıl karşılaştırırlar?

Kesin olarak söyleyemem, sadece Drools ile biraz (olumlu) deneyimim var. Ancak JBoss Drools ve ILog JRules - anekdot niteliğinde bir hikaye (okuduğunuzdan emin olun) veya JRules perspektifinden Drools ile Çalışma gibi blog gönderilerinden bazı geri bildirimler alacaksınız . Eminim daha fazlasını Google'da bulabilirsin (ama Drools'u deneyebilirim).


1
cevabın iyi görünüyor Bana saçmalamayı nerede ve Jess'e nerede kullanacağımı söyler misin? Temel olarak, cevabın daha ilgili farkları bekliyorum. s / b saçmalamak ve Jess.
Tony

7
Vay canına, @Pascal, bu ürün miktarı / indirim örneği gerçek bir WTF. Miktarın 5.000 olduğunu söyle. İlk EĞER doğru olarak değerlendirilir, ELSE EĞER hiçbir zaman değerlendirilmez. Bu tür bir iş mantığını bir kural motoruna koymak, hatayı bulmayı daha zor hale getirse de hiçbir şeye yardımcı olmayacaktır.
DOK

Savunmasında bu örnek o ilk makaleden alınmıştır. Artık birinin ne kadar inandırıcı göründüğünden emin değilim ... :)
Jeb

6
Kuralların kontrolünü teknik olmayan ellere koymanın tehlikelerine güzel bir örnek.
Pace

1
Neden bir Kural Motoru kullanmalı? listelenen bağlantılar arasında en iyisi
Aravind Yarram

16

Uygulama sunucumuzla kullanmak için şimdi kuralları değerlendiriyoruz. Biz rastlamak OpenRules yeterince hızlı, bildiğim kadarıyla bizim test gösterdiği gibi, Java ile bütünleştirmek ve kolay olan. OpenRules'in diğerlerine göre temel avantajı, kuralların değiştirilme ve yönetilme şeklidir. Her şey, programcı olmayanlar için en kolay yol olan Excel tablolarında gerçekleşir. Dahil olan herkes, teknik olmayan kişiler bile her şeyi mükemmel bir şekilde anladı :-)

Ayrıca salyaları entegre ettik, ancak daha programatik bir yaklaşım olduğu için kuralları anlamak çok daha karmaşık. Bu yüzden büyük olasılıkla OpenRules'e bağlı kalacağız.


19
Drools ayrıca Excel'de ve bir web arayüzü aracılığıyla düzenlenen kuralları da destekler.
retronym

7

Bizimle de benzer bir sorumuz vardı, sonunda Drools'u aldık, eğer aşağıdakilere sahipseniz, ağızdan su kullanmalısınız:

  • Çeşitli senaryolar nedeniyle birden fazla if koşuluyla dağıldığını düşündüğünüz iş mantığı
  • Karmaşıklıkta artan talebiniz olacak
  • İş mantığı değişiklikleri sık olur (yılda 1-2 kez de sık olur)
  • Sunucunuz, belleğe aç bir araç olduğu için yeterli belleğe sahiptir, bellek maliyetine performans sağlar

Aşağıdaki URL'de daha fazla ayrıntı var


3

Pek çok kişinin, bir uygulamadaki belirli özellikleri etkinleştirmek veya devre dışı bırakmak için belirli koşulların karşılanıp karşılanmadığını yönetmeye benzer bir şey aradığını ekliyoruz.

Gittiğim her yerde aynı modeli tekrar tekrar uygulamaktan yoruldum, bu yüzden Roolie http://sourceforge.net/projects/roolie/ adında bir OSS projesi yapmaya karar verdim.

Henüz geliştirdim ve piyasaya sürüldüğünde 2010'dan beri herhangi bir hata bildirilmediğinden, onu Maven Central'da barındırmak için gerekenler dışında herhangi bir değişiklik yapmadan v 1.0'a yükselttim (ki bunu yapma sürecindeyim ).

Temel olarak JSR-94 çoğu şey için aşırıdır ve mevcut tekliflerle birlikte büyük bir öğrenme eğrisi ve ek yükü vardır. İstediğin buysa sorun değil. Ancak, durum testlerinizi sürdürmek için Java ile yazılmış basit kuralları XML ile birlikte zincirlemek istiyorsanız, Roolie bunu yapmanın çok hızlı bir yoludur. Bağımlılık yok ve öğrenme eğrisi yok.


2
Roolie, MIT'nin SourceForge'da lisanslı olduğunu belirtiyor, ancak kod LGPLv3'ü bildiriyor. Bu, esasen herhangi bir ticari üründe (ve bazı Açık Kaynak ürünlerinde de) kullanılmasının şüpheli olduğu anlamına gelir. Nmav.gnutls.org/2013/03/the-perils-of-lgplv3.html adresine bakın .
ingyhere

2

Bir kural motoruna ihtiyacımız olduğunda, kendi kuralımızı kullanmaya karar verdik, çünkü mevcut olanlar basit görevlerimiz için çok karmaşıktı. Kullanıcıların ekleyebileceği ifadeleri ayrıştırma konusunda uzaktan bile deneyimliyseniz, bunu yapmak çok da zor değildir. Bizim durumumuzda, spesifikasyonun çoğu bir XSD tarafından ele alınır ve alanların sadece birkaçı daha fazla ayrıştırılır.


6
Kural motorları, önemsiz olmayan problemlere ölçeklendirmek için iyi kurulmuş algoritmalar (ileri zincirleme ve Rete algoritması gibi) kullanır. Sadece ifadeleri değerlendiriyorsanız, MVEL gibi var olan bir kitaplık yararlı olabilir.
jevon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.