作为概念验证,我使用Drools工作台来创建数据对象和DRL文件。我创建了jar文件并部署到kie服务器(带容器)。全部通过工作台UI完成。我使用来自我的c#应用程序的KIE REST服务通过XML发布输入对象(使用批处理执行)来触发规则,我得到了我正在寻找的响应。
但在实际情况中,我们将拥有自己的规则编辑器(为了便于使用),可以根据现有对象的属性创建规则。一旦规则保存在我们的数据库中,我们的计划是生成DRL文件和数据对象。
我的问题是如何获取此DRL文件并将其构建为jar文件?
Kie容器需要一个包含数据对象和DRL文件的jar文件。有没有其他人做过类似的事情?
我正在尝试找到部署drools规则文件的最佳方法。其他替代方法可能是使用IKVM从drools jar文件生成dll并在我的应用程序中集成drools。
答案 0 :(得分:2)
我认为之前已经提出并回答了这个问题,但是这里再次将代码编译成KieBase或KieSession。
public KieBase build( String drlPath ) throws Exception {
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
FileInputStream fis = new FileInputStream( drlPath );
kfs.write( "src/main/resources/some.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();
return kieBase;
}
答案 1 :(得分:0)
我最终使用IKVM将drools 6.2转换为.net dll。这是我创建的帖子,以展示如何做到这一点:
http://droolstonet.blogspot.com/2015/05/how-to-use-drools-62-in-net-using-ikvm.html