【发布时间】:2015-07-15 17:07:47
【问题描述】:
我正在使用 java 和 Drools 6.2.0 开发一个 Maven 项目,我正在尝试通过 kmodule.xml 文件将某个 DRL 文件“绑定”到 KieBase,但我不断收到错误
WARN org.drools.compiler.kie.builder.impl.AbstractKieModule - No files found for KieBase
在运行项目时。
我认为我已经以正确的方式配置了所有内容,如documentation 所示(第 4.2.2 章 - 概述 - 构建、部署、利用和运行 - 构建),但看不出我的错误在哪里。
在这个项目中,我认为我不能通过编码来声明/配置 Drools,由于项目架构,这就是我使用 kmodule.xml 方法的原因。
欢迎提出任何建议。
我的 kmodule.xml(位置:src/main/resources/META-INF):
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="departureKB" packages="com.site.myapp.checks.departure">
<ksession name="departureKS" type="stateless" />
</kbase>
</kmodule>
我的 DRL 文件(虚拟)(位置:src/main/resources/com/site/myapp/checks/departure):
package com.site.myapp.checks.departure
rule "my rule 1"
when
// some conditions
then
// something to do
end
我的班级出发(只有 Drools 代码)(位置:src/com/site/myapp/checks):
channelName = "departure";
KieServices ks = KieServices.Factory.get();
KieContainer kc = ks.getKieClasspathContainer();
String kSessionName = channelName+"KS";
kSession = kc.newStatelessKieSession(kSessionName);
我的 pom.xml(仅 Drools 依赖项):
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-bom</artifactId>
<version>6.2.0.Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>6.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>6.2.0.Final</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>named-kiesession</artifactId>
<version>6.2.0.Final</version>
</dependency>
【问题讨论】:
-
我没有看到任何明显的问题。不过,我确实有一些问题:为什么要包含 drools-bom 和 named-kiesession 工件?你真的需要它们吗?你的 drl 文件的名称是什么?
-
- drools-bom 神器我不确定,它被其他人包含,但我认为它与编译有关。 - named-kiesession 工件,我在教程中看到过,并尝试过... - 我的 DRL 文件名为 Departure.drl
标签: drools