2013-06-23 5 views
6

मैं ड्रोल के लिए नया हूं। मैं एक नियम बनाने रहा हूँ लेकिन मैं एक संकलन समय त्रुटिडोलॉल्स में मेवेल बोली क्या है?

मिल "क्षेत्र दिखाई नहीं देता है '।

मैं JBoss उदाहरण है, जहां वे बोली का उपयोग के साथ जांच करने के लिए कोशिश की है" mvel " यह संकलित है। मुझे बोली के बारे में समझ में नहीं आया। तो dialect=mvel क्या है?

उत्तर

0

मुझे इस पर कुछ चीज़ मिली। मैंने इसके साथ साझा किया। ड्रॉल्स को जावा या एमवीईएल स्क्रिप्टिंग भाषा का समर्थन किया गया था। ऑब्जेक्ट गुण मान प्राप्त करने के लिए। उदाहरण के लिए , फाइबोनैकी में बीन है और इसमें कई गुण हैं यानी अनुक्रम

rule Recurse 
    salience 10 
    when 
     not (Fibonacci (sequence == 1))  
     f : Fibonacci (value == -1) 
    then 
     insert(new Fibonacci(f.sequence - 1)); 
     System.out.println("recurse for " + f.sequence); end 

हम जांच करने के लिए करता है, तो अनुक्रम == 1 तो मूल्य है -1 व्याप्ति अनुक्रम मूल्यों फाइबोनैचि object.We में सेट कर रहे हैं MVEL या java.MVEL के आधार पर मान जाँच कर रहे हैं जावा का सुपरसेट है की जरूरत है।

2

पर

Drools JBoss नियम 5.0 डेवलपर की मार्गदर्शिका

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

विशेष रूप से मैवेल जावा-आधारित अनुप्रयोगों के लिए एक अभिव्यक्ति भाषा है। और यह जावा वाक्यविन्यास पर आधारित है। more info about mvel

9

mvel, या MVFLEX Expression Language एक rich syntax, जिनमें से कई अधिक संक्षिप्त और अर्थपूर्ण कोड (और कम जरूरी) java से, उदाहरण के लिए के लिए अनुमति नहीं है get() मंत्रियों/set() मंत्रियों के लिए

  • आशुलिपि (जैसे निजी क्षेत्रों encapsulating) एक वैकल्पिक property शैली वाक्य रचना (VB or C# properties in .Net के समान)

यानी में पहुँचा जा करने के लिए।

myObject.setSomeField("SomeValue"); 
int x = myObject.getSomeIntField(); 

के बजाय आप सिंटैक्स का उपयोग कर सकते हैं (सूक्ष्म पूंजीकरण स्विच ध्यान दें के रूप में अच्छी तरह से):

myObject.someField = "SomeValue" 
x = myObject.someIntField // Type inferrence 
  • return बयान वैकल्पिक (एक सम्मेलन स्काला जैसे कई कार्यात्मक भाषाओं में पाया जाता है) है, के रूप में सेमी-कोलन, जब तक कि आप प्रत्येक पंक्ति में कई बयान है:

x // i.e. return x; 
  • आशुलिपि सरणी निर्माण और अनुक्रमण क्रमसूचक

foos = {2, 4, 6, 8, 10} 
foos[3] // foos.get(3) 
    इसी मैप्स के लिए
  • द्वारा (शब्दकोश)

bars = ["a" : "Apple", "b" : "Basket"] // Hashmap, with put 
bars["a"] 
bars.a // Similar to dynamically typed object e.g. in javascript, if key is a string. 
  • अशक्त सुरक्षित नेविगेशन ऑपरेटर

foo.?bar.baz // if (foo.bar != null) { return foo.bar.baz; } else { return null; } 
1
rule "validate holiday" 
    dialect "mvel" 
    dialect "java" 
    when 
     $h1 : Holiday(month == "july") 
    then 
     System.out.println($h1.name + ":" + $h1.month); 
    end 

बोली "mvel" का उद्देश्य है (Rosyln में अशक्त-सशर्त ऑपरेटर) की तरह मनुष्य बात करने के लिए है और आपके सादे ओल्ड जावा ऑब्जेक्ट (पीओजेओ) कक्षाओं के चर के सेटर्स। उपरोक्त उदाहरण पर विचार करें, जिसमें एक हॉलिडे क्लास का उपयोग किया जाता है और परिपत्र ब्रैकेट (कोष्ठक) "महीने" के अंदर उपयोग किया जाता है। तो सहायता बोली "mvel" के साथ परिवर्तक "महीने" के गेटर और सेटर्स का उपयोग किया जा सकता है।

डायलेक्ट "जावा" का प्रयोग हमारे नियमों में हमारे जावा कोड को लिखने में हमारी सहायता के लिए किया जाता है। इस पर एक प्रतिबंध या विशेषता है। हम नियम के "कब" भाग के अंदर जावा कोड का उपयोग नहीं कर सकते हैं, लेकिन हम "कोड" भाग में जावा कोड का उपयोग कर सकते हैं।

हम $ प्रतीक के बिना संदर्भ चर $ h1 भी घोषित कर सकते हैं। इस पर कोई प्रतिबंध नहीं है। परिवर्तनीय से पहले $ प्रतीक डालने का मुख्य उद्देश्य पीओजेओ कक्षाओं और नियमों के चर के बीच अंतर को चिह्नित करना है।

सम्मान।

संबंधित मुद्दे