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

标签 spring spring-boot drools business-rules kie

我在 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/

相关文章:

Spring Data 与 QueryDslPredicateExecutor 没有找到类型错误的属性 findAll

java - 流口水功能

java - Spring Testing Mock MVC 不应用自定义 RequestMappingHandlerMapping

java - 在不提示父级的情况下克服 "Can not construct instance of InterfaceClass"

java - 连接 Mongo 时出现身份验证错误

java - NoClassDefFoundError 错误代码

java - Spring声明式事务管理不起作用

java - 无法加载驱动程序类 : org. h2.Driver with spring boot

java - 在 Drools 电子表格中使用 "ignore rule"回退循环遍历值数组

java - 流口水融合: generate rules automatically