From 1948b30d6908ed14a9326606fa0ffa7c939b5a42 Mon Sep 17 00:00:00 2001 From: icanci Date: Sun, 13 Nov 2022 09:26:11 +0800 Subject: [PATCH] =?UTF-8?q?core#spi=E3=80=81rec=20Engine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++- pom.xml | 18 ++++++ .../dal/mongodb/daointerface/BaseDataDAO.java | 4 -- .../controller/config/BaseDataController.java | 15 ++--- .../rec/common/enums/ScriptTypeEnum.java | 8 +-- rec-core/pom.xml | 52 ++++++++++++++- .../icanci/rec/core/RecCoreApplication.java | 17 +++++ .../rec/core/facade/RuleExecutorFacade.java | 15 +++++ .../rec/core/repository/RuleRepository.java | 13 ---- .../rec/core/repository/package-info.java | 7 --- .../cn/icanci/rec/core/spi/BaseDataSPI.java | 10 +++ .../cn/icanci/rec/core/spi/DataSourceSPI.java | 10 +++ .../cn/icanci/rec/core/spi/DomainSPI.java | 13 ++++ .../cn/icanci/rec/core/spi/MetadataSPI.java | 11 ++++ .../cn/icanci/rec/core/spi/RecSupportSPI.java | 28 +++++++++ .../java/cn/icanci/rec/core/spi/SceneSPI.java | 10 +++ .../cn/icanci/rec/core/spi/StrategySPI.java | 10 +++ .../rec/core/spi/http/HttpDomainSPI.java | 27 ++++++++ .../rec/core/spi/mongo/MongoDomainSPI.java | 26 ++++++++ .../cn/icanci/rec/core/spi/package-info.java | 9 +++ rec-core/src/main/resources/application.yml | 32 ++++++++++ rec-core/src/main/resources/log4j2.xml | 63 +++++++++++++++++++ rec-engine/pom.xml | 1 + rec-engine/rec-engine-rule/pom.xml | 48 ++++++++++++++ .../icanci/rec/engine/rule/package-info.java | 7 +++ rec-engine/rec-engine-script/pom.xml | 29 +++++++++ .../engine/script/RecScriptEngineManager.java | 25 ++++++++ .../rec/engine/script/ScriptEngine.java | 27 ++++++++ .../rec/engine/script/ScriptEngineImpl.java | 17 +++++ .../exception/ScriptRuntimeException.java | 31 +++++++++ .../rec/engine/script/package-info.java | 2 + 31 files changed, 553 insertions(+), 39 deletions(-) create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/RecCoreApplication.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/facade/RuleExecutorFacade.java delete mode 100644 rec-core/src/main/java/cn/icanci/rec/core/repository/RuleRepository.java delete mode 100644 rec-core/src/main/java/cn/icanci/rec/core/repository/package-info.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/BaseDataSPI.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/DataSourceSPI.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/DomainSPI.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/MetadataSPI.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/RecSupportSPI.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/SceneSPI.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/StrategySPI.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/http/HttpDomainSPI.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/mongo/MongoDomainSPI.java create mode 100644 rec-core/src/main/java/cn/icanci/rec/core/spi/package-info.java create mode 100644 rec-core/src/main/resources/application.yml create mode 100644 rec-core/src/main/resources/log4j2.xml create mode 100644 rec-engine/rec-engine-rule/pom.xml create mode 100644 rec-engine/rec-engine-rule/src/main/java/cn/icanci/rec/engine/rule/package-info.java create mode 100644 rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/RecScriptEngineManager.java create mode 100644 rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/ScriptEngine.java create mode 100644 rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/ScriptEngineImpl.java create mode 100644 rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/exception/ScriptRuntimeException.java diff --git a/README.md b/README.md index d3fe657..d15430e 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,11 @@ REC(Rule Engine Component)规则引擎组件:提供统一的规则处理 - rec-admin-dal:数据库管理模块 - rec-admin-views:视图模块 - rec-admin-web:对前端接口模块 -- rec-common:模型模块 -- rec-core:核心构件 - - 核心处理流程 +- rec-common:基础模型、枚举模块等 +- rec-core:核心独立部署服务 + - 加载所有域进行流程处理,提供Facade接口和MQ的方式进行数据处理 - rec-engine:规则引擎处理器 + - rec-engine-rule:规则引擎规则处理 - rec-engine-script:规则引擎脚本处理器 - rec-socket:rec通信管理 - rec-socket-client:rec通信客户端 diff --git a/pom.xml b/pom.xml index c90dc3c..0433361 100644 --- a/pom.xml +++ b/pom.xml @@ -45,6 +45,12 @@ 1.2.70 1.4.2.Final + + + + 2.4.7.Final + + 2.5.11 @@ -146,6 +152,18 @@ mapstruct ${mapstruct.version} + + + org.mvel + mvel2 + ${mvel2.version} + + + org.codehaus.groovy + groovy-all + ${groovy.version} + pom + diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/BaseDataDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/BaseDataDAO.java index ad0e515..9c91140 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/BaseDataDAO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/BaseDataDAO.java @@ -27,10 +27,6 @@ public interface BaseDataDAO extends BaseDAO { * 基础数据名称 */ String fieldName = "fieldName"; - /** - * 基础数据Code - */ - String fieldCode = "fieldCode"; /** * 数据类型(布尔、字符串、数值、日期、元数据等) */ diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/BaseDataController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/BaseDataController.java index d929dd5..8c01418 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/BaseDataController.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/BaseDataController.java @@ -1,11 +1,5 @@ package cn.icanci.rec.admin.web.controller.config; -import java.util.List; - -import javax.annotation.Resource; - -import org.springframework.web.bind.annotation.*; - import cn.icanci.rec.admin.biz.service.BaseDataService; import cn.icanci.rec.admin.web.form.BaseDataDebugForm; import cn.icanci.rec.admin.web.form.BaseDataQueryForm; @@ -15,6 +9,12 @@ import cn.icanci.rec.common.model.TextValue; import cn.icanci.rec.common.model.config.BaseDataVO; import cn.icanci.rec.common.result.R; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.*; + /** * @author icanci * @since 1.0 Created in 2022/11/12 20:30 @@ -58,6 +58,7 @@ public class BaseDataController { @GetMapping("debug") public R debug(@RequestBody BaseDataDebugForm form) { baseDataService.debug(baseDataWebMapper.web2vo(form.getBaseData()), form.getScriptContentTest()); - return R.builderOk().data("debugResp", textValues).build(); + // return R.builderOk().data("debugResp", textValues).build(); + return R.builder().build(); } } diff --git a/rec-common/src/main/java/cn/icanci/rec/common/enums/ScriptTypeEnum.java b/rec-common/src/main/java/cn/icanci/rec/common/enums/ScriptTypeEnum.java index 16552dc..b2681dd 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/enums/ScriptTypeEnum.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/enums/ScriptTypeEnum.java @@ -20,10 +20,10 @@ public enum ScriptTypeEnum { * JAVA_SCRIPT */ JAVA_SCRIPT("JAVA_SCRIPT", "JavaScript脚本"), - /** - * Json 取值 - */ - JSON("JSON", "Json取值"), + // /** + // * Json 取值 + // */ + // JSON("JSON", "Json取值"), ; diff --git a/rec-core/pom.xml b/rec-core/pom.xml index fe3a316..7259977 100644 --- a/rec-core/pom.xml +++ b/rec-core/pom.xml @@ -10,7 +10,6 @@ 4.0.0 rec-core - pom @@ -19,4 +18,55 @@ 8 + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-logging + + + + + cn.icanci.rec + rec-common + ${revision} + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring.boot.version} + + + cn.icanci.rec.core.RecCoreApplication + + + + + repackage + + + + + + + + + true + src/main/resources + + **/*.yml + **/*.xml + + + + \ No newline at end of file diff --git a/rec-core/src/main/java/cn/icanci/rec/core/RecCoreApplication.java b/rec-core/src/main/java/cn/icanci/rec/core/RecCoreApplication.java new file mode 100644 index 0000000..c5e9d7a --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/RecCoreApplication.java @@ -0,0 +1,17 @@ +package cn.icanci.rec.core; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/12 22:44 + */ +@ComponentScan(basePackages = { "cn.icanci.rec" }) +@SpringBootApplication +public class RecCoreApplication { + public static void main(String[] args) { + SpringApplication.run(RecCoreApplication.class, args); + } +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/facade/RuleExecutorFacade.java b/rec-core/src/main/java/cn/icanci/rec/core/facade/RuleExecutorFacade.java new file mode 100644 index 0000000..8f9403d --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/facade/RuleExecutorFacade.java @@ -0,0 +1,15 @@ +package cn.icanci.rec.core.facade; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * TODO + * + * @author icanci + * @since 1.0 Created in 2022/11/12 22:45 + */ +@RestController +@RequestMapping("/rec/core") +public class RuleExecutorFacade { +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/repository/RuleRepository.java b/rec-core/src/main/java/cn/icanci/rec/core/repository/RuleRepository.java deleted file mode 100644 index ce5a82d..0000000 --- a/rec-core/src/main/java/cn/icanci/rec/core/repository/RuleRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package cn.icanci.rec.core.repository; - -/** - * 本地仓储存储 - * - * TODO 提供公共脚本处理包,收口特殊格式的脚本处理,比如时间等 - * - * @author icanci - * @since 1.0 Created in 2022/10/29 20:42 - */ -public class RuleRepository { - -} \ No newline at end of file diff --git a/rec-core/src/main/java/cn/icanci/rec/core/repository/package-info.java b/rec-core/src/main/java/cn/icanci/rec/core/repository/package-info.java deleted file mode 100644 index 60eb1e2..0000000 --- a/rec-core/src/main/java/cn/icanci/rec/core/repository/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * 仓储模块 - * - * @author icanci - * @since 1.0 Created in 2022/10/29 20:42 - */ -package cn.icanci.rec.core.repository; \ No newline at end of file diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/BaseDataSPI.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/BaseDataSPI.java new file mode 100644 index 0000000..c86e1a6 --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/BaseDataSPI.java @@ -0,0 +1,10 @@ +package cn.icanci.rec.core.spi; + +import cn.icanci.rec.common.model.config.BaseDataVO; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/13 09:14 + */ +public interface BaseDataSPI extends RecSupportSPI { +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/DataSourceSPI.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/DataSourceSPI.java new file mode 100644 index 0000000..9a37b89 --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/DataSourceSPI.java @@ -0,0 +1,10 @@ +package cn.icanci.rec.core.spi; + +import cn.icanci.rec.common.model.config.DataSourceVO; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/13 09:15 + */ +public interface DataSourceSPI extends RecSupportSPI { +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/DomainSPI.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/DomainSPI.java new file mode 100644 index 0000000..3497ccd --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/DomainSPI.java @@ -0,0 +1,13 @@ +package cn.icanci.rec.core.spi; + +import cn.icanci.rec.common.model.config.DomainVO; + +/** + * 域加载SPI + * + * @author icanci + * @since 1.0 Created in 2022/11/13 09:11 + */ +public interface DomainSPI extends RecSupportSPI { + +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/MetadataSPI.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/MetadataSPI.java new file mode 100644 index 0000000..70d8952 --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/MetadataSPI.java @@ -0,0 +1,11 @@ +package cn.icanci.rec.core.spi; + +import cn.icanci.rec.common.model.config.MetadataVO; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/13 09:15 + */ +public interface MetadataSPI extends RecSupportSPI { + +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/RecSupportSPI.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/RecSupportSPI.java new file mode 100644 index 0000000..6d160fd --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/RecSupportSPI.java @@ -0,0 +1,28 @@ +package cn.icanci.rec.core.spi; + +import cn.icanci.rec.common.model.config.BaseVO; + +import java.util.List; +import java.util.Set; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/13 09:11 + */ +public interface RecSupportSPI { + /** + * 加载数据 + * + * @param domains 域 + * @return 返回相关的数据 + */ + List load(Set domains); + + /** + * 加载数据 + * + * @param domain 域 + * @return 返回相关的数据 + */ + List load(String domain); +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/SceneSPI.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/SceneSPI.java new file mode 100644 index 0000000..5aa4ae8 --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/SceneSPI.java @@ -0,0 +1,10 @@ +package cn.icanci.rec.core.spi; + +import cn.icanci.rec.common.model.config.SceneVO; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/13 09:16 + */ +public interface SceneSPI extends RecSupportSPI { +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/StrategySPI.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/StrategySPI.java new file mode 100644 index 0000000..732b8ca --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/StrategySPI.java @@ -0,0 +1,10 @@ +package cn.icanci.rec.core.spi; + +import cn.icanci.rec.common.model.config.StrategyVO; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/13 09:16 + */ +public interface StrategySPI extends RecSupportSPI{ +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/http/HttpDomainSPI.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/http/HttpDomainSPI.java new file mode 100644 index 0000000..4ebeb0d --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/http/HttpDomainSPI.java @@ -0,0 +1,27 @@ +package cn.icanci.rec.core.spi.http; + +import cn.icanci.rec.common.model.config.DomainVO; +import cn.icanci.rec.core.spi.DomainSPI; + +import java.util.List; +import java.util.Set; + +import org.springframework.stereotype.Service; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/13 09:18 + */ +@Service("httpDomainSPI") +public class HttpDomainSPI implements DomainSPI { + + @Override + public List load(Set domains) { + return null; + } + + @Override + public List load(String domain) { + return null; + } +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/mongo/MongoDomainSPI.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/mongo/MongoDomainSPI.java new file mode 100644 index 0000000..038c2dd --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/mongo/MongoDomainSPI.java @@ -0,0 +1,26 @@ +package cn.icanci.rec.core.spi.mongo; + +import cn.icanci.rec.common.model.config.DomainVO; +import cn.icanci.rec.core.spi.DomainSPI; + +import java.util.List; +import java.util.Set; + +import org.springframework.stereotype.Service; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/13 09:19 + */ +@Service("mongoDomainSPI") +public class MongoDomainSPI implements DomainSPI { + @Override + public List load(Set domains) { + return null; + } + + @Override + public List load(String domain) { + return null; + } +} diff --git a/rec-core/src/main/java/cn/icanci/rec/core/spi/package-info.java b/rec-core/src/main/java/cn/icanci/rec/core/spi/package-info.java new file mode 100644 index 0000000..868d6b6 --- /dev/null +++ b/rec-core/src/main/java/cn/icanci/rec/core/spi/package-info.java @@ -0,0 +1,9 @@ +/** + * 定义加载数据的标准SPI接口 + * - 实现方式HTTP:通过HTTP远程调用加载 + * - 实现方式Mongo:通过关联MongoDB数据库进行加载 + * + * @author icanci + * @since 1.0 Created in 2022/11/13 09:19 + */ +package cn.icanci.rec.core.spi; \ No newline at end of file diff --git a/rec-core/src/main/resources/application.yml b/rec-core/src/main/resources/application.yml new file mode 100644 index 0000000..36350a8 --- /dev/null +++ b/rec-core/src/main/resources/application.yml @@ -0,0 +1,32 @@ +# Tomcat +server: + tomcat: + uri-encoding: UTF-8 + port: 9090 + servlet: + context-path: / + +logging: + config: classpath:log4j2.xml + +rec: + env: test + +spring: + # datasource: + # driverClassName: com.mysql.cj.jdbc.Driver + # url: jdbc:mysql://127.0.0.1:3306/rec?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC + # username: root + # password: root + servlet: + multipart: + max-file-size: 10MB + max-request-size: 10MB + resources: + static-locations: classpath:static/,file:static/ + mvc: + static-path-pattern: /** +# +# data: +# mongodb: +# uri: mongodb://127.0.0.1:27017/rec diff --git a/rec-core/src/main/resources/log4j2.xml b/rec-core/src/main/resources/log4j2.xml new file mode 100644 index 0000000..97bd4d7 --- /dev/null +++ b/rec-core/src/main/resources/log4j2.xml @@ -0,0 +1,63 @@ + + + + + ./logs + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %c{1.}#%M(%L) %msg%n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/rec-engine/pom.xml b/rec-engine/pom.xml index 6dd681f..678ecf9 100644 --- a/rec-engine/pom.xml +++ b/rec-engine/pom.xml @@ -13,6 +13,7 @@ pom rec-engine-script + rec-engine-rule diff --git a/rec-engine/rec-engine-rule/pom.xml b/rec-engine/rec-engine-rule/pom.xml new file mode 100644 index 0000000..70e35c0 --- /dev/null +++ b/rec-engine/rec-engine-rule/pom.xml @@ -0,0 +1,48 @@ + + + + rec-engine + cn.icanci.rec + ${revision} + + 4.0.0 + + rec-engine-rule + + + 8 + 8 + + + + + cn.icanci.rec + rec-common + ${revision} + + + + org.mvel + mvel2 + + + org.codehaus.groovy + groovy-all + pom + + + org.apache.commons + commons-lang3 + + + org.apache.commons + commons-collections4 + + + com.google.guava + guava + + + \ No newline at end of file diff --git a/rec-engine/rec-engine-rule/src/main/java/cn/icanci/rec/engine/rule/package-info.java b/rec-engine/rec-engine-rule/src/main/java/cn/icanci/rec/engine/rule/package-info.java new file mode 100644 index 0000000..bc92a5d --- /dev/null +++ b/rec-engine/rec-engine-rule/src/main/java/cn/icanci/rec/engine/rule/package-info.java @@ -0,0 +1,7 @@ +/** + * 规则引擎-规则 + * + * @author icanci + * @since 1.0 Created in 2022/11/12 22:40 + */ +package cn.icanci.rec.engine.rule; \ No newline at end of file diff --git a/rec-engine/rec-engine-script/pom.xml b/rec-engine/rec-engine-script/pom.xml index 12f62d4..e3da157 100644 --- a/rec-engine/rec-engine-script/pom.xml +++ b/rec-engine/rec-engine-script/pom.xml @@ -16,4 +16,33 @@ 8 + + + cn.icanci.rec + rec-common + ${revision} + + + + org.mvel + mvel2 + + + org.codehaus.groovy + groovy-all + pom + + + org.apache.commons + commons-lang3 + + + org.apache.commons + commons-collections4 + + + com.google.guava + guava + + \ No newline at end of file diff --git a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/RecScriptEngineManager.java b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/RecScriptEngineManager.java new file mode 100644 index 0000000..ae9dfb9 --- /dev/null +++ b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/RecScriptEngineManager.java @@ -0,0 +1,25 @@ +package cn.icanci.rec.engine.script; + +import javax.script.ScriptEngineManager; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/12 22:27 + */ +public class RecScriptEngineManager { + private static final ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); + + // public T doRun(T t) { + // + // } + + public static void main(String[] args) { + // List engineFactories = scriptEngineManager.getEngineFactories(); + // for (ScriptEngineFactory engineFactory : engineFactories) { + // ScriptEngine scriptEngine = engineFactory.getScriptEngine(); + // } + +// ScriptEngine scriptEngine = new ScriptEngineImpl(); +// Object o = scriptEngine.doEval(); + } +} diff --git a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/ScriptEngine.java b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/ScriptEngine.java new file mode 100644 index 0000000..5f2d579 --- /dev/null +++ b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/ScriptEngine.java @@ -0,0 +1,27 @@ +package cn.icanci.rec.engine.script; + +/** + * 脚本执行引擎抽象顶级接口 + * + * @author icanci + * @since 1.0 Created in 2022/11/12 22:12 + */ +public interface ScriptEngine { + /** + * 执行脚本 + * + * @param script script + * @return 返回执行内容 + */ + Object eval(String script); + + /** + * 执行脚本 + * + * @param t 执行类型 + * @param script 脚本参数 + * @param 泛型 + * @return 返回指定类型的结果值 + */ + T doEval(T t,String script); +} diff --git a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/ScriptEngineImpl.java b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/ScriptEngineImpl.java new file mode 100644 index 0000000..a43c596 --- /dev/null +++ b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/ScriptEngineImpl.java @@ -0,0 +1,17 @@ +package cn.icanci.rec.engine.script; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/12 22:46 + */ +public class ScriptEngineImpl implements ScriptEngine { + @Override + public Object eval(String script) { + return null; + } + + @Override + public T doEval(T defaultVal, String script) { + return (T) eval(script); + } +} diff --git a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/exception/ScriptRuntimeException.java b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/exception/ScriptRuntimeException.java new file mode 100644 index 0000000..b1ed510 --- /dev/null +++ b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/exception/ScriptRuntimeException.java @@ -0,0 +1,31 @@ +package cn.icanci.rec.engine.script.exception; + +/** + * 脚本运行时异常 + * + * @author icanci + * @since 1.0 Created in 2022/11/12 22:34 + */ +public class ScriptRuntimeException extends RuntimeException { + private static final long serialVersionUID = 8247161532396425034L; + + public ScriptRuntimeException() { + super(); + } + + public ScriptRuntimeException(String message) { + super(message); + } + + public ScriptRuntimeException(String message, Throwable cause) { + super(message, cause); + } + + public ScriptRuntimeException(Throwable cause) { + super(cause); + } + + protected ScriptRuntimeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/package-info.java b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/package-info.java index fe492c7..9102471 100644 --- a/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/package-info.java +++ b/rec-engine/rec-engine-script/src/main/java/cn/icanci/rec/engine/script/package-info.java @@ -1,4 +1,6 @@ /** + * 规则引擎-脚本引擎 + * * @author icanci * @since 1.0 Created in 2022/10/29 20:38 */ -- Gitee