我在 spring Boot 项目中使用 Drools 7.5.0-final。
我正在开发一个多模块 Gradle 项目。 规则和 kmodule.xml 存在于子模块项目中。该模块被打包为胖 spring boot Jar 文件中的 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>
我正在从类路径构建容器。
KieContainer kContainer = kieService.newKieClasspathContainer();
在服务器启动时(java -jar)它会加载 Kmodule.xml 并打印所有 kbase 和 sessionName。
但是当我触发规则时,它会返回已触发零规则
。
当我从 Eclipse 作为 Spring Boot 应用程序运行时,它工作正常。 请帮忙。
最佳答案
这似乎是 KieServices 和 SPring Boot uber jar 中的错误。这里发布了一个解决方法: https://groups.google.com/forum/#!topic/drools-usage/odQjmBess5A
基本上,配置 Spring Boot Maven 插件来解压 kie jar。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<requiresUnpack>
<dependency>
<groupId>com.sample</groupId>
<artifactId>kproject1</artifactId>
</dependency>
<dependency>
<groupId>com.sample</groupId>
<artifactId>kproject2</artifactId>
</dependency>
</requiresUnpack>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
关于spring - Drools 无法在 Spring Boot 项目中加载规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48667915/