Droolsルールエンジンをアプリケーションに統合しています。私が始めた例の99%は次のようになります。
_KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newUrlResource( url ),
ResourceType.DRL );
if ( kbuilder.hasErrors() ) {
System.err.println( builder.getErrors().toString() );
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( builder.getKnowledgePackages() );
StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
ksession.insert( new Fibonacci( 10 ) );
ksession.fireAllRules();
ksession.dispose();
_
私は似たような動作をしていますが、私の質問はKnowledgeBase
が非推奨としてマークされていることです。これは、私が間違っていることを示す危険信号です。現在、KnowledgeBaseFactory.newKnowledgeBase()
は非推奨としてマークされていませんが、KnowledgeBase
型も返します。
では、KnowledgeBaseは非推奨になっているので、何を使用する必要がありますか?
これは私が6.xで動作することがわかったコードです:
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
FileInputStream fis = new FileInputStream( pathToSomeDrl );
kfs.write( "src/main/resources/simple.drl",
kieServices.getResources().newInputStreamResource( fis ) );
KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll();
Results results = kieBuilder.getResults();
if( results.hasMessages( Message.Level.ERROR ) ){
System.out.println( results.getMessages() );
throw new IllegalStateException( "### errors ###" );
}
KieContainer kieContainer =
kieServices.newKieContainer( kieServices.getRepository().getDefaultReleaseId() );
KieBase kieBase = kieContainer.getKieBase();
KieSession kieSession = kieContainer.newKieSession();
KnowledgeBase
への参照はドキュメントに残っていますが、実際には非推奨です。