我尝试了同样的方法,最终为此制造了一个spring-boot-starter-drools,因为在那里没有任何工作可用。我没有使用XML-Configuration,因为最新的Spring配置仅与Java有关-我也建议您这样做。
意见建议:
- 只需使用启动程序,如启动程序或示例项目中所述
- 通过以下工作配置将Drools集成到您的Spring Boot-Project中:
@Configurationpublic class DroolsAutoConfiguration {private static final String RULES_PATH = "rules/";@Beanpublic KieFileSystem kieFileSystem() throws IOException {KieFileSystem kieFileSystem = getKieServices().newKieFileSystem();for (Resource file : getRuleFiles()) { kieFileSystem.write(ResourceFactory.newClassPathResource(RULES_PATH + file.getFilename(), "UTF-8"));} return kieFileSystem;}private Resource[] getRuleFiles() throws IOException {ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();return resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "**/*.*");}@Beanpublic KieContainer kieContainer() throws IOException {final KieRepository kieRepository = getKieServices().getRepository();kieRepository.addKieModule(new KieModule() { public ReleaseId getReleaseId() { return kieRepository.getDefaultReleaseId(); }});KieBuilder kieBuilder = getKieServices().newKieBuilder(kieFileSystem()); kieBuilder.buildAll();return getKieServices().newKieContainer(kieRepository.getDefaultReleaseId());}private KieServices getKieServices() {return KieServices.Factory.get();}@Beanpublic Kiebase kiebase() throws IOException {return kieContainer().getKiebase();}@Beanpublic KieSession kieSession() throws IOException {return kieContainer().newKieSession();}@Beanpublic KModuleBeanFactoryPostProcessor kiePostProcessor() {return new KModuleBeanFactoryPostProcessor();}}- spring版本之间存在冲突,因为Spring Boot基于Spring 4.x,而kie-spring依赖于Spring 3.2-我得到了最愚蠢的异常,直到最后,我在pom.xml中排除了所有3.2依赖项:
<dependency><groupId>org.kie</groupId><artifactId>kie-spring</artifactId><version>${drools.version}</version><exclusions><exclusion> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId></exclusion><exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId></exclusion><exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId></exclusion><exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId></exclusion></exclusions></dependency>


