From 4e2bba5f5c9d8d0452ede7ed4380da3b8d34127f Mon Sep 17 00:00:00 2001 From: icanci Date: Wed, 16 Nov 2022 16:45:33 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=B8=AD=E5=A4=AE=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 231 +++++++++++++++++- .../common/aggregation/RuleAggregation.java | 3 + .../common/aggregation/model/BaseDataDTO.java | 31 ++- .../aggregation/model/DataSourceDTO.java | 21 +- .../rec/engine/script/RecScriptEngine.java | 22 ++ .../script/impl/RecScriptEngineImpl.java | 35 ++- .../sdk/http/spi/HttpDataSourceSPI.java | 11 +- .../engine/sdk/http/spi/HttpStrategySPI.java | 4 - rec-engine/rec-engine-sdk/pom.xml | 5 - .../engine/sdk/RecEngineSDKAutoConfig.java | 51 ++-- .../sdk/actuator/RuleEngineResponse.java | 3 + .../impl/RecRuleEngineActuatorImpl.java | 8 +- .../rec/engine/sdk/rule/EngineExecutor.java | 29 ++- .../sdk/rule/EngineRepositoryLoader.java | 10 +- .../sdk/rule/RuleAggregationCluster.java | 3 +- .../rule/impl/EngineRepositoryLoaderImpl.java | 38 ++- .../rule/impl/RuleAggregationClusterImpl.java | 25 +- .../AggregationRepositoryHolder.java | 42 ++++ .../sdk/rule/repository/DomainSceneKey.java | 54 ++++ .../sdk/rule/repository/EngineRepository.java | 88 +++---- .../repository/EngineRepositoryHolder.java | 201 +++++++++++++++ .../rec/engine/sdk/spi/DataSourceSPI.java | 9 - .../rec/engine/sdk/spi/StrategySPI.java | 9 - 23 files changed, 745 insertions(+), 188 deletions(-) create mode 100644 rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/AggregationRepositoryHolder.java create mode 100644 rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/DomainSceneKey.java create mode 100644 rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/EngineRepositoryHolder.java diff --git a/pom.xml b/pom.xml index 2c72dd0..6040e5f 100644 --- a/pom.xml +++ b/pom.xml @@ -18,9 +18,26 @@ rec-spi + Rule-Engine-Component + Rule Engine Component: provides a unified rule processing method and policy. Support SDK access and HTTP access; Only page configuration is needed to complete the + rule processing, and simple mode and complex mode are supported for editing. The front and rear end projects can be separated and deployed independently, or packaged and + deployed at the front and rear end. + + https://gitee.com/icanci/rec + - 1.0.0.0-SNAPSHOT + 0.0.0.1-SNAPSHOT + + UTF-8 + + 3.8.1 + 3.0.0-M1 + 3.2.1 + 3.2.0 + 1.6.8 + 1.6 + 3.0.0-M1 1.8 UTF-8 @@ -232,7 +249,33 @@ jackson-databind + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + icanci + icanci@foxmail.com + https://gitee.com/icanci + +8 + + + + + master + scm:git:https://gitee.com/icanci/rec.git + scm:git:https://gitee.com/icanci/rec.git + https://gitee.com/icanci/rec.git + + + ${project.artifactId}-${project.version} @@ -279,19 +322,189 @@ + + org.apache.maven.plugins + maven-javadoc-plugin + 3.0.0-M1 + + ${javadoc.opts} + + + + + src/main/resources + true + + - - - org.codehaus.mojo - flatten-maven-plugin - - - org.apache.maven.plugins - maven-source-plugin + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.target} + ${maven.compiler.source} + ${project.build.sourceEncoding} + true + + -parameters + + + + + + + disable-javadoc-doclint + + [1.8,) + + + -Xdoclint:none + + + + release + + + + + org.codehaus.mojo + flatten-maven-plugin + + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin.version} + + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + attach-sources + package + + jar-no-fork + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + package + + + date + + + + + + attach-javadocs + package + + jar + + + none + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + verify + + sign + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + ${nexus-staging-maven-plugin.version} + true + + oss-release + https://s01.oss.sonatype.org/ + true + + + + org.codehaus.mojo + flatten-maven-plugin + 1.2.7 + + clean + true + + remove + remove + + ${project.build.directory}/flattened + + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + + + + + sonatype-snapshots + https://s01.oss.sonatype.org/content/repositories/snapshots + + + sonatype-release + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + + + sonatype-snapshots + https://s01.oss.sonatype.org/content/repositories/snapshots + + + sonatype-release + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + \ No newline at end of file diff --git a/rec-common/src/main/java/cn/icanci/rec/common/aggregation/RuleAggregation.java b/rec-common/src/main/java/cn/icanci/rec/common/aggregation/RuleAggregation.java index 7dfc384..dcf3701 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/aggregation/RuleAggregation.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/aggregation/RuleAggregation.java @@ -9,9 +9,12 @@ import java.util.StringJoiner; /** * 规则聚合-单个规则需要的配置数据信息 * + * 如果需要数据迁移,可以使用此模型 + * * @author icanci * @since 1.0 Created in 2022/11/15 15:44 */ +@Deprecated public class RuleAggregation { /** 域 */ private DomainDTO domain; diff --git a/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/BaseDataDTO.java b/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/BaseDataDTO.java index fe8ebd3..fe0173f 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/BaseDataDTO.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/BaseDataDTO.java @@ -4,42 +4,44 @@ import cn.icanci.rec.common.enums.DataTypeEnum; import cn.icanci.rec.common.enums.ResultTypeEnum; import cn.icanci.rec.common.enums.ScriptTypeEnum; +import javax.script.CompiledScript; + /** * @author icanci * @since 1.0 Created in 2022/11/15 17:14 */ public class BaseDataDTO extends BaseDTO { - private static final long serialVersionUID = -509622609203854310L; + private static final long serialVersionUID = -509622609203854310L; /** * 域Code */ - private String domainCode; + private String domainCode; /** * 基础数据名称 */ - private String fieldName; + private String fieldName; /** * 数据类型(布尔、字符串、数值、日期、元数据等) * * @see DataTypeEnum#name() */ - private String dataType; + private String dataType; /** * 关联的元数据uuid * * {@link DataTypeEnum#METADATA} */ - private String metadataUuid; + private String metadataUuid; /** * 脚本执行类型 * * @see ScriptTypeEnum#name() */ - private String scriptType; + private String scriptType; /** * 脚本内容 */ - private String scriptContent; + private String scriptContent; /** * TODO 是否有必要 * 脚本执行返回类型(只能是基本数据类型) @@ -47,7 +49,12 @@ public class BaseDataDTO extends BaseDTO { * @see ResultTypeEnum#name() */ @Deprecated - private String resultType; + private String resultType; + + /** + * 通过 Compilable 编译 scriptContent 之后的实例对象 + */ + private transient CompiledScript compiledScript; public String getDomainCode() { return domainCode; @@ -104,4 +111,12 @@ public class BaseDataDTO extends BaseDTO { public void setResultType(String resultType) { this.resultType = resultType; } + + public CompiledScript getCompiledScript() { + return compiledScript; + } + + public void setCompiledScript(CompiledScript compiledScript) { + this.compiledScript = compiledScript; + } } diff --git a/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/DataSourceDTO.java b/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/DataSourceDTO.java index ee1476f..a017340 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/DataSourceDTO.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/aggregation/model/DataSourceDTO.java @@ -4,6 +4,8 @@ import cn.icanci.rec.common.enums.DataSourceTypeEnum; import cn.icanci.rec.common.enums.HttpRequestTypeEnum; import cn.icanci.rec.common.enums.ScriptTypeEnum; +import javax.script.CompiledScript; + /** * @author icanci * @since 1.0 Created in 2022/11/15 17:15 @@ -46,17 +48,22 @@ public class DataSourceDTO extends BaseDTO { * @see ScriptTypeEnum#name() * */ - private String scriptType; + private String scriptType; /** * 脚本内容 */ - private String scriptContent; + private String scriptContent; /** * 执行超时时间,秒 * 为0则不做限制 */ - private int timeout; + private int timeout; + + /** + * 通过 Compilable 编译 scriptContent 之后的实例对象 + */ + private transient CompiledScript compiledScript; public String getScriptType() { return scriptType; @@ -81,6 +88,14 @@ public class DataSourceDTO extends BaseDTO { public void setTimeout(int timeout) { this.timeout = timeout; } + + public CompiledScript getCompiledScript() { + return compiledScript; + } + + public void setCompiledScript(CompiledScript compiledScript) { + this.compiledScript = compiledScript; + } } /** diff --git a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/RecScriptEngine.java b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/RecScriptEngine.java index 141574c..b02df96 100644 --- a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/RecScriptEngine.java +++ b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/RecScriptEngine.java @@ -6,6 +6,8 @@ import cn.icanci.rec.engine.script.context.RecScriptEngineContext; import cn.icanci.rec.engine.script.wrapper.HttpResponseWrapper; import javax.script.Bindings; +import javax.script.CompiledScript; +import javax.script.ScriptEngine; /** * 脚本执行引擎抽象顶级接口 @@ -14,6 +16,25 @@ import javax.script.Bindings; * @since 1.0 Created in 2022/11/12 22:12 */ public interface RecScriptEngine { + // ================================ 脚本编译 ================================ + + /** + * 根据脚本类型找到对应的执行引擎 + * + * @param scriptType scriptType + * @return 返回对应的执行引擎 + */ + ScriptEngine findEngine(ScriptTypeEnum scriptType); + + /** + * 根据脚本类型和脚本进行编译 + * + * @param scriptType scriptType + * @param scriptContent scriptContent + * @return 返回编译结果 + */ + CompiledScript compile(ScriptTypeEnum scriptType, String scriptContent); + // ================================ 脚本执行 ================================ /** * 执行脚本 @@ -68,4 +89,5 @@ public interface RecScriptEngine { * @return 返回请求执行结果 */ HttpResponseWrapper httpEval(HttpRequestTypeEnum requestType, String reqUrl, String reqParam, int timeout); + } diff --git a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/impl/RecScriptEngineImpl.java b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/impl/RecScriptEngineImpl.java index d7ac659..f8ed1b8 100644 --- a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/impl/RecScriptEngineImpl.java +++ b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/impl/RecScriptEngineImpl.java @@ -1,5 +1,13 @@ package cn.icanci.rec.engine.script.impl; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import javax.script.*; + +import com.google.common.collect.Maps; + import cn.icanci.rec.common.enums.HttpRequestTypeEnum; import cn.icanci.rec.common.enums.ScriptTypeEnum; import cn.icanci.rec.common.utils.FastJsonUtils; @@ -12,14 +20,6 @@ import cn.icanci.rec.engine.script.context.RecScriptEngineContext; import cn.icanci.rec.engine.script.factory.ScriptEngineFactory; import cn.icanci.rec.engine.script.wrapper.HttpResponseWrapper; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import javax.script.*; - -import com.google.common.collect.Maps; - /** * @author icanci * @since 1.0 Created in 2022/11/12 22:46 @@ -30,6 +30,25 @@ public class RecScriptEngineImpl implements RecScriptEngine { /** DEFAULT_APPLICATION_JSON_VALUE */ public static final String DEFAULT_APPLICATION_JSON_VALUE = "application/json"; + @Override + public ScriptEngine findEngine(ScriptTypeEnum scriptType) { + return ScriptEngineFactory.getScriptEngine(scriptType); + } + + @Override + public CompiledScript compile(ScriptTypeEnum scriptType, String scriptContent) { + try { + ScriptEngine scriptEngine = ScriptEngineFactory.getScriptEngine(scriptType); + if (scriptEngine instanceof Compilable) { + Compilable compilable = (Compilable) scriptEngine; + return compilable.compile(scriptContent); + } + } catch (Throwable t) { + // No Op + } + return null; + } + /** * 执行脚本 * diff --git a/rec-engine/rec-engine-sdk-http/src/main/java/cn/icanci/rec/engine/sdk/http/spi/HttpDataSourceSPI.java b/rec-engine/rec-engine-sdk-http/src/main/java/cn/icanci/rec/engine/sdk/http/spi/HttpDataSourceSPI.java index 895ba79..b53a6c8 100644 --- a/rec-engine/rec-engine-sdk-http/src/main/java/cn/icanci/rec/engine/sdk/http/spi/HttpDataSourceSPI.java +++ b/rec-engine/rec-engine-sdk-http/src/main/java/cn/icanci/rec/engine/sdk/http/spi/HttpDataSourceSPI.java @@ -1,11 +1,11 @@ package cn.icanci.rec.engine.sdk.http.spi; -import cn.icanci.rec.common.aggregation.model.DataSourceDTO; -import cn.icanci.rec.engine.sdk.spi.DataSourceSPI; - import java.util.List; import java.util.Set; +import cn.icanci.rec.common.aggregation.model.DataSourceDTO; +import cn.icanci.rec.engine.sdk.spi.DataSourceSPI; + /** * @author icanci * @since 1.0 Created in 2022/11/15 21:26 @@ -20,9 +20,4 @@ public class HttpDataSourceSPI extends AbstractLoadSPI implements DataSourceSPI public List load(String domain) { return null; } - - @Override - public DataSourceDTO loadOne(String domain, String uuid) { - return null; - } } diff --git a/rec-engine/rec-engine-sdk-http/src/main/java/cn/icanci/rec/engine/sdk/http/spi/HttpStrategySPI.java b/rec-engine/rec-engine-sdk-http/src/main/java/cn/icanci/rec/engine/sdk/http/spi/HttpStrategySPI.java index d5f4c93..734c121 100644 --- a/rec-engine/rec-engine-sdk-http/src/main/java/cn/icanci/rec/engine/sdk/http/spi/HttpStrategySPI.java +++ b/rec-engine/rec-engine-sdk-http/src/main/java/cn/icanci/rec/engine/sdk/http/spi/HttpStrategySPI.java @@ -21,8 +21,4 @@ public class HttpStrategySPI extends AbstractLoadSPI implements StrategySPI { return null; } - @Override - public StrategyDTO loadOne(String domain, String sceneCode) { - return null; - } } diff --git a/rec-engine/rec-engine-sdk/pom.xml b/rec-engine/rec-engine-sdk/pom.xml index 56f642e..07274b7 100644 --- a/rec-engine/rec-engine-sdk/pom.xml +++ b/rec-engine/rec-engine-sdk/pom.xml @@ -22,11 +22,6 @@ rec-common ${revision} - - cn.icanci.rec - rec-engine-rule - ${revision} - cn.icanci.rec rec-engine-script diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/RecEngineSDKAutoConfig.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/RecEngineSDKAutoConfig.java index 86c6fef..fef45de 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/RecEngineSDKAutoConfig.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/RecEngineSDKAutoConfig.java @@ -1,12 +1,5 @@ package cn.icanci.rec.engine.sdk; -import org.springframework.beans.BeansException; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - import cn.icanci.rec.engine.script.RecScriptEngine; import cn.icanci.rec.engine.script.RecScriptEngineManager; import cn.icanci.rec.engine.sdk.actuator.RecRuleEngineActuator; @@ -16,10 +9,16 @@ import cn.icanci.rec.engine.sdk.rule.EngineExecutor; import cn.icanci.rec.engine.sdk.rule.EngineRepositoryLoader; import cn.icanci.rec.engine.sdk.rule.RuleAggregationCluster; import cn.icanci.rec.engine.sdk.rule.impl.EngineRepositoryLoaderImpl; -import cn.icanci.rec.engine.sdk.rule.impl.RuleAggregationClusterImpl; -import cn.icanci.rec.engine.sdk.rule.repository.EngineRepository; +import cn.icanci.rec.engine.sdk.rule.repository.EngineRepositoryHolder; import cn.icanci.rec.engine.sdk.spi.*; +import org.springframework.beans.BeansException; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + /** * @author icanci * @since 1.0 Created in 2022/11/15 20:34 @@ -68,24 +67,34 @@ public class RecEngineSDKAutoConfig implements ApplicationContextAware { return RecScriptEngineManager.getRecScriptEngine(); } - /** - * 执行引擎 - * - * @return 返回脚本执行引擎 - */ - @Bean("ruleAggregationCluster") - public RuleAggregationCluster ruleAggregationCluster(EngineRepository engineRepository, RecScriptEngine engine) { - return new RuleAggregationClusterImpl(engineRepository, engine); - } +// /** +// * 执行引擎 暂不使用 +// * +// * @return 返回脚本执行引擎 +// */ +// @Bean("ruleAggregationCluster") +// public RuleAggregationCluster ruleAggregationCluster(AggregationRepositoryHolder aggregationRepositoryHolder, RecScriptEngine engine) { +// return new RuleAggregationClusterImpl(aggregationRepositoryHolder, engine); +// } +// +// /** +// * 执行引擎 暂不使用 +// * +// * @return 返回脚本执行引擎 +// */ +// @Bean("aggregationRepositoryHolder") +// public AggregationRepositoryHolder aggregationRepositoryHolder() { +// return new AggregationRepositoryHolder(); +// } /** * 执行引擎 * * @return 返回脚本执行引擎 */ - @Bean("engineRepository") - public EngineRepository engineRepository() { - return new EngineRepository(); + @Bean("engineRepositoryHolder") + public EngineRepositoryHolder engineRepositoryHolder() { + return new EngineRepositoryHolder(); } // ============================== SPI ============================== diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/actuator/RuleEngineResponse.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/actuator/RuleEngineResponse.java index 555eafa..9815b4d 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/actuator/RuleEngineResponse.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/actuator/RuleEngineResponse.java @@ -10,4 +10,7 @@ import java.io.Serializable; */ public class RuleEngineResponse implements Serializable { private static final long serialVersionUID = -4658078915045778725L; + private boolean success; + private String errorMessage; + } diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/actuator/impl/RecRuleEngineActuatorImpl.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/actuator/impl/RecRuleEngineActuatorImpl.java index 1e12445..e025011 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/actuator/impl/RecRuleEngineActuatorImpl.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/actuator/impl/RecRuleEngineActuatorImpl.java @@ -3,8 +3,7 @@ package cn.icanci.rec.engine.sdk.actuator.impl; import cn.icanci.rec.engine.sdk.actuator.RecRuleEngineActuator; import cn.icanci.rec.engine.sdk.actuator.RuleEngineRequest; import cn.icanci.rec.engine.sdk.actuator.RuleEngineResponse; -import cn.icanci.rec.engine.sdk.rule.repository.EngineRepository; -import cn.icanci.rec.engine.sdk.rule.runtime.RuleAggregationCompiled; +import cn.icanci.rec.engine.sdk.rule.EngineExecutor; import javax.annotation.Resource; @@ -15,11 +14,10 @@ import javax.annotation.Resource; public class RecRuleEngineActuatorImpl implements RecRuleEngineActuator { @Resource - private EngineRepository engineRepository; + private EngineExecutor engineExecutor; @Override public RuleEngineResponse executor(RuleEngineRequest request) { - RuleAggregationCompiled compiled = engineRepository.loadRuleAggregationCompiled(request.getDomainCode(), request.getSceneCode()); - return null; + return engineExecutor.execute(request); } } diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java index 491f1ad..ad40512 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java @@ -1,8 +1,9 @@ package cn.icanci.rec.engine.sdk.rule; +import cn.icanci.rec.common.aggregation.model.StrategyDTO; import cn.icanci.rec.engine.sdk.actuator.RuleEngineRequest; import cn.icanci.rec.engine.sdk.actuator.RuleEngineResponse; -import cn.icanci.rec.engine.sdk.rule.repository.EngineRepository; +import cn.icanci.rec.engine.sdk.rule.repository.EngineRepositoryHolder; import javax.annotation.Resource; @@ -13,9 +14,33 @@ import javax.annotation.Resource; public final class EngineExecutor { @Resource - private EngineRepository engineRepository; + private EngineRepositoryHolder holder; + /** + * 执行入口 + * + * @param request request + * @return 返回执行结果 + */ public RuleEngineResponse execute(RuleEngineRequest request) { + // 1.数据基本校验 + validator(request); + + // 2.获取策略 + StrategyDTO strategy = holder.getStrategy(request.getDomainCode(), request.getSceneCode()); + // 3.聚合数据 + + // 4.执行 + // 5.返回执行结果 return null; } + + /** + * 数据基本校验 + * + * @param request request + */ + private void validator(RuleEngineRequest request) { + + } } diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineRepositoryLoader.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineRepositoryLoader.java index b14744d..f201031 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineRepositoryLoader.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineRepositoryLoader.java @@ -1,9 +1,9 @@ package cn.icanci.rec.engine.sdk.rule; -import java.util.List; - import cn.icanci.rec.common.aggregation.model.*; +import java.util.List; + /** * @author icanci * @since 1.0 Created in 2022/11/15 19:16 @@ -56,17 +56,15 @@ public interface EngineRepositoryLoader { * 加载数据源信息 * * @param domainCode domainCode - * @param sceneCode sceneCode * @return 返回数据源信息 */ - DataSourceDTO loadDataSource(String domainCode, String sceneCode); + List loadDataSource(String domainCode); /** * 加载执行策略 * * @param domainCode domainCode - * @param sceneCode sceneCode * @return 返回执行策略 */ - StrategyDTO loadStrategy(String domainCode, String sceneCode); + List loadStrategy(String domainCode); } diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/RuleAggregationCluster.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/RuleAggregationCluster.java index 143b076..751e7ac 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/RuleAggregationCluster.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/RuleAggregationCluster.java @@ -4,11 +4,12 @@ import cn.icanci.rec.common.aggregation.RuleAggregation; import cn.icanci.rec.engine.sdk.rule.runtime.RuleAggregationCompiled; /** - * 规则聚合簇 + * 规则聚合簇,此方法暂不实现 * * @author icanci * @since 1.0 Created in 2022/11/15 15:32 */ +@Deprecated public interface RuleAggregationCluster { /** diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/impl/EngineRepositoryLoaderImpl.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/impl/EngineRepositoryLoaderImpl.java index a5ecfe9..3b593d5 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/impl/EngineRepositoryLoaderImpl.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/impl/EngineRepositoryLoaderImpl.java @@ -1,19 +1,17 @@ package cn.icanci.rec.engine.sdk.rule.impl; +import cn.icanci.rec.common.aggregation.model.*; +import cn.icanci.rec.engine.sdk.rule.EngineRepositoryLoader; +import cn.icanci.rec.engine.sdk.spi.*; + import java.util.List; -import java.util.Map; import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; import javax.annotation.Resource; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import cn.icanci.rec.common.aggregation.model.*; -import cn.icanci.rec.engine.sdk.rule.EngineRepositoryLoader; -import cn.icanci.rec.engine.sdk.spi.*; - /** * @author icanci * @since 1.0 Created in 2022/11/15 19:28 @@ -22,19 +20,17 @@ import cn.icanci.rec.engine.sdk.spi.*; public class EngineRepositoryLoaderImpl implements EngineRepositoryLoader { @Resource - private DomainSPI domainSPI; + private DomainSPI domainSPI; @Resource - private SceneSPI sceneSPI; + private SceneSPI sceneSPI; @Resource - private BaseDataSPI baseDataSPI; + private BaseDataSPI baseDataSPI; @Resource - private MetadataSPI metadataSPI; + private MetadataSPI metadataSPI; @Resource - private DataSourceSPI dataSourceSPI; + private DataSourceSPI dataSourceSPI; @Resource - private StrategySPI strategySPI; - - private static final Map DOMAIN_DTO_MAP = new ConcurrentHashMap<>(); + private StrategySPI strategySPI; @Override public DomainDTO loadDomain(String domainCode) { @@ -64,18 +60,12 @@ public class EngineRepositoryLoaderImpl implements EngineRepositoryLoader { return metadataSPI.load(domainCode); } - @Override - public DataSourceDTO loadDataSource(String domainCode, String sceneCode) { - StrategyDTO strategy = loadStrategy(domainCode, sceneCode); - if (strategy == null || StringUtils.isBlank(strategy.getDataSourceUuid())) { - return null; - } - String dataSourceUuid = strategy.getDataSourceUuid(); - return dataSourceSPI.loadOne(domainCode, dataSourceUuid); + @Override public List loadDataSource(String domainCode) { + return dataSourceSPI.load(domainCode); } @Override - public StrategyDTO loadStrategy(String domainCode, String sceneCode) { - return strategySPI.loadOne(domainCode, sceneCode); + public List loadStrategy(String domainCode) { + return strategySPI.load(domainCode); } } diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/impl/RuleAggregationClusterImpl.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/impl/RuleAggregationClusterImpl.java index 7e9cb71..dd7e420 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/impl/RuleAggregationClusterImpl.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/impl/RuleAggregationClusterImpl.java @@ -1,11 +1,10 @@ package cn.icanci.rec.engine.sdk.rule.impl; import cn.icanci.rec.common.aggregation.RuleAggregation; -import cn.icanci.rec.common.aggregation.model.DomainDTO; import cn.icanci.rec.engine.script.RecScriptEngine; import cn.icanci.rec.engine.sdk.exception.RuleAggregationException; import cn.icanci.rec.engine.sdk.rule.RuleAggregationCluster; -import cn.icanci.rec.engine.sdk.rule.repository.EngineRepository; +import cn.icanci.rec.engine.sdk.rule.repository.AggregationRepositoryHolder; import cn.icanci.rec.engine.sdk.rule.runtime.RuleAggregationCompiled; /** @@ -15,13 +14,13 @@ import cn.icanci.rec.engine.sdk.rule.runtime.RuleAggregationCompiled; public class RuleAggregationClusterImpl implements RuleAggregationCluster { /** 仓储的实现类 */ - private EngineRepository engineRepository; + private AggregationRepositoryHolder holder; /** 编译执行引擎 */ - private RecScriptEngine engine; + private RecScriptEngine engine; - public RuleAggregationClusterImpl(EngineRepository engineRepository, RecScriptEngine engine) { - this.engineRepository = engineRepository; + public RuleAggregationClusterImpl(AggregationRepositoryHolder engineRepositoryHolder, RecScriptEngine engine) { + this.holder = engineRepositoryHolder; this.engine = engine; } @@ -29,12 +28,12 @@ public class RuleAggregationClusterImpl implements RuleAggregationCluster { public RuleAggregation buildAgg(String domainCode, String sceneCode) { try { RuleAggregation aggregation = new RuleAggregation(); - aggregation.setDomain(engineRepository.loadDomain(domainCode)); - aggregation.setScenePair(engineRepository.loadScenePair(domainCode, sceneCode)); - aggregation.setBaseDatas(engineRepository.loadBaseDatas(domainCode)); - aggregation.setMetadatas(engineRepository.loadMetadatas(domainCode)); - aggregation.setDataSource(engineRepository.loadDataSource(domainCode, sceneCode)); - aggregation.setStrategy(engineRepository.loadStrategy(domainCode, sceneCode)); + aggregation.setDomain(holder.loadDomain(domainCode)); + aggregation.setScenePair(holder.loadScenePair(domainCode, sceneCode)); + aggregation.setBaseDatas(holder.loadBaseDatas(domainCode)); + aggregation.setMetadatas(holder.loadMetadatas(domainCode)); + aggregation.setDataSource(holder.loadDataSource(domainCode, sceneCode)); + aggregation.setStrategy(holder.loadStrategy(domainCode, sceneCode)); return aggregation; } catch (Throwable e) { return null; @@ -48,8 +47,6 @@ public class RuleAggregationClusterImpl implements RuleAggregationCluster { if (agg == null) { throw new RuleAggregationException("Build RuleAggregation by domainCode: " + domainCode + " result is Null! Compilation failed!"); } - DomainDTO domain = agg.getDomain(); - return null; } catch (Throwable e) { throw new RuleAggregationException(e); diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/AggregationRepositoryHolder.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/AggregationRepositoryHolder.java new file mode 100644 index 0000000..9466bfb --- /dev/null +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/AggregationRepositoryHolder.java @@ -0,0 +1,42 @@ +package cn.icanci.rec.engine.sdk.rule.repository; + +import java.util.List; + +import cn.icanci.rec.common.aggregation.model.*; +import cn.icanci.rec.engine.sdk.rule.runtime.RuleAggregationCompiled; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/16 08:51 + */ +@Deprecated +public class AggregationRepositoryHolder { + + public DomainDTO loadDomain(String domainCode) { + return null; + } + + public SceneDTO.ScenePair loadScenePair(String domainCode, String sceneCode) { + return null; + } + + public List loadBaseDatas(String domainCode) { + return null; + } + + public List loadMetadatas(String domainCode) { + return null; + } + + public DataSourceDTO loadDataSource(String domainCode, String sceneCode) { + return null; + } + + public StrategyDTO loadStrategy(String domainCode, String sceneCode) { + return null; + } + + public RuleAggregationCompiled loadRuleAggregationCompiled(String domainCode, String sceneCode) { + return null; + } +} diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/DomainSceneKey.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/DomainSceneKey.java new file mode 100644 index 0000000..07f1e99 --- /dev/null +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/DomainSceneKey.java @@ -0,0 +1,54 @@ +package cn.icanci.rec.engine.sdk.rule.repository; + +import java.util.Objects; +import java.util.StringJoiner; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/16 08:35 + */ +public class DomainSceneKey { + private String domainCode; + private String sceneCode; + + public DomainSceneKey(String domainCode, String sceneCode) { + this.domainCode = domainCode; + this.sceneCode = sceneCode; + } + + public String getDomainCode() { + return domainCode; + } + + public void setDomainCode(String domainCode) { + this.domainCode = domainCode; + } + + public String getSceneCode() { + return sceneCode; + } + + public void setSceneCode(String sceneCode) { + this.sceneCode = sceneCode; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + DomainSceneKey that = (DomainSceneKey) o; + return Objects.equals(domainCode, that.domainCode) && Objects.equals(sceneCode, that.sceneCode); + } + + @Override + public int hashCode() { + return Objects.hash(domainCode, sceneCode); + } + + @Override + public String toString() { + return new StringJoiner(",").add("domainCode=" + domainCode).add("sceneCode=" + sceneCode).toString(); + } +} diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/EngineRepository.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/EngineRepository.java index 20a5b0f..6b0d59e 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/EngineRepository.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/EngineRepository.java @@ -1,19 +1,11 @@ package cn.icanci.rec.engine.sdk.rule.repository; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.annotation.Resource; +import cn.icanci.rec.common.aggregation.model.*; -import org.apache.commons.collections4.CollectionUtils; +import java.util.Map; import com.google.common.collect.Maps; -import cn.icanci.rec.common.aggregation.model.*; -import cn.icanci.rec.engine.sdk.rule.EngineRepositoryLoader; -import cn.icanci.rec.engine.sdk.rule.runtime.RuleAggregationCompiled; - /** * EngineRepository Local Cache * @@ -21,66 +13,58 @@ import cn.icanci.rec.engine.sdk.rule.runtime.RuleAggregationCompiled; * @since 1.0 Created in 2022/11/15 22:56 */ public final class EngineRepository { - @Resource - private EngineRepositoryLoader engineRepositoryLoader; - - /** 域缓存 */ - private static final Map DOMAIN_MAP = Maps.newConcurrentMap(); - - /** - * 刷新仓储 - * - * @param domainCodes domainCodes - */ - public void refresh(Set domainCodes) { - if (CollectionUtils.isEmpty(domainCodes)) { - return; - } - for (String domainCode : domainCodes) { - refresh(domainCode); - } - } + /** 域缓存 key:domainCode value:DomainDTO */ + private DomainDTO domainRepository; - /** - * 刷新仓储 - * - * @param domain domain - */ - private void refresh(String domain) { - List scenePairs = engineRepositoryLoader.loadScenePairs(domain); - if (CollectionUtils.isEmpty(scenePairs)) { - return; - } - // 刷新本地缓存 - // 刷新编译数据 + /** 基础数据缓存 key:uuid value:BaseDataDTO*/ + private Map baseDataRepository = Maps.newConcurrentMap(); - } + /** 元数据数据缓存 key:uuid value:MetadataDTO */ + private Map metadataRepository = Maps.newConcurrentMap(); - public DomainDTO loadDomain(String domainCode) { - return DOMAIN_MAP.get(domainCode); - } + /** 数据源缓存 key:uuid value:MetadataDTO*/ + private Map dataSourceRepository = Maps.newConcurrentMap(); - public SceneDTO.ScenePair loadScenePair(String domainCode, String sceneCode) { + /** 数据源缓存 key:DomainSceneKey value:StrategyDTO*/ + private Map strategyRepository = Maps.newConcurrentMap(); + public DomainDTO getDomainRepository() { + return domainRepository; } - public List loadBaseDatas(String domainCode) { - + public void setDomainRepository(DomainDTO domainRepository) { + this.domainRepository = domainRepository; } - public List loadMetadatas(String domainCode) { + public Map getBaseDataRepository() { + return baseDataRepository; + } + public void setBaseDataRepository(Map baseDataRepository) { + this.baseDataRepository = baseDataRepository; } - public DataSourceDTO loadDataSource(String domainCode, String sceneCode) { + public Map getMetadataRepository() { + return metadataRepository; + } + public void setMetadataRepository(Map metadataRepository) { + this.metadataRepository = metadataRepository; } - public StrategyDTO loadStrategy(String domainCode, String sceneCode) { + public Map getDataSourceRepository() { + return dataSourceRepository; + } + public void setDataSourceRepository(Map dataSourceRepository) { + this.dataSourceRepository = dataSourceRepository; } - public RuleAggregationCompiled loadRuleAggregationCompiled(String domainCode, String sceneCode) { + public Map getStrategyRepository() { + return strategyRepository; + } + public void setStrategyRepository(Map strategyRepository) { + this.strategyRepository = strategyRepository; } } diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/EngineRepositoryHolder.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/EngineRepositoryHolder.java new file mode 100644 index 0000000..63da349 --- /dev/null +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/repository/EngineRepositoryHolder.java @@ -0,0 +1,201 @@ +package cn.icanci.rec.engine.sdk.rule.repository; + +import cn.icanci.rec.common.aggregation.model.*; +import cn.icanci.rec.common.enums.DataSourceTypeEnum; +import cn.icanci.rec.common.enums.ScriptTypeEnum; +import cn.icanci.rec.engine.script.RecScriptEngine; +import cn.icanci.rec.engine.sdk.rule.EngineRepositoryLoader; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +import javax.annotation.Resource; +import javax.script.CompiledScript; + +import org.apache.commons.collections4.CollectionUtils; + +import com.google.common.collect.Maps; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/16 08:38 + */ +public class EngineRepositoryHolder { + @Resource + private EngineRepositoryLoader engineRepositoryLoader; + @Resource + private RecScriptEngine recScriptEngine; + + /** 缓存 key:domainCode value:EngineRepository */ + private static final Map ENGINE_REPOSITORY_CONFIG = Maps.newConcurrentMap(); + + /** + * 刷新仓储 + * + * @param domainCodes domainCodes + */ + public void refresh(Set domainCodes) { + if (CollectionUtils.isEmpty(domainCodes)) { + return; + } + for (String domainCode : domainCodes) { + refresh(domainCode); + } + } + + /** + * 刷新仓储 + * + * @param domain domain + */ + private void refresh(String domain) { + // 1.先获取场景,如果场景都没有,则不处理 + List scenePairs = engineRepositoryLoader.loadScenePairs(domain); + if (CollectionUtils.isEmpty(scenePairs)) { + return; + } + // 2.新建或者获取域对应的仓储 + EngineRepository repository = ENGINE_REPOSITORY_CONFIG.putIfAbsent(domain, new EngineRepository()); + + // 3.刷新本地缓存 + + // 3.1 刷新域信息 + repository.setDomainRepository(engineRepositoryLoader.loadDomain(domain)); + + // 3.2 刷新基础数据信息 + List baseDatas = engineRepositoryLoader.loadBaseDatas(domain); + // 3.2.1 编译执行脚本 + compileBaseDataScript(baseDatas); + // 3.2.2 属性仓储信息 + Map refreshBaseDatas = baseDatas.stream().collect(Collectors.toMap(BaseDTO::getUuid, baseData -> baseData)); + repository.getBaseDataRepository().putAll(refreshBaseDatas); + + // 3.3 刷新元数据信息 + List metadatas = engineRepositoryLoader.loadMetadatas(domain); + Map refreshMetadatas = metadatas.stream().collect(Collectors.toMap(BaseDTO::getUuid, metadata -> metadata)); + repository.getMetadataRepository().putAll(refreshMetadatas); + + // 3.4 刷新数据源信息 + List dataSources = engineRepositoryLoader.loadDataSource(domain); + // 3.4.1 编译执行脚本 + compileDataSourceScript(dataSources); + // 3.4.2 属性仓储信息 + Map refreshDataSources = dataSources.stream().collect(Collectors.toMap(BaseDTO::getUuid, dataSource -> dataSource)); + repository.getDataSourceRepository().putAll(refreshDataSources); + + // 3.5 构建策略信息 + List strategies = engineRepositoryLoader.loadStrategy(domain); + Map refreshStrategies = strategies.stream() + .collect(Collectors.toMap(x -> new DomainSceneKey(x.getDomainCode(), x.getSceneCode()), dataSource -> dataSource)); + repository.getStrategyRepository().putAll(refreshStrategies); + } + + /** + * 编译执行脚本 + * + * @param baseDatas baseDatas + */ + private void compileBaseDataScript(List baseDatas) { + if (CollectionUtils.isEmpty(baseDatas)) { + return; + } + for (BaseDataDTO baseData : baseDatas) { + CompiledScript compiledScript = recScriptEngine.compile(ScriptTypeEnum.valueOf(baseData.getScriptType()), baseData.getScriptContent()); + baseData.setCompiledScript(compiledScript); + } + } + + /** + * 编译执行脚本 + * + * @param dataSources dataSources + */ + private void compileDataSourceScript(List dataSources) { + if (CollectionUtils.isEmpty(dataSources)) { + return; + } + for (DataSourceDTO dataSource : dataSources) { + DataSourceTypeEnum sourceType = DataSourceTypeEnum.valueOf(dataSource.getDataSourceType()); + if (sourceType == DataSourceTypeEnum.SCRIPT) { + DataSourceDTO.ScriptInfo scriptInfo = dataSource.getScriptInfo(); + scriptInfo.setCompiledScript(recScriptEngine.compile(ScriptTypeEnum.valueOf(scriptInfo.getScriptType()), scriptInfo.getScriptContent())); + } + } + } + + /** + * 获取域 + * + * @param domainCode domainCode + * @return 返回域 + */ + public DomainDTO getDomain(String domainCode) { + return Optional // + .ofNullable(ENGINE_REPOSITORY_CONFIG.get(domainCode)) // + .map(EngineRepository::getDomainRepository) // + .orElse(null); + } + + /** + * 获取基础数据 + * + * @param domainCode domainCode + * @param uuid uuid + * @return 返回基础数据 + */ + public BaseDataDTO getBaseData(String domainCode, String uuid) { + return Optional // + .ofNullable(ENGINE_REPOSITORY_CONFIG.get(domainCode)) // + .map(EngineRepository::getBaseDataRepository) // + .orElse(Maps.newHashMap()) // + .get(uuid); + } + + /** + * 获取元数据 + * + * @param domainCode domainCode + * @param uuid uuid + * @return 返回元数据 + */ + public MetadataDTO getMetadata(String domainCode, String uuid) { + return Optional // + .ofNullable(ENGINE_REPOSITORY_CONFIG.get(domainCode)) // + .map(EngineRepository::getMetadataRepository) // + .orElse(Maps.newHashMap()) // + .get(uuid); + } + + /** + * 获取数据源 + * + * @param domainCode domainCode + * @param uuid uuid + * @return 返回数据源 + */ + public DataSourceDTO getDataSource(String domainCode, String uuid) { + return Optional // + .ofNullable(ENGINE_REPOSITORY_CONFIG.get(domainCode)) // + .map(EngineRepository::getDataSourceRepository) // + .orElse(Maps.newHashMap()) // + .get(uuid); + } + + /** + * 获取策略 + * + * @param domainCode domainCode + * @param sceneCode sceneCode + * @return 返回策略 + */ + public StrategyDTO getStrategy(String domainCode, String sceneCode) { + return Optional // + .ofNullable(ENGINE_REPOSITORY_CONFIG.get(domainCode)) // + .map(EngineRepository::getStrategyRepository) // + .orElse(Maps.newHashMap()) // + .get(new DomainSceneKey(domainCode, sceneCode)); + } +} diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/spi/DataSourceSPI.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/spi/DataSourceSPI.java index e102c38..36209b3 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/spi/DataSourceSPI.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/spi/DataSourceSPI.java @@ -9,13 +9,4 @@ import cn.icanci.rec.engine.sdk.extensions.RecSpi; */ @RecSpi public interface DataSourceSPI extends RecSupportSPI { - - /** - * 加载数据 - * - * @param domain 域 - * @param uuid uuid - * @return 返回相关的数据 - */ - DataSourceDTO loadOne(String domain,String uuid); } diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/spi/StrategySPI.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/spi/StrategySPI.java index 24011e5..91e332c 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/spi/StrategySPI.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/spi/StrategySPI.java @@ -9,13 +9,4 @@ import cn.icanci.rec.engine.sdk.extensions.RecSpi; */ @RecSpi public interface StrategySPI extends RecSupportSPI { - - /** - * 加载数据 - * - * @param domain 域 - * @param sceneCode sceneCode - * @return 返回相关的数据 - */ - StrategyDTO loadOne(String domain, String sceneCode); } -- Gitee From e44bf8d98ab31112f81166b08739a9bde0b8987c Mon Sep 17 00:00:00 2001 From: icanci Date: Wed, 16 Nov 2022 17:40:08 +0800 Subject: [PATCH 2/2] version fix --- README.md | 6 +++- pom.xml | 45 +------------------------ rec-admin/pom.xml | 4 +-- rec-admin/rec-admin-biz/pom.xml | 8 ++--- rec-admin/rec-admin-dal/pom.xml | 2 +- rec-admin/rec-admin-views/pom.xml | 4 +-- rec-admin/rec-admin-web/pom.xml | 4 +-- rec-common/pom.xml | 2 +- rec-core/pom.xml | 8 ++--- rec-engine/pom.xml | 2 +- rec-engine/rec-engine-script/pom.xml | 6 ++-- rec-engine/rec-engine-sdk-http/pom.xml | 6 ++-- rec-engine/rec-engine-sdk-netty/pom.xml | 6 ++-- rec-engine/rec-engine-sdk/pom.xml | 8 ++--- rec-socket/README.md | 3 -- rec-socket/pom.xml | 24 ------------- rec-socket/rec-socket-client/pom.xml | 19 ----------- rec-socket/rec-socket-server/pom.xml | 19 ----------- rec-spi/pom.xml | 2 +- rec-spring-boot-starter/pom.xml | 2 +- 20 files changed, 38 insertions(+), 142 deletions(-) delete mode 100644 rec-socket/README.md delete mode 100644 rec-socket/pom.xml delete mode 100644 rec-socket/rec-socket-client/pom.xml delete mode 100644 rec-socket/rec-socket-server/pom.xml diff --git a/README.md b/README.md index 73cfd05..b89257c 100644 --- a/README.md +++ b/README.md @@ -228,4 +228,8 @@ REC(Rule Engine Component)规则引擎组件:提供统一的规则处理 - 新建模块实现服务的运行:加载所有域的信息进行处理 rec-support,定义SPI加载接口,SDK和rec-core的实现不一致,取值方式不一致 - rec-register:注册中心 - rec-group:组的概念SAAS -- 返回值类型,是否开启返回值,返回值模式 \ No newline at end of file +- 返回值类型,是否开启返回值,返回值模式 +- +- mvn versions:set -DnewVersion=0.0.0.1-SNAPSHOT +- mvn versions:revert +- mvn versions:commit \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6040e5f..10bd682 100644 --- a/pom.xml +++ b/pom.xml @@ -7,13 +7,12 @@ cn.icanci.rec rec-parent pom - ${revision} + 0.0.0.1-SNAPSHOT rec-admin rec-core rec-engine rec-spring-boot-starter - rec-socket rec-common rec-spi @@ -26,8 +25,6 @@ https://gitee.com/icanci/rec - - 0.0.0.1-SNAPSHOT UTF-8 @@ -278,36 +275,6 @@ ${project.artifactId}-${project.version} - - org.codehaus.mojo - flatten-maven-plugin - 1.2.7 - - clean - true - - remove - remove - - ${project.build.directory}/flattened - - - - flatten - process-resources - - flatten - - - - flatten.clean - clean - - clean - - - - org.apache.maven.plugins maven-source-plugin @@ -370,16 +337,6 @@ release - - - org.codehaus.mojo - flatten-maven-plugin - - - - org.apache.maven.plugins - maven-source-plugin - org.apache.maven.plugins maven-deploy-plugin diff --git a/rec-admin/pom.xml b/rec-admin/pom.xml index 3df8853..b79aa15 100644 --- a/rec-admin/pom.xml +++ b/rec-admin/pom.xml @@ -5,7 +5,7 @@ rec-parent cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 @@ -34,7 +34,7 @@ cn.icanci.rec rec-common - ${revision} + ${parent.version} diff --git a/rec-admin/rec-admin-biz/pom.xml b/rec-admin/rec-admin-biz/pom.xml index 3ca4553..0733b4f 100644 --- a/rec-admin/rec-admin-biz/pom.xml +++ b/rec-admin/rec-admin-biz/pom.xml @@ -5,7 +5,7 @@ rec-admin cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 @@ -20,17 +20,17 @@ cn.icanci.rec rec-admin-dal - ${revision} + ${parent.version} cn.icanci.rec rec-spi - ${revision} + ${parent.version} cn.icanci.rec rec-engine-script - ${revision} + ${parent.version} org.mapstruct diff --git a/rec-admin/rec-admin-dal/pom.xml b/rec-admin/rec-admin-dal/pom.xml index cc67400..f3e2f4b 100644 --- a/rec-admin/rec-admin-dal/pom.xml +++ b/rec-admin/rec-admin-dal/pom.xml @@ -5,7 +5,7 @@ rec-admin cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 diff --git a/rec-admin/rec-admin-views/pom.xml b/rec-admin/rec-admin-views/pom.xml index 2b5e2c9..33e8078 100644 --- a/rec-admin/rec-admin-views/pom.xml +++ b/rec-admin/rec-admin-views/pom.xml @@ -5,7 +5,7 @@ rec-admin cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 @@ -31,7 +31,7 @@ cn.icanci.rec rec-admin-web - ${revision} + ${parent.version} diff --git a/rec-admin/rec-admin-web/pom.xml b/rec-admin/rec-admin-web/pom.xml index 94da973..a48976a 100644 --- a/rec-admin/rec-admin-web/pom.xml +++ b/rec-admin/rec-admin-web/pom.xml @@ -5,7 +5,7 @@ rec-admin cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 @@ -20,7 +20,7 @@ cn.icanci.rec rec-admin-biz - ${revision} + ${parent.version} org.springframework.boot diff --git a/rec-common/pom.xml b/rec-common/pom.xml index ee0327e..9e728e0 100644 --- a/rec-common/pom.xml +++ b/rec-common/pom.xml @@ -5,7 +5,7 @@ rec-parent cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 diff --git a/rec-core/pom.xml b/rec-core/pom.xml index aed63f7..4bb17a2 100644 --- a/rec-core/pom.xml +++ b/rec-core/pom.xml @@ -5,7 +5,7 @@ rec-parent cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 @@ -32,17 +32,17 @@ cn.icanci.rec rec-common - ${revision} + ${parent.version} cn.icanci.rec rec-engine-sdk - ${revision} + ${parent.version} cn.icanci.rec rec-engine-sdk-http - ${revision} + ${parent.version} diff --git a/rec-engine/pom.xml b/rec-engine/pom.xml index 92b3072..436f13e 100644 --- a/rec-engine/pom.xml +++ b/rec-engine/pom.xml @@ -5,7 +5,7 @@ rec-parent cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 diff --git a/rec-engine/rec-engine-script/pom.xml b/rec-engine/rec-engine-script/pom.xml index 1aaab1d..82de737 100644 --- a/rec-engine/rec-engine-script/pom.xml +++ b/rec-engine/rec-engine-script/pom.xml @@ -5,10 +5,10 @@ rec-engine cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 - + jar rec-engine-script @@ -20,7 +20,7 @@ cn.icanci.rec rec-common - ${revision} + ${parent.version} diff --git a/rec-engine/rec-engine-sdk-http/pom.xml b/rec-engine/rec-engine-sdk-http/pom.xml index b925fb7..9e24a16 100644 --- a/rec-engine/rec-engine-sdk-http/pom.xml +++ b/rec-engine/rec-engine-sdk-http/pom.xml @@ -5,10 +5,10 @@ rec-engine cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 - + jar rec-engine-sdk-http @@ -20,7 +20,7 @@ cn.icanci.rec rec-engine-sdk - ${revision} + ${parent.version} \ No newline at end of file diff --git a/rec-engine/rec-engine-sdk-netty/pom.xml b/rec-engine/rec-engine-sdk-netty/pom.xml index 079e37d..95df870 100644 --- a/rec-engine/rec-engine-sdk-netty/pom.xml +++ b/rec-engine/rec-engine-sdk-netty/pom.xml @@ -5,10 +5,10 @@ rec-engine cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 - + jar rec-engine-sdk-netty @@ -20,7 +20,7 @@ cn.icanci.rec rec-engine-sdk - ${revision} + ${parent.version} \ No newline at end of file diff --git a/rec-engine/rec-engine-sdk/pom.xml b/rec-engine/rec-engine-sdk/pom.xml index 07274b7..ba8adf3 100644 --- a/rec-engine/rec-engine-sdk/pom.xml +++ b/rec-engine/rec-engine-sdk/pom.xml @@ -5,10 +5,10 @@ rec-engine cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 - + jar rec-engine-sdk @@ -20,12 +20,12 @@ cn.icanci.rec rec-common - ${revision} + ${parent.version} cn.icanci.rec rec-engine-script - ${revision} + ${parent.version} diff --git a/rec-socket/README.md b/rec-socket/README.md deleted file mode 100644 index 34a0207..0000000 --- a/rec-socket/README.md +++ /dev/null @@ -1,3 +0,0 @@ -#### rec-socket - -- TODO \ No newline at end of file diff --git a/rec-socket/pom.xml b/rec-socket/pom.xml deleted file mode 100644 index 6c0d718..0000000 --- a/rec-socket/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - rec-parent - cn.icanci.rec - ${revision} - - 4.0.0 - - rec-socket - pom - - rec-socket-client - rec-socket-server - - - - 8 - 8 - - - \ No newline at end of file diff --git a/rec-socket/rec-socket-client/pom.xml b/rec-socket/rec-socket-client/pom.xml deleted file mode 100644 index 8769c99..0000000 --- a/rec-socket/rec-socket-client/pom.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - rec-socket - cn.icanci.rec - ${revision} - - 4.0.0 - - rec-socket-client - - - 8 - 8 - - - \ No newline at end of file diff --git a/rec-socket/rec-socket-server/pom.xml b/rec-socket/rec-socket-server/pom.xml deleted file mode 100644 index afe11a4..0000000 --- a/rec-socket/rec-socket-server/pom.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - rec-socket - cn.icanci.rec - ${revision} - - 4.0.0 - - rec-socket-server - - - 8 - 8 - - - \ No newline at end of file diff --git a/rec-spi/pom.xml b/rec-spi/pom.xml index 511f9dd..90c449f 100644 --- a/rec-spi/pom.xml +++ b/rec-spi/pom.xml @@ -5,7 +5,7 @@ rec-parent cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 diff --git a/rec-spring-boot-starter/pom.xml b/rec-spring-boot-starter/pom.xml index 10d2d9c..fd710b8 100644 --- a/rec-spring-boot-starter/pom.xml +++ b/rec-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ rec-parent cn.icanci.rec - ${revision} + 0.0.0.1-SNAPSHOT 4.0.0 -- Gitee