diff --git a/README.md b/README.md index 873ea44..74c5ab0 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ 12、SpringBoot2 整合 Security 框架,实现用户权限管理
[13、SpringBoot2 整合 ClickHouse数据库,实现数据高性能查询分析](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484121&idx=1&sn=29cc633facbbb2c69afa4e6472fb93e8&chksm=fdf45661ca83df77879cbea0e0e3b445a5972a9fc0f84ae25c6882e60e4bed3dc2a68338fa2a&token=1150397377&lang=zh_CN#rd)
+[14、SpringBoot2 整合 Drools规则引擎,实现高效的业务规则](https://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw==&mid=2247484126&idx=1&sn=480ca951cb6a4da92f7e153ecc6f5161&chksm=fdf45666ca83df70d4cd84be8712e15b192ee0ec4a9aed9c537e13d23bf534afaa7c1712f5b3&token=1150397377&lang=zh_CN#rd)
持续更新中... diff --git a/pom.xml b/pom.xml index 31292f7..82593e4 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,8 @@ ware-security-auth ware-click-house + + ware-drool-rule diff --git a/ware-drool-rule/pom.xml b/ware-drool-rule/pom.xml new file mode 100644 index 0000000..4ec9517 --- /dev/null +++ b/ware-drool-rule/pom.xml @@ -0,0 +1,146 @@ + + + + org.springframework.boot + spring-boot-starters + 2.0.6.RELEASE + + 4.0.0 + com.drool.rule + ware-drool-rule + jar + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-test + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.3.2 + + + + com.baomidou + mybatis-plus-boot-starter + 3.0.7.1 + + + com.baomidou + mybatis-plus-generator + + + + + com.baomidou + mybatis-plus + 3.0.7.1 + + + mysql + mysql-connector-java + 5.1.38 + + + com.alibaba + druid-spring-boot-starter + 1.1.13 + + + + + + + + commons-lang + commons-lang + 2.6 + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.2.3 + + + + org.drools + drools-core + 7.6.0.Final + + + org.drools + drools-compiler + 7.6.0.Final + + + org.drools + drools-templates + 7.6.0.Final + + + org.kie + kie-api + 7.6.0.Final + + + org.kie + kie-spring + + + org.springframework + spring-tx + + + org.springframework + spring-beans + + + org.springframework + spring-core + + + org.springframework + spring-context + + + 7.6.0.Final + + + + + + ${project.artifactId} + + + src/main/java + + **/*.xml + + false + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.8 + 1.8 + + + + + + \ No newline at end of file diff --git a/ware-drool-rule/src/main/java/com/drool/engine/Application7015.java b/ware-drool-rule/src/main/java/com/drool/engine/Application7015.java new file mode 100644 index 0000000..49b3fa3 --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/Application7015.java @@ -0,0 +1,13 @@ +package com.drool.engine; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +@MapperScan(basePackages = {"com.drool.engine.mapper"}) +public class Application7015 { + public static void main(String[] args) { + SpringApplication.run(Application7015.class,args) ; + } +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/config/DruidConfig.java b/ware-drool-rule/src/main/java/com/drool/engine/config/DruidConfig.java new file mode 100644 index 0000000..2568ee5 --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/config/DruidConfig.java @@ -0,0 +1,107 @@ +package com.drool.engine.config; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.support.http.StatViewServlet; +import com.alibaba.druid.support.http.WebStatFilter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import javax.sql.DataSource; + +@Configuration +public class DruidConfig { + private static final Logger logger = LoggerFactory.getLogger(DruidConfig.class); + @Value("${spring.datasource.druid.url}") + private String dbUrl; + @Value("${spring.datasource.druid.username}") + private String username; + @Value("${spring.datasource.druid.password}") + private String password; + @Value("${spring.datasource.druid.driverClassName}") + private String driverClassName; + @Value("${spring.datasource.druid.initial-size}") + private int initialSize; + @Value("${spring.datasource.druid.max-active}") + private int maxActive; + @Value("${spring.datasource.druid.min-idle}") + private int minIdle; + @Value("${spring.datasource.druid.max-wait}") + private int maxWait; + @Value("${spring.datasource.druid.pool-prepared-statements}") + private boolean poolPreparedStatements; + @Value("${spring.datasource.druid.max-pool-prepared-statement-per-connection-size}") + private int maxPoolPreparedStatementPerConnectionSize; + @Value("${spring.datasource.druid.time-between-eviction-runs-millis}") + private int timeBetweenEvictionRunsMillis; + @Value("${spring.datasource.druid.min-evictable-idle-time-millis}") + private int minEvictableIdleTimeMillis; + @Value("${spring.datasource.druid.max-evictable-idle-time-millis}") + private int maxEvictableIdleTimeMillis; + @Value("${spring.datasource.druid.validation-query}") + private String validationQuery; + @Value("${spring.datasource.druid.test-while-idle}") + private boolean testWhileIdle; + @Value("${spring.datasource.druid.test-on-borrow}") + private boolean testOnBorrow; + @Value("${spring.datasource.druid.test-on-return}") + private boolean testOnReturn; + @Value("${spring.datasource.druid.filters}") + private String filters; + @Value("{spring.datasource.druid.connection-properties}") + private String connectionProperties; + @Bean + public DataSource dataSource() { + DruidDataSource datasource = new DruidDataSource(); + datasource.setUrl(dbUrl); + datasource.setUsername(username); + datasource.setPassword(password); + datasource.setDriverClassName(driverClassName); + datasource.setInitialSize(initialSize); + datasource.setMinIdle(minIdle); + datasource.setMaxActive(maxActive); + datasource.setMaxWait(maxWait); + datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); + datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); + datasource.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis); + datasource.setValidationQuery(validationQuery); + datasource.setTestWhileIdle(testWhileIdle); + datasource.setTestOnBorrow(testOnBorrow); + datasource.setTestOnReturn(testOnReturn); + datasource.setPoolPreparedStatements(poolPreparedStatements); + datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); + try { + datasource.setFilters(filters); + } catch (Exception e) { + logger.error("druid configuration initialization filter", e); + } + datasource.setConnectionProperties(connectionProperties); + return datasource; + } + @Bean + public ServletRegistrationBean statViewServlet(){ + ServletRegistrationBean srb = + new ServletRegistrationBean(new StatViewServlet(),"/druid/*"); + //设置控制台管理用户 + srb.addInitParameter("loginUsername","root"); + srb.addInitParameter("loginPassword","root"); + //是否可以重置数据 + srb.addInitParameter("resetEnable","false"); + return srb; + } + @Bean + public FilterRegistrationBean statFilter(){ + //创建过滤器 + FilterRegistrationBean frb = + new FilterRegistrationBean(new WebStatFilter()); + //设置过滤器过滤路径 + frb.addUrlPatterns("/*"); + //忽略过滤的形式 + frb.addInitParameter("exclusions", + "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); + return frb; + } +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/config/RuleEngineConfig.java b/ware-drool-rule/src/main/java/com/drool/engine/config/RuleEngineConfig.java new file mode 100644 index 0000000..2b1f22b --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/config/RuleEngineConfig.java @@ -0,0 +1,66 @@ +package com.drool.engine.config; + +import org.kie.api.KieBase; +import org.kie.api.KieServices; +import org.kie.api.builder.KieBuilder; +import org.kie.api.builder.KieFileSystem; +import org.kie.api.builder.KieRepository; +import org.kie.api.runtime.KieContainer; +import org.kie.api.runtime.KieSession; +import org.kie.internal.io.ResourceFactory; +import org.kie.spring.KModuleBeanFactoryPostProcessor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; +import java.io.IOException; + +@Configuration +public class RuleEngineConfig { + + private static final Logger LOGGER = LoggerFactory.getLogger(RuleEngineConfig.class) ; + private static final String RULES_PATH = "droolRule/"; + private final KieServices kieServices = KieServices.Factory.get(); + + @Bean + public KieFileSystem kieFileSystem() throws IOException { + KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); + ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); + Resource[] files = resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "*.*"); + String path = null; + for (Resource file : files) { + path = RULES_PATH + file.getFilename(); + LOGGER.info("path="+path); + kieFileSystem.write(ResourceFactory.newClassPathResource(path, "UTF-8")); + } + return kieFileSystem; + } + + @Bean + public KieContainer kieContainer() throws IOException { + KieRepository kieRepository = kieServices.getRepository(); + kieRepository.addKieModule(kieRepository::getDefaultReleaseId); + KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem()); + kieBuilder.buildAll(); + return kieServices.newKieContainer(kieRepository.getDefaultReleaseId()); + } + + @Bean + public KieBase kieBase() throws IOException { + return kieContainer().getKieBase(); + } + + @Bean + public KieSession kieSession() throws IOException { + return kieContainer().newKieSession(); + } + + @Bean + public KModuleBeanFactoryPostProcessor kiePostProcessor() { + return new KModuleBeanFactoryPostProcessor(); + } + +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/config/SpringContextUtil.java b/ware-drool-rule/src/main/java/com/drool/engine/config/SpringContextUtil.java new file mode 100644 index 0000000..6f2b773 --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/config/SpringContextUtil.java @@ -0,0 +1,37 @@ +package com.drool.engine.config; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringContextUtil implements ApplicationContextAware { + public static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) + throws BeansException { + SpringContextUtil.applicationContext = applicationContext; + } + + public static Object getBean(String name) { + return applicationContext.getBean(name); + } + + public static T getBean(String name, Class requiredType) { + return applicationContext.getBean(name, requiredType); + } + + public static boolean containsBean(String name) { + return applicationContext.containsBean(name); + } + + public static boolean isSingleton(String name) { + return applicationContext.isSingleton(name); + } + + public static Class getType(String name) { + return applicationContext.getType(name); + } +} \ No newline at end of file diff --git a/ware-drool-rule/src/main/java/com/drool/engine/controller/RuleController.java b/ware-drool-rule/src/main/java/com/drool/engine/controller/RuleController.java new file mode 100644 index 0000000..0a8ab6e --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/controller/RuleController.java @@ -0,0 +1,38 @@ +package com.drool.engine.controller; + +import com.drool.engine.entity.QueryParam; +import com.drool.engine.entity.RuleResult; +import com.drool.engine.service.RuleEngineService; +import org.kie.api.runtime.KieSession; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + +@RestController +@RequestMapping("/rule") +public class RuleController { + + @Resource + private KieSession kieSession; + @Resource + private RuleEngineService ruleEngineService ; + + @RequestMapping("/param") + public void param (){ + QueryParam queryParam1 = new QueryParam() ; + queryParam1.setParamId("1"); + queryParam1.setParamSign("+"); + QueryParam queryParam2 = new QueryParam() ; + queryParam2.setParamId("2"); + queryParam2.setParamSign("-"); + // 入参 + kieSession.insert(queryParam1) ; + kieSession.insert(queryParam2) ; + kieSession.insert(this.ruleEngineService) ; + + // 返参 + RuleResult resultParam = new RuleResult() ; + kieSession.insert(resultParam) ; + kieSession.fireAllRules() ; + } +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/entity/ParamInfo.java b/ware-drool-rule/src/main/java/com/drool/engine/entity/ParamInfo.java new file mode 100644 index 0000000..bb164a4 --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/entity/ParamInfo.java @@ -0,0 +1,47 @@ +package com.drool.engine.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; + +@TableName("re_param_info") +public class ParamInfo { + + @TableId("id") + private String id ; + private String paramSign ; + private Date createTime ; + private Date updateTime ; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParamSign() { + return paramSign; + } + + public void setParamSign(String paramSign) { + this.paramSign = paramSign; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/entity/QueryParam.java b/ware-drool-rule/src/main/java/com/drool/engine/entity/QueryParam.java new file mode 100644 index 0000000..a8244f3 --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/entity/QueryParam.java @@ -0,0 +1,23 @@ +package com.drool.engine.entity; + +public class QueryParam { + + private String paramId ; + private String paramSign ; + + public String getParamId() { + return paramId; + } + + public void setParamId(String paramId) { + this.paramId = paramId; + } + + public String getParamSign() { + return paramSign; + } + + public void setParamSign(String paramSign) { + this.paramSign = paramSign; + } +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/entity/RuleResult.java b/ware-drool-rule/src/main/java/com/drool/engine/entity/RuleResult.java new file mode 100644 index 0000000..3d32583 --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/entity/RuleResult.java @@ -0,0 +1,13 @@ +package com.drool.engine.entity; + +public class RuleResult { + private boolean postCodeResult = false ; + + public boolean isPostCodeResult() { + return postCodeResult; + } + + public void setPostCodeResult(boolean postCodeResult) { + this.postCodeResult = postCodeResult; + } +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/mapper/ParamInfoMapper.java b/ware-drool-rule/src/main/java/com/drool/engine/mapper/ParamInfoMapper.java new file mode 100644 index 0000000..f5e0126 --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/mapper/ParamInfoMapper.java @@ -0,0 +1,10 @@ +package com.drool.engine.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.drool.engine.entity.ParamInfo; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ParamInfoMapper extends BaseMapper { + void insertParam (ParamInfo paramInfo) ; +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/service/ParamInfoService.java b/ware-drool-rule/src/main/java/com/drool/engine/service/ParamInfoService.java new file mode 100644 index 0000000..09bae0f --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/service/ParamInfoService.java @@ -0,0 +1,9 @@ +package com.drool.engine.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.drool.engine.entity.ParamInfo; + +public interface ParamInfoService extends IService { + ParamInfo selectById (String paramId) ; + void insertParam (ParamInfo paramInfo) ; +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/service/RuleEngineService.java b/ware-drool-rule/src/main/java/com/drool/engine/service/RuleEngineService.java new file mode 100644 index 0000000..27ccc43 --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/service/RuleEngineService.java @@ -0,0 +1,8 @@ +package com.drool.engine.service; + +import com.drool.engine.entity.QueryParam; + +public interface RuleEngineService { + void executeAddRule (QueryParam param) ; + void executeRemoveRule (QueryParam param) ; +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/service/impl/ParamInfoServiceImpl.java b/ware-drool-rule/src/main/java/com/drool/engine/service/impl/ParamInfoServiceImpl.java new file mode 100644 index 0000000..a5e247d --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/service/impl/ParamInfoServiceImpl.java @@ -0,0 +1,31 @@ +package com.drool.engine.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.drool.engine.entity.ParamInfo; +import com.drool.engine.mapper.ParamInfoMapper; +import com.drool.engine.service.ParamInfoService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +@Service("paramInfoService") +public class ParamInfoServiceImpl extends ServiceImpl implements ParamInfoService { + private static final Logger LOGGER = LoggerFactory.getLogger(ParamInfoServiceImpl.class) ; + + @Resource + private ParamInfoMapper paramInfoMapper ; + + @Override + public ParamInfo selectById (String paramId){ + ParamInfo paramInfo = paramInfoMapper.selectById(paramId) ; + LOGGER.info("ParamInfoServiceImpl-Sign:{}",paramInfo.getParamSign()); + return paramInfo ; + } + + @Override + public void insertParam(ParamInfo paramInfo) { + paramInfoMapper.insertParam(paramInfo) ; + } + +} diff --git a/ware-drool-rule/src/main/java/com/drool/engine/service/impl/RuleEngineServiceImpl.java b/ware-drool-rule/src/main/java/com/drool/engine/service/impl/RuleEngineServiceImpl.java new file mode 100644 index 0000000..9c6ab78 --- /dev/null +++ b/ware-drool-rule/src/main/java/com/drool/engine/service/impl/RuleEngineServiceImpl.java @@ -0,0 +1,39 @@ +package com.drool.engine.service.impl; + +import com.drool.engine.config.SpringContextUtil; +import com.drool.engine.entity.ParamInfo; +import com.drool.engine.entity.QueryParam; +import com.drool.engine.service.ParamInfoService; +import com.drool.engine.service.RuleEngineService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import java.util.Date; + +@Service +public class RuleEngineServiceImpl implements RuleEngineService { + + private static final Logger LOGGER = LoggerFactory.getLogger(RuleEngineServiceImpl.class) ; + + @Override + public void executeAddRule(QueryParam param) { + LOGGER.info("参数数据:"+param.getParamId()+";"+param.getParamSign()); + ParamInfo paramInfo = new ParamInfo() ; + paramInfo.setId(param.getParamId()); + paramInfo.setParamSign(param.getParamSign()); + paramInfo.setCreateTime(new Date()); + paramInfo.setUpdateTime(new Date()); + ParamInfoService paramInfoService = (ParamInfoService)SpringContextUtil.getBean("paramInfoService") ; + paramInfoService.insertParam(paramInfo); + } + + @Override + public void executeRemoveRule(QueryParam param) { + LOGGER.info("参数数据:"+param.getParamId()+";"+param.getParamSign()); + ParamInfoService paramInfoService = (ParamInfoService)SpringContextUtil.getBean("paramInfoService") ; + ParamInfo paramInfo = paramInfoService.selectById(param.getParamId()); + if (paramInfo != null){ + paramInfoService.removeById(param.getParamId()) ; + } + } +} diff --git a/ware-drool-rule/src/main/resources/META-INF/kmodule.xml b/ware-drool-rule/src/main/resources/META-INF/kmodule.xml new file mode 100644 index 0000000..e11cf95 --- /dev/null +++ b/ware-drool-rule/src/main/resources/META-INF/kmodule.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ware-drool-rule/src/main/resources/application-dev.yml b/ware-drool-rule/src/main/resources/application-dev.yml new file mode 100644 index 0000000..1192c58 --- /dev/null +++ b/ware-drool-rule/src/main/resources/application-dev.yml @@ -0,0 +1,29 @@ +spring: + # 数据源配置 + datasource: + type: com.alibaba.druid.pool.DruidDataSource + druid: + driverClassName: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/rule-engine?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=false + username: root + password: 123 + initial-size: 10 + max-active: 100 + min-idle: 10 + max-wait: 60000 + pool-prepared-statements: true + max-pool-prepared-statement-per-connection-size: 20 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 30000 + max-evictable-idle-time-millis: 60000 + validation-query: SELECT 1 FROM DUAL + # validation-query-timeout: 5000 + test-on-borrow: false + test-on-return: false + test-while-idle: true + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 + #filters: #配置多个英文逗号分隔(统计,sql注入,log4j过滤) + filters: stat,wall + stat-view-servlet: + enabled: true + url-pattern: /druid/* \ No newline at end of file diff --git a/ware-drool-rule/src/main/resources/application.yml b/ware-drool-rule/src/main/resources/application.yml new file mode 100644 index 0000000..dc8805a --- /dev/null +++ b/ware-drool-rule/src/main/resources/application.yml @@ -0,0 +1,31 @@ +server: + tomcat: + uri-encoding: UTF-8 + port: 7015 +spring: + profiles: + active: dev + application: + name: ware-drool-rule + http: + encoding: + charset: UTF-8 + force: true + enabled: true + +mybatis-plus: + mapper-locations: classpath*:/mapper/*.xml + typeAliasesPackage: com.drool.engine.*.entity + global-config: + db-config: + id-type: AUTO + field-strategy: NOT_NULL + logic-delete-value: -1 + logic-not-delete-value: 0 + banner: false + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + map-underscore-to-camel-case: true + cache-enabled: false + call-setters-on-nulls: true + jdbc-type-for-null: 'null' \ No newline at end of file diff --git a/ware-drool-rule/src/main/resources/droolRule/param-check-one.drl b/ware-drool-rule/src/main/resources/droolRule/param-check-one.drl new file mode 100644 index 0000000..360d029 --- /dev/null +++ b/ware-drool-rule/src/main/resources/droolRule/param-check-one.drl @@ -0,0 +1,19 @@ +package droolRule ; +import com.drool.engine.entity.QueryParam ; +import com.drool.engine.entity.RuleResult; +import com.drool.engine.service.impl.RuleEngineServiceImpl +import org.slf4j.Logger +import org.slf4j.LoggerFactory ; + +dialect "java" +rule "paramcheck1" + salience 99 + when queryParam : QueryParam(paramId != null && paramSign.equals("+")) + resultParam : RuleResult() + then + final Logger LOGGER = LoggerFactory.getLogger("param-check-one 规则引擎") ; + LOGGER.info("参数:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign()); + RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ; + ruleEngineService.executeAddRule(queryParam); + resultParam.setPostCodeResult(true); +end \ No newline at end of file diff --git a/ware-drool-rule/src/main/resources/droolRule/param-check-two.drl b/ware-drool-rule/src/main/resources/droolRule/param-check-two.drl new file mode 100644 index 0000000..c79aabb --- /dev/null +++ b/ware-drool-rule/src/main/resources/droolRule/param-check-two.drl @@ -0,0 +1,19 @@ +package droolRule ; +import com.drool.engine.entity.QueryParam ; +import com.drool.engine.entity.RuleResult; +import com.drool.engine.service.impl.RuleEngineServiceImpl +import org.slf4j.Logger +import org.slf4j.LoggerFactory ; + +dialect "java" +rule "paramcheck2" + salience 88 + when queryParam : QueryParam(paramId != null && paramSign.equals("-")) + resultParam : RuleResult() + then + final Logger LOGGER = LoggerFactory.getLogger("param-check-two 规则引擎") ; + LOGGER.info("参数:getParamId="+queryParam.getParamId()+";getParamSign="+queryParam.getParamSign()); + RuleEngineServiceImpl ruleEngineService = new RuleEngineServiceImpl() ; + ruleEngineService.executeRemoveRule(queryParam); + resultParam.setPostCodeResult(true); +end \ No newline at end of file diff --git a/ware-drool-rule/src/main/resources/mapper/ParamInfoMapper.xml b/ware-drool-rule/src/main/resources/mapper/ParamInfoMapper.xml new file mode 100644 index 0000000..dea90d9 --- /dev/null +++ b/ware-drool-rule/src/main/resources/mapper/ParamInfoMapper.xml @@ -0,0 +1,9 @@ + + + + + insert into re_param_info (id, param_sign, create_time, update_time) + values (#{id,jdbcType=VARCHAR}, #{paramSign,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}) + + \ No newline at end of file