Drools 6.2 如何从我自己的规则编辑器生成和部署 DRL 文件
Drools 6.2 How to generate and deploy DRL file from my own rule editor
作为概念验证,我使用 Drools workbench 创建了数据对象和 DRL 文件。我创建了 jar 文件并部署到 kie 服务器(带容器)。全部通过 workbench UI 完成。我使用我的 c# 应用程序中的 KIE REST 服务通过 XML(使用批处理执行)将输入对象 post 触发规则,我得到了我正在寻找的响应。
但在实际场景中,我们将拥有自己的规则编辑器(为了便于使用)来根据现有对象的属性创建规则。一旦规则保存在我们的数据库中,我们的计划是生成 DRL 文件和数据对象。
我的问题是如何获取此 DRL 文件并将其构建为 jar 文件?
Kie 容器需要一个包含数据对象和 DRL 文件的 jar 文件。有没有其他人做过类似的事情?
我正在尝试找到部署我的 drools 规则文件的最佳方式。其他替代方案可能是使用 IKVM 从 drools jar 文件生成 dll 并将 drools 集成到我的应用程序中。
我认为这个问题之前已经被问过和回答过,但这里又是将 DRL 编译成 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;
}
我最终使用 IKVM 将 drools 6.2 转换为 .net dll。这是我为展示如何操作而创建的 post:
http://droolstonet.blogspot.com/2015/05/how-to-use-drools-62-in-net-using-ikvm.html
作为概念验证,我使用 Drools workbench 创建了数据对象和 DRL 文件。我创建了 jar 文件并部署到 kie 服务器(带容器)。全部通过 workbench UI 完成。我使用我的 c# 应用程序中的 KIE REST 服务通过 XML(使用批处理执行)将输入对象 post 触发规则,我得到了我正在寻找的响应。
但在实际场景中,我们将拥有自己的规则编辑器(为了便于使用)来根据现有对象的属性创建规则。一旦规则保存在我们的数据库中,我们的计划是生成 DRL 文件和数据对象。
我的问题是如何获取此 DRL 文件并将其构建为 jar 文件?
Kie 容器需要一个包含数据对象和 DRL 文件的 jar 文件。有没有其他人做过类似的事情?
我正在尝试找到部署我的 drools 规则文件的最佳方式。其他替代方案可能是使用 IKVM 从 drools jar 文件生成 dll 并将 drools 集成到我的应用程序中。
我认为这个问题之前已经被问过和回答过,但这里又是将 DRL 编译成 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;
}
我最终使用 IKVM 将 drools 6.2 转换为 .net dll。这是我为展示如何操作而创建的 post:
http://droolstonet.blogspot.com/2015/05/how-to-use-drools-62-in-net-using-ikvm.html