こんにちは私は、drools 6.3.0のファイルシステムからdrlファイルをロードしようとしています。 私はdroolsプロジェクトからコードを得ました。 drlファイルのロードに使用されるコードは次のとおりです。ファイルシステムからdrolsファイルをロードする方法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();
}
}
ここでは、KnowledgeBaseは推奨されていません。 KnowledgeBaseの代替手段はありますか?何か他の選択肢がある場合は、そのサンプルコードを親切に提供してください。私はアプリケーションのリソースフォルダにdrlファイルをコピーしたくありません。どんな助けもありがとうございます。最後に次のようにしました:
私はKnowledgeBaseとフレンドがKieServices.Factory.Get()に置き換えられ、次にKieServicesを使用して必要なものを作成すると考えています。 – pandaadb
6.4.0でもうまく動作します。最後の。 Thankssssssssss! – capcom923
それは7.4.0で動作します。最後の!!ありがとう! – jjmartinez