जवाबों:
जावा नियम इंजन 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 पर पा सकते हैं (लेकिन मैं ड्रोल को एक कोशिश दूंगा)।
हम अपने एप्लिकेशन सर्वर के साथ उपयोग के लिए अब नियमों का मूल्यांकन कर रहे हैं। हम ओपनरुल्स में आ गए हैं , जो कि जावा के साथ एकीकृत करना आसान है और जहां तक हमारे परीक्षण ने दिखाया है, काफी तेजी से। दूसरों के ऊपर OpenRules का मुख्य लाभ नियमों को संशोधित और नियंत्रित करने का तरीका है। यह सब एक्सेल तालिकाओं में होता है, जो गैर-प्रोग्रामर के लिए सबसे आसान तरीका है। हर कोई, यहां तक कि गैर-तकनीकी लोग भी शामिल थे, सब कुछ पूरी तरह से समझ गए :-)
हमारे पास ड्रॉल्स भी एकीकृत हैं, लेकिन नियम समझने के लिए अधिक जटिल हैं क्योंकि यह अधिक प्रोग्रामेटिक दृष्टिकोण है। इसलिए हम - सबसे अधिक संभावना है - OpenRules से चिपके रहेंगे।
हमारे साथ भी ऐसा ही सवाल था, हमने अंत में ड्रोल को उठाया, यदि आपको निम्नलिखित में से किसी एक का उपयोग करना चाहिए:
निम्नलिखित URL पर अधिक जानकारी है
बस यह जोड़कर कि बहुत से लोग इस बात को प्रबंधित करने के लिए कुछ और तलाश कर रहे हैं कि क्या कुछ शर्तों को किसी एप्लिकेशन में सक्षम करने या अक्षम करने के लिए कुछ शर्तें पूरी की गई हैं।
मैं हर जगह एक ही पैटर्न को फिर से लागू करने से थक गया, इसलिए मैंने एक OSS प्रोजेक्ट बनाने का फैसला किया, जिसे Roolie http://sourceforge.net/projects/roolie/ कहा जाता है।
मैंने इसे केवल maven-ized कर दिया है और 2010 के बाद से इसे जारी किए जाने के बाद से कोई बग रिपोर्ट नहीं की गई है, मैंने इसे V 1.0 में अपग्रेड कर दिया है, इसके अलावा Maven Central में इसे होस्ट करने की आवश्यकता वाले अन्य बदलावों के अलावा (जो मैं करने की प्रक्रिया में हूँ) )।
मूल रूप से JSR-94 ज्यादातर चीजों के लिए ओवरकिल है, और एक विशाल लर्निंग कर्व और ओवरहेड है जो वर्तमान प्रसाद के साथ जाता है। यदि आप चाहते हैं कि यह ठीक है। लेकिन अगर आप सिर्फ अपने राज्य परीक्षण को बनाए रखने के लिए एक्सएमएल के साथ-साथ जावा में लिखे सरल नियमों को श्रृंखलाबद्ध करना चाहते हैं, तो रूली इसे करने का एक बहुत तेज़ तरीका है। न निर्भरता और न सीखने की अवस्था।
जब हमें एक नियम इंजन की आवश्यकता थी, तो हमने अपने स्वयं के रोल करने का निर्णय लिया, क्योंकि हमारे सरल कार्यों के लिए उपलब्ध चीजें बहुत जटिल थीं। यदि आप दूरस्थ रूप से उन पार्सिंग अभिव्यक्तियों के साथ अनुभवी हैं, जिन्हें उपयोगकर्ता डाल सकते हैं, तो ऐसा करना बहुत कठिन नहीं है। हमारे मामले में, अधिकांश कल्पना एक एक्सएसडी द्वारा नियंत्रित की जाती है और केवल कुछ क्षेत्रों को आगे बढ़ाया जाता है।