हाय मैं drools 6.3.0 में फ़ाइल सिस्टम से ड्रिल फ़ाइल लोड करने का प्रयास कर रहा हूं। मुझे डोलॉल्स प्रोजेक्ट से कोड मिला। कोड जो ड्रिल फ़ाइल लोड करने के लिए प्रयोग किया जाता है, निम्नानुसार है।drools में फ़ाइल सिस्टम से ड्रिल फ़ाइल को लोड करने के लिए कैसे करें 6.3.0
package org.drools.examples.banking;
import org.kie.internal.KnowledgeBase;
import org.kie.internal.KnowledgeBaseFactory;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
import org.kie.internal.definition.KnowledgePackage;
import org.kie.internal.io.ResourceFactory;
import org.kie.internal.runtime.StatefulKnowledgeSession;
import org.kie.api.io.ResourceType;
import java.util.Collection;
public class RuleRunner {
public RuleRunner() {
}
public void runRules(String[] rules,
Object[] facts) {
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
for (int i = 0; i < rules.length; i++) {
String ruleFile = rules[i];
System.out.println("Loading file: " + ruleFile);
kbuilder.add(ResourceFactory.newClassPathResource(ruleFile,
RuleRunner.class),
ResourceType.DRL);
}
Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
kbase.addKnowledgePackages(pkgs);
/*ResourceFactory.getResourceChangeNotifierService().start();
ResourceFactory.getResourceChangeScannerService().start();
*/
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
for (int i = 0; i < facts.length; i++) {
Object fact = facts[i];
System.out.println("Inserting fact: " + fact);
ksession.insert(fact);
}
ksession.fireAllRules();
}
}
यहां नॉलेजबेस को बहिष्कृत किया गया है। नॉलेजबेस के लिए कोई विकल्प है। यदि कोई विकल्प मौजूद है तो कृपया मुझे इसके लिए नमूना कोड प्रदान करें। मैं आवेदन के संसाधन फ़ोल्डर में ड्रिल फ़ाइल की प्रतिलिपि नहीं बनाना चाहता हूं। किसी भी मदद की सराहना की है।
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
kfs.write(ResourceFactory.newFileResource(new File("C:/Users/ab/Desktop/fly.drl")));
KieBuilder kieBuilder = kieServices.newKieBuilder(kfs).buildAll();
KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());
KieSessionConfiguration conf= SessionConfiguration.getDefaultInstance();
KieSession ksession = kieContainer.newKieSession(conf);
if (kieBuilder.getResults().hasMessages(Level.ERROR)) {
List<Message> errors = kieBuilder.getResults().getMessages(Level.ERROR);
StringBuilder sb = new StringBuilder("Errors:");
for (Message msg : errors) {
sb.append("\n " + msg);
}
throw new Exception(sb.toString());
}
System.out.println("KieServices built: ");
मेरा मानना है कि नॉलेजबेस और दोस्तों को KieServices.Factory.Get() द्वारा प्रतिस्थापित किया गया है और फिर KieServices का उपयोग करके जो भी आपको चाहिए उसे बनाने के लिए। – pandaadb
यह 6.4.0 में भी ठीक काम करता है। अंतिम। Thankssssssssss! – capcom923
और यह 7.4.0 में काम करता है। अंतिम!! धन्यवाद! – jjmartinez