有没有简单的方法可以执行所有操作。目录中的drl文件

时间:2019-06-18 05:08:49

标签: 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

1 个答案:

答案 0 :(得分:1)

您的资源文件夹中需要一个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();

然后,您将可以通过这种方式创建一个无状态会话:

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

如果出于任何原因需要kieBase,请使用:

kieBase = statelessKieSession.getKieBase();