如何在启动时从数据库表加载规则并从 Drools 6.2.0 中的同一个表更新它们?我找到了一个example http://sujitpal.blogspot.com/2013/03/jboss-rules-in-database-take-2.html使用 Drools 5,我可能可以从 Scala 转换为 Java,但看起来 API 已经发生了很大的变化......例如,我没有看到 RuleBaseFactory 类。
任何样本或文档将不胜感激。
我不确定从哪里来org.drools.RuleBaseFactory
被拿走。下面是 Drools 5.3(可能更早)到 5.6 中的实现方式:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ..., ResourceType.DRL);
if( kbuilder.hasErrors() ){
System.err.println( "### compilation errors ###" );
KnowledgeBuilderErrors errors = kbuilder.getErrors();
for( KnowledgeBuilderError err: errors ){
System.err.println( err.toString() );
}
throw new IllegalStateException( "compile errors" );
}
KnowledgeBase kbase = kbuilder.newKnowledgeBase();
StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
省略号指示插入包含规则文本的数据的位置。检查 API 是否有合适的类型; Ajava.lang.String
应该可以接受。
这是我在 6.2 中使用的方式:
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
kfs.write( "src/main/resources/simple.drl", ... );
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 = kieContainer.newKieSession();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)