2010-12-08 15 views
9

वर्तमान में मैं फाइल सिस्टम पर सभी नियम फाइलों को संग्रहीत करता हूं (उनमें से कई संस्करण हैं) और स्टार्टअप पर स्मृति के विभिन्न संस्करणों को लोड करते हैं। मैं डेटाबेस में अपनी डोलॉल्स फ़ाइलों को संग्रहीत करने के लिए बदलना चाहता हूं और सोच रहा था कि क्या ड्रोल्स में कोई समाधान या एडन है जो इसे सुविधाजनक बनाता है या मुझे अपना खुद का शिल्प बनाना चाहिए?डोलॉल्स: डेटाबेस में नियमों को संग्रहीत करना

धन्यवाद।

उत्तर

3

ठीक है, आप नियम प्रबंधन प्रदान करने के तरीके के रूप में गुव्नर को देखना चाहेंगे।

लेकिन संक्षेप में, नहीं, आपको अपना खुद का लिखना होगा।

ध्यान रखें कि आपको बीच में फ़ाइल की आवश्यकता नहीं है, आप डीबी से नियम के स्ट्रिंग प्रस्तुति को पढ़ सकते हैं और बस इसे संकलित कर सकते हैं।

1

मुझे भी एक ही परिदृश्य का सामना करना पड़ा। मैंने डेटाबेस में सभी नियम फ़ाइलों को संग्रहीत किया।

एप्लिकेशन स्टार्टअप पर नियम लोड करते समय, मुझे डेटाबेस से नियम मिलते हैं और उन्हें नियम आधार में संकलित करने और उन्हें रखने के लिए अस्थायी फ़ोल्डर में संग्रहीत किया जाता है।

यदि आपका नियम चल रहे एप्लिकेशन के दौरान बदलता है, तो नियम बेस में बदले गए नियम को उसी तरह अपडेट करें।

6

हां, यह किया जा सकता है। आपको केवल InputStream प्राप्त करने की क्षमता है। मेरे मामले में मैं अपने स्रोत जेपीए कक्षा RulePackage का उपयोग नियम स्रोत को बाइट [] के रूप में जारी रखने के लिए करता हूं, लेकिन आप अपने डीबी स्कीमा में बीएलओबी/सीएलओबी फ़ील्ड तक पहुंचने के लिए सीधे जेडीबीसी कनेक्शन का उपयोग कर सकते हैं। महत्वपूर्ण बात यह है, जब यह नियम संकुल के निर्माण की आवश्यकता होगी भी बचाने संग्रहीत नियम स्रोत की टाइप करने के लिए है:

switch(rulePackage.getRuleSourceType()) { 
    case DRL: 
    kbuilder.add(ResourceFactory.newByteArrayResource(rulePackage.getSource()), ResourceType.DRL); 
    break; 
    case EXCEL: 
    kbuilder.add(ResourceFactory.newByteArrayResource(rulePackage.getSource()), ResourceType.DTABLE, excelConfig); 
    break; 
    case CSV: 
    kbuilder.add(ResourceFactory.newByteArrayResource(rulePackage.getSource()), ResourceType.DTABLE, csvConfig); 
    break; 
    default: 
    throw new Exception("Rule package '" + rulePackage.getName() + "' has unknown type"); 
} 

आप newInputStreamResource विधि का उपयोग करता है, तो अपने मामले में और अधिक लागू विचार कर सकते हैं:

case DRL: 
    kbuilder.add(ResourceFactory.newInputStreamResource(new StringInputStream(myDrlAsString)), ResourceType.DRL); 
    break; 

या

case DRL: 
    kbuilder.add(ResourceFactory.newInputStreamResource(new ByteArrayInputStream(myDrlAsByteArr)), ResourceType.DRL); 
    break; 

ऐसा कुछ।

4

हाँ आप नियम पैकेज (.pkg फ़ाइलों) बनाकर इसे कर सकते हैं। यह पाठ्य नियमों का संकलित/बाइनरी रूप है।

आप ज्ञान निर्माता बनाते समय पैकेज फ़ाइल का नाम निर्दिष्ट कर सकते हैं और नियमों को कितनी बार अपडेट किया जाना चाहिए (30 सेकंड कहें)।

टेक्स्ट नियमों को .pkg फ़ाइलों में कनवर्ट करने के लिए गुवेनर का उपयोग करें। इस फ़ाइल को उस फ़ोल्डर में रखें जहां एप्लिकेशन इसे एक्सेस कर सकता है।

यदि आपको कोड नमूने की आवश्यकता है तो कृपया वापस लौटें।

0

एक बार जब आप डेटा स्टोर में नियमों के एकाधिक संस्करण को संग्रहीत करने के व्यवसाय में शामिल हो जाते हैं तो आप वास्तव में गुवानर (डोलॉल्स 5.x में) के बिजनेस रूल मैनेजमेंट (बीआरएमएस) सुविधाओं या ड्रॉल्स-डब्लूबी/केआईई- Drools 6.0 में डब्ल्यूबी वर्कबेंच।

उन समाधानों ने बॉक्स के बाहर कई नियम संस्करणों के संस्करण, भंडारण और तैनाती के लिए हल किया है। संक्षेप में, वे एक घर के समाधान से अधिक मजबूत हो जाएगा।

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