Tech&WK_SRDC_Ultra_platform_brms_essay 随笔
2020-07-21
记录下 srdc ultra platform , brms 项目中的随想
1. (BRMS) drools 在 MAVEN 普通项目中的配置无疑,但在 Spring boot 中应是需要额外配置

找不到 session / KieServices , 所以找了下网上的 code config 。未通过。
1 package com.srdc.ultrakiecore.demo; 2 3 import org.kie.api.KieBase; 4 import org.kie.api.KieServices; 5 import org.kie.api.builder.*; 6 7 import org.kie.api.runtime.KieContainer; 8 import org.kie.api.runtime.KieSession; 9 import org.kie.internal.io.ResourceFactory; 10 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; 11 import org.springframework.context.annotation.Bean; 12 import org.springframework.context.annotation.Configuration; 13 import org.springframework.core.io.Resource; 14 import org.springframework.core.io.support.PathMatchingResourcePatternResolver; 15 import org.springframework.core.io.support.ResourcePatternResolver; 16 17 import java.io.IOException; 18 19 @Configuration 20 public class DroolsConfiguration { 21 private static final String RULE_PATH = "drools/legacy/sapvalidation/default"; 22 23 @Bean 24 @ConditionalOnMissingBean(KieFileSystem.class) 25 public KieFileSystem kieFileSystem() throws IOException { 26 KieFileSystem kieFileSystem = getKieServices().newKieFileSystem(); 27 for(Resource file : getRuleFiles()){ 28 kieFileSystem.write(ResourceFactory.newClassPathResource(RULE_PATH + file.getFilename(),"UTF-8")); 29 } 30 return kieFileSystem; 31 } 32 33 private Resource[] getRuleFiles() throws IOException{ 34 ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); 35 final Resource[] resources = resourcePatternResolver.getResources("classpath*:" + RULE_PATH + "**/*.*"); 36 return resources; 37 } 38 39 @Bean 40 @ConditionalOnMissingBean(KieContainer.class) 41 public KieContainer kieContainer() throws IOException{ 42 final KieRepository kieRepository = getKieServices().getRepository(); 43 kieRepository.addKieModule(new KieModule(){ 44 45 @Override 46 public ReleaseId getReleaseId() { 47 return kieRepository.getDefaultReleaseId(); 48 } 49 }); 50 51 KieBuilder kieBuilder = getKieServices().newKieBuilder(kieFileSystem()); 52 kieBuilder.buildAll(); 53 return getKieServices().newKieContainer(kieRepository.getDefaultReleaseId()); 54 } 55 56 private KieServices getKieServices(){ 57 return KieServices.Factory.get(); 58 } 59 60 @Bean 61 @ConditionalOnMissingBean(KieBase.class) 62 public KieBase kieBase() throws IOException{ 63 return kieContainer().getKieBase(); 64 } 65 66 @Bean 67 @ConditionalOnMissingBean(KieSession.class) 68 public KieSession kieSession() throws IOException 69 { 70 return kieContainer().newKieSession(); 71 } 72 73 }
鉴于rules engine 为 platform 子系统, 且若要构建独立system, 则也应是内部组件,而非直接构建于 Spring boot.
暂将此中实现搁置。先构建模块化的rules engine.
2. class static 的 顺序


浙公网安备 33010602011771号