Yanıtlar:
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).
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.
Bizimle de benzer bir sorumuz vardı, sonunda Drools'u aldık, eğer aşağıdakilere sahipseniz, ağızdan su kullanmalısınız:
Aşağıdaki URL'de daha fazla ayrıntı var
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.
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.