Merhaba Dosya sisteminden gelen drl dosyasını yazmayı deniyorum 6.3.5. Ben drools projeden kodu aldım. Drl dosyasını yüklemek için kullanılan kod aşağıdaki gibidir.drl dosyasını drools'taki dosya sisteminden yükleme 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();
}
}
Burada Bilgi Bankası kullanımdan kaldırılmıştır. Bilgi Bankası için herhangi bir alternatif var mı? Herhangi bir alternatif varsa, bunun için bana örnek kod sağlayın. Drl dosyasını uygulamanın kaynak klasörüne kopyalamak istemiyorum. Herhangi bir yardım takdir edilir.
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: ");
KnowledgeBase ve arkadaşlarının KieServices.Factory.Get() ile değiştirildiğini ve daha sonra ihtiyacınız olan her şeyi oluşturmak için KieServices'ı kullanacağına inanıyorum. – pandaadb
Ayrıca, 6.4.0'da iyi çalışıyor. Nihai. Thankssssssssss! – capcom923
Ve 7.4.0'da çalışıyor. Nihai !! Teşekkürler! – jjmartinez