जावा नियम इंजन के पेशेवरों और विपक्ष [बंद]


108

जावा नियम इंजन JESS और Drools को अपनाने के लिए पेशेवरों और विपक्ष क्या हैं ? क्या कोई अन्य खिलाड़ी हैं?

मैं समझता हूं कि ड्रोल्स ओपन सोर्स है और जेएसई नहीं है, लेकिन वे आपके कोड के साथ उपयोग, प्रदर्शन, एकीकरण के स्तर जैसे अन्य क्षेत्रों में तुलना कैसे करते हैं?

जवाबों:


128

जावा नियम इंजन JESS और Drools को अपनाने के लिए पेशेवरों और विपक्ष क्या हैं?

यदि आपको एप्लिकेशन लॉजिक से व्यावसायिक नियमों को अलग करने की आवश्यकता है, तो एक नियम इंजन का उपयोग करें। क्या आपका परियोजना जरूरत है एक नियम इंजन लेख एक अच्छा उदाहरण है:

उदाहरण के लिए, एक विशिष्ट स्टोरफ्रंट सिस्टम में छूट की गणना करने के लिए कोड शामिल हो सकता है:

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;
}

एक नियम इंजन उपरोक्त कोड की जगह लेता है जो इस तरह दिखता है:

ruleEngine.applyRules(product);

आपको यह तय करना है कि एक नियम व्यवस्थापक कंसोल को गैर-तकनीकी लोगों के हाथों में रखना एक अच्छी बात है या नहीं :)

में अधिक जानकारी चाहिए मैं एक नियम इंजन का उपयोग करें? , एक नियम इंजन का उपयोग क्यों करें? , एक नियम इंजन का उपयोग करने के लिए और Google पर निर्णय लेने के लिए कुछ दिशानिर्देश

क्या कोई अन्य खिलाड़ी हैं?

अन्य खिलाड़ियों में JRules शामिल हैं, Corticon (JRules सबसे प्रसिद्ध IMO है - जिसका अर्थ सबसे अच्छा नहीं है)।

वे आपके कोड के साथ उपयोग की आसानी, प्रदर्शन, एकीकरण के स्तर जैसे अन्य क्षेत्रों में तुलना कैसे करते हैं?

आपको ठीक-ठीक नहीं बता सकता, मेरे पास ड्रोल के साथ केवल थोड़ा (सकारात्मक) अनुभव है। लेकिन आपको JBoss Drools बनाम ILog JRules जैसे ब्लॉग पोस्ट से कुछ फीडबैक मिलेगा - एक किस्सा कहानी (इसे पढ़ना सुनिश्चित करें) या JRules परिप्रेक्ष्य से Drools के साथ काम करना । मुझे यकीन है कि आप उनमें से अधिक Google पर पा सकते हैं (लेकिन मैं ड्रोल को एक कोशिश दूंगा)।


1
आपका जवाब अच्छा लग रहा है। क्या आप मुझे बता सकते हैं कि ड्रोल का उपयोग कहां और जेस को कहां करना है? मूल रूप से, मैं उत्तर से संबंधित अधिक अंतर की उम्मीद कर रहा हूं। b / w ड्रॉल और जेस।
टोनी

7
वाह, @ पास्कल, उस उत्पाद की मात्रा / छूट का उदाहरण एक वास्तविक डब्ल्यूटीएफ है। कहो मात्रा 5000 है। पहला IF सही का मूल्यांकन करता है, ELSE IF का मूल्यांकन कभी नहीं किया जाता है। एक नियम इंजन में उस तरह के व्यावसायिक तर्क को रखना कुछ भी मदद करने वाला नहीं है, हालांकि यह बग को खोजने में अधिक कठिन हो सकता है।
DOK

अपने बचाव में वह उदाहरण उस पहले लेख से था। ऐसा नहीं है यकीन है कि कैसे विश्वसनीय है कि एक अब और की तलाश में ... :)
जेब

6
नियमों को गैर-तकनीकी हाथों में रखने के खतरों का एक अच्छा उदाहरण है।
पेस

1
नियम इंजन का उपयोग क्यों करें? सूचीबद्ध लिंक्स में सबसे अच्छा है
अरविंद यारम

16

हम अपने एप्लिकेशन सर्वर के साथ उपयोग के लिए अब नियमों का मूल्यांकन कर रहे हैं। हम ओपनरुल्स में आ गए हैं , जो कि जावा के साथ एकीकृत करना आसान है और जहां तक ​​हमारे परीक्षण ने दिखाया है, काफी तेजी से। दूसरों के ऊपर OpenRules का मुख्य लाभ नियमों को संशोधित और नियंत्रित करने का तरीका है। यह सब एक्सेल तालिकाओं में होता है, जो गैर-प्रोग्रामर के लिए सबसे आसान तरीका है। हर कोई, यहां तक ​​कि गैर-तकनीकी लोग भी शामिल थे, सब कुछ पूरी तरह से समझ गए :-)

हमारे पास ड्रॉल्स भी एकीकृत हैं, लेकिन नियम समझने के लिए अधिक जटिल हैं क्योंकि यह अधिक प्रोग्रामेटिक दृष्टिकोण है। इसलिए हम - सबसे अधिक संभावना है - OpenRules से चिपके रहेंगे।


19
ड्रोल एक्सेल में और वेब इंटरफ़ेस के माध्यम से संपादित नियमों का भी समर्थन करता है।
रेट्रो

7

हमारे साथ भी ऐसा ही सवाल था, हमने अंत में ड्रोल को उठाया, यदि आपको निम्नलिखित में से किसी एक का उपयोग करना चाहिए:

  • व्यावसायिक तर्क जो आपको लगता है कि यदि परिदृश्यों की विविधता के कारण कई के साथ बरबाद हो रहा है
  • आपके पास जटिलता में वृद्धि की बढ़ती मांग होगी
  • व्यापार तर्क परिवर्तन अक्सर होगा (वर्ष में 2 बार भी अक्सर होगा)
  • आपके सर्वर में मेमोरी पर्याप्त है क्योंकि यह मेमोरी हंगर टूल है, यह मेमोरी की कीमत पर प्रदर्शन प्रदान करता है

निम्नलिखित URL पर अधिक जानकारी है


3

बस यह जोड़कर कि बहुत से लोग इस बात को प्रबंधित करने के लिए कुछ और तलाश कर रहे हैं कि क्या कुछ शर्तों को किसी एप्लिकेशन में सक्षम करने या अक्षम करने के लिए कुछ शर्तें पूरी की गई हैं।

मैं हर जगह एक ही पैटर्न को फिर से लागू करने से थक गया, इसलिए मैंने एक OSS प्रोजेक्ट बनाने का फैसला किया, जिसे Roolie http://sourceforge.net/projects/roolie/ कहा जाता है।

मैंने इसे केवल maven-ized कर दिया है और 2010 के बाद से इसे जारी किए जाने के बाद से कोई बग रिपोर्ट नहीं की गई है, मैंने इसे V 1.0 में अपग्रेड कर दिया है, इसके अलावा Maven Central में इसे होस्ट करने की आवश्यकता वाले अन्य बदलावों के अलावा (जो मैं करने की प्रक्रिया में हूँ) )।

मूल रूप से JSR-94 ज्यादातर चीजों के लिए ओवरकिल है, और एक विशाल लर्निंग कर्व और ओवरहेड है जो वर्तमान प्रसाद के साथ जाता है। यदि आप चाहते हैं कि यह ठीक है। लेकिन अगर आप सिर्फ अपने राज्य परीक्षण को बनाए रखने के लिए एक्सएमएल के साथ-साथ जावा में लिखे सरल नियमों को श्रृंखलाबद्ध करना चाहते हैं, तो रूली इसे करने का एक बहुत तेज़ तरीका है। न निर्भरता और न सीखने की अवस्था।


2
Roolie ने कहा कि यह MIT SourceForge पर लाइसेंस प्राप्त है, लेकिन कोड LGPLv3 की रिपोर्ट करता है। यह अनिवार्य रूप से इसका मतलब है कि यह किसी भी व्यावसायिक उत्पाद में उपयोग करने के लिए संदिग्ध है (और कुछ ओपन सोर्स उत्पादों में भी)। Nmav.gnutls.org/2013/03/the-perils-of-lgplv3.html देखें ।
ingyhere

2

जब हमें एक नियम इंजन की आवश्यकता थी, तो हमने अपने स्वयं के रोल करने का निर्णय लिया, क्योंकि हमारे सरल कार्यों के लिए उपलब्ध चीजें बहुत जटिल थीं। यदि आप दूरस्थ रूप से उन पार्सिंग अभिव्यक्तियों के साथ अनुभवी हैं, जिन्हें उपयोगकर्ता डाल सकते हैं, तो ऐसा करना बहुत कठिन नहीं है। हमारे मामले में, अधिकांश कल्पना एक एक्सएसडी द्वारा नियंत्रित की जाती है और केवल कुछ क्षेत्रों को आगे बढ़ाया जाता है।


6
नियम इंजन गैर-तुच्छ समस्याओं को हल करने के लिए अच्छी तरह से स्थापित एल्गोरिदम (जैसे फॉरवर्ड चेनिंग और रिट एल्गोरिथ्म) का उपयोग करते हैं। यदि आप केवल भावों का मूल्यांकन कर रहे हैं, तो एक मौजूदा पुस्तकालय जैसे कि एमवीईएल उपयोगी हो सकता है।
jevon
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.