java - 有没有什么简单的方法来执行所有的 .目录下的drl文件

标签 java drools kie

我正在使用 Kie,我想执行目录中的所有 .drl 文件。有没有更简单的方法?...

文件夹结构:

1. /drools/rules/rule_1.drl
2. /drools/rules/rule_2.drl
3. /drools/rules/rule_3.drl
4. /drools/rules/rule_4.drl
<小时/>
ResourceFactory.newFileResource(drlFile))

我使用上面的代码将单个文件加载到 kieSession。

预期:有没有简单的方法将目录中的所有文件加载到 kieSession

最佳答案

您的资源文件夹中需要一个 kmodule.xml 文件,如下所示:

resources -> META-INF -> kmodule.xml

拥有这个结构非常重要。在 META-INF 文件夹中您还需要有以下目录:

resources -> META-INF -> maven -> pom.properties

否则,使用 kmodule.xml 文件将无法工作。

您对 kmodule.xml 文件的定义如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
    <kbase name="mypackage" packages="drools.rules">
        <ksession name="mysession" type="stateless"/>
    </kbase>
</kmodule>

如果您使用包而不是文件,则可以通过以下方式创建容器:

this.kieContainer = this.kieServices.getKieClasspathContainer();

然后,您就可以通过以下方式创建无状态 session :

StatelessKieSession statelessKieSession = kieContainer.newStatelessKieSession("mysession"); 

如果您出于某种原因需要 kieBase,您可以使用:

kieBase = statelessKieSession.getKieBase();

关于java - 有没有什么简单的方法来执行所有的 .目录下的drl文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56642087/

相关文章:

java - 在按钮上构建变量来触发监听器

java - 服务器无法从客户端 java 接收文本

java - MIPS编程基础for循环

web-applications - 在Web应用程序中使用Drools Expert/Flow的最佳实践

java - 线程 "main"java.lang.NoClassDefFoundError : org/kie/api/KieServices$Factory with Drools version 7. 59.0 中的依赖关系异常问题

java - 使用滑动窗口时事实无法自动删除

java - AtomiceInteger 没有按 forjointask 的预期增加

tomcat - 以低权限用户身份运行tomcat应用程序?

java - 找不到默认的 KieSession

java - 没有 Maven 的 Drools Kie 应用程序