2013-02-22 30 views
5

सभी तथ्यों को पुनर्प्राप्त करने के बजाय मुझे कार्यशील स्मृति से विशिष्ट प्रकार के तथ्यों को पुनर्प्राप्त करने की आवश्यकता है।कार्यशील स्मृति से किसी विशिष्ट प्रकार के तथ्यों को पुनर्प्राप्त करना

मुझे पता चला कि मैं नीचे दिए गए कामकाजी स्मृति से सभी तथ्यों को पुनर्प्राप्त कर सकता हूं।

drools.getWorkingMemory().getWorkingMemoryEntryPoint("Stream").getObjects(); 

कृपया कुछ प्रकार के ऑब्जेक्ट्स को मेमोरी मेमोरी से पुनर्प्राप्त करने के लिए कुछ पॉइंटर्स प्रदान करें।

उत्तर

4

getObjects() विधि का उपयोग करने के बजाय आप एक क्वेरी का उपयोग कर सकते हैं। प्रश्नों आरएचएस बिना नियम की तरह हैं:

query "getObjectsOfClassA" 
    $result: ClassA() 
end 

आप वास्तव में जटिल मिलान पैटर्न बनाने के लिए आपके प्रश्नों के अंदर डीआरएल भाषा के सभी शक्ति का उपयोग कर सकते हैं। तब http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/#d0e7632

, अपने जावा कोड में, आप का उपयोग कर अपने क्वेरी आह्वान कर सकते हैं: तुम भी भी प्रश्नों का तर्क पारित कर सकते हैं

QueryResults results = ksession.getQueryResults("getObjectsOfClassA"); 
for (QueryResultsRow row : results) { 
    ClassA classA = (ClassA) row.get("$result"); //you can retrieve all the bounded variables here 
    //do whatever you want with classA 
} 

आप आप में के जमा के समारोह का उपयोग कर सकते सब ClassA के सेट की जरूरत है तुम्हारे सवाल।

आशा है कि यह मदद करता है,

5

आप एक ObjectFilter

Collection<Object> myfacts = session.getObjects(new ClassObjectFilter(MyFact.class)); 

दुर्भाग्य Drools 5.5.0 में अंतिम है, जिसके परिणामस्वरूप संग्रह की विधि अपेक्षा के अनुरूप काम नहीं होता इस्तेमाल कर सकते हैं। आमतौर पर एक विधि विधि सही होती है, यदि वस्तु की खोज संग्रह में कुछ बराबर होती है, लेकिन ड्रोल का संग्रह केवल ऑब्जेक्ट पाता है, जिसमें एक ही संदर्भ होता है (यह वस्तुओं की तुलना करने के लिए == का उपयोग करता है)।