没有 Maven 的 Drools Kie 应用程序

med*_*117 6 java drools maven drools-guvnor kie

作为开发人员,我想创建一个 Maven 项目并构建一个可执行的独立 JAR 应用程序。(无弹簧靴)

在开发和构建过程中,我想添加一个 Drools Kie 工件作为依赖项

<dependency>
 <groupId>com.mycompany</groupId>
 <artifactId>mydrools</artifactId>
 <version>[1.0.0,)</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

将我的应用程序构建为可执行 Jar 并运行它。我的应用程序具有调用 Drools 引擎的代码:

KieSession kSession = kContainer.newKieSession();
kSession.insert(myBean);
kSession.fireAllRules();
Run Code Online (Sandbox Code Playgroud)

最重要的是,当我在生产环境中部署我的应用程序时:

  • 希望我的生产服务器上安装Maven
  • 希望我的应用程序扫描本地或远程 Maven 存储库
  • 我希望我的应用程序定期自动扫描我的 Drools Kie 工件的新版本,而不需要参考 Maven 存储库,只需查看文件系统

我试过

String fileName = System.getenv("HOME") + "/libs/mydrools-1.0.0.jar";
File file = new File(fileName);
KieRepository kieRepository = ks.getRepository();        
KieContainer kContainer = ks.newKieContainer(ks.newReleaseId("com.mycompany", "mydrools", "1.0.0"));
kieRepository.addKieModule(ks.getResources().newFileSystemResource(file));
KieScanner kScanner = ks.newKieScanner( kContainer );
kScanner.start( 10000L );
Run Code Online (Sandbox Code Playgroud)

加载 JAR 工作正常,但似乎我也被迫至少配置一个最小的 Maven 存储库(~/.m2 文件夹和一个 settings.xml)。我收到了 org.apache.maven 插件和相关类的一堆错误。

当然,我希望我的生产环境依赖或依赖任何 Maven 配置。我只想运行一个带有另一个 JAR(例如 libs/mydrools-1.0.0.jar)的 JAR 作为依赖项,并可能在我更新 libs/mydrools-1.0.0.jar 时动态重新加载该依赖项。

基本上我需要将内部 Drools Kie Maven 插件设置为完全禁用(离线)。

Drools 6.2.0.Final 如何做到这一点?

更新

这个问题与

完全离线使用 Drools 6 Maven 架构

http://lists.jboss.org/pipermail/rules-users/2014-June/036245.html

who*_*mer 5

答案是你不知道。KIE 6.*(和7)内置了maven,KieScanner 类使用maven 来查找更新。如果在 ReleaseId 中指定版本范围,例如 [1.0.0,) ,扫描器会更好地工作

我的公司正在将基于 KIE 的应用程序部署到生产中。我们正在 PROD 中设置一个 Artifactory 存储库,并且还将有一个 Maven 存储库。

您实际上可以通过不使用 KieScanner 来禁用 Maven 部分,而是使用 getKieClasspathContainer() 来获取 KIE 容器。不过,您不会对规则进行动态更新。

KIE 还提供了一个执行服务器,它将规则推送到 REST API 中。执行服务器规则也可以通过 maven 更新。