Drools无法在Spring Boot项目中加载规则

Drools无法在Spring Boot项目中加载规则,spring,spring-boot,drools,business-rules,kie,Spring,Spring Boot,Drools,Business Rules,Kie,我在spring Boot项目中使用Drools 7.5.0-final 我正在从事一个多模块的Gradle项目。 规则和kmodule.xml存在于子模块项目中。这个模块被打包为一个Jar,位于一个胖spring引导Jar文件中 <?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http

我在spring Boot项目中使用Drools 7.5.0-final

我正在从事一个多模块的Gradle项目。 规则和kmodule.xml存在于子模块项目中。这个模块被打包为一个Jar,位于一个胖spring引导Jar文件中

  <?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">
<!-- <configuration>
  <property key="drools.propertySpecific" value="ALLOWED"/>
</configuration> -->

<kbase name="rules.employee.tax"   packages="uk.gov.hmrc.itmp.service.application.rules.employee.tax" > 
<ksession name="rules.employee.tax.session" type="stateful"  />
<ksession name="rules.employee.tax.statelesssession" type="stateless" />
</kbase>  
</kmodule>
在服务器启动时(java-jar)它加载Kmodule.xml并打印所有kbase和sessionName

但当我触发规则时,它返回零触发规则

当我作为Eclipse的spring boot应用程序运行时,它工作正常。
请帮助。

这似乎是KieServices和SPring Boot uber jar中的一个bug。这里张贴了一份工作报告:

基本上,配置springbootmaven插件来解包kie-jar


org.springframework.boot
springbootmaven插件
com.sample
kproject1
com.sample
kproject2
包裹
重新包装

确保您具有以下依赖项

implementation group: 'org.kie', name: 'kie-api', version: '7.16.0.Final'
implementation group: 'org.drools', name: 'drools-core', version: '7.16.0.Final'
implementation group: 'org.drools', name: 'drools-compiler', version: '7.16.0.Final'
implementation group: 'org.kie', name: 'kie-spring', version: '7.16.0.Final'
如果有依赖项,请删除
spring boot devtools
依赖项


(这对我很有用。)

当使用spring boot开发工具时,这是因为事实通常使用“重新启动类加载器”加载,而Drools类使用“基本类加载器”加载。因此,在执行规则时,事实对象不匹配

我通过在我的spring boot应用程序中创建一个文件src/main/resources/META-INF/spring-devtools.properties来解决这个问题,该文件包含以下内容:

restart.include.dools=/(drools|kie)\-.*\.jar

这是Drools中的错误,在本JIRA下已得到解决:

还有其他人遇到同样的问题吗?如果有助于解决问题,我有一台复制机。我没有使用devtools
implementation group: 'org.kie', name: 'kie-api', version: '7.16.0.Final'
implementation group: 'org.drools', name: 'drools-core', version: '7.16.0.Final'
implementation group: 'org.drools', name: 'drools-compiler', version: '7.16.0.Final'
implementation group: 'org.kie', name: 'kie-spring', version: '7.16.0.Final'
restart.include.dools=/(drools|kie)\-.*\.jar