diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetApplicationRunner.java b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetApplicationRunner.java index 0c9c847..b425dd8 100644 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetApplicationRunner.java +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DataAssetApplicationRunner.java @@ -1,5 +1,6 @@ package com.ruoyi.dataAsset.config; +import com.alibaba.druid.pool.DruidDataSource; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.web.page.TableDataInfo; import com.ruoyi.dataAsset.domain.DataSource; @@ -11,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import java.util.List; +import java.util.Map; /** * 数据资产应用程序运行程序 diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DruidDataSourceFactory.java b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DruidDataSourceFactory.java index 99096e4..9bad1ac 100644 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DruidDataSourceFactory.java +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-client/src/main/java/com/ruoyi/dataAsset/config/DruidDataSourceFactory.java @@ -3,7 +3,6 @@ package com.ruoyi.dataAsset.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Import; - import java.util.HashMap; import java.util.Map; @@ -26,4 +25,8 @@ public class DruidDataSourceFactory { public void put(Long id,DruidDataSource druidDataSource){ this.druidDataSourceMap.put(id,druidDataSource); } + + public DruidDataSource get(Long id){ + return this.druidDataSourceMap.get(id); + } } diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-common/src/main/java/com/ruoyi/dataAsset/util/DataSourceUtil.java b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-common/src/main/java/com/ruoyi/dataAsset/util/DataSourceUtil.java index 57ca0a2..c82d208 100644 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-common/src/main/java/com/ruoyi/dataAsset/util/DataSourceUtil.java +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-common/src/main/java/com/ruoyi/dataAsset/util/DataSourceUtil.java @@ -37,20 +37,23 @@ public class DataSourceUtil { * @return 驱动全类名 */ public static String confirmUrl(DataSource dataSource){ - String url="jdbc:"+dataSource.getDatabaseType()+dataSource.getIp()+":"+dataSource.getPort(); + StringBuilder url= new StringBuilder("jdbc:" + dataSource.getDatabaseType() + dataSource.getIp() + ":" + dataSource.getPort()); String databaseType = dataSource.getDatabaseType(); if(databaseType.contains("mysql")){ - url+="/"+dataSource.getDatabases(); + url.append("/").append(dataSource.getDatabases()); if(StringUtils.isNotEmpty(dataSource.getConnectionParameter())){ - url+="?"+dataSource.getConnectionParameter(); + url.append("?").append(dataSource.getConnectionParameter()); } }else if(databaseType.contains("sqlserver")){ - url+=";DatabaseName="+dataSource.getDatabases()+";"; + url.append(";DatabaseName=").append(dataSource.getDatabases()).append(";"); if(StringUtils.isNotEmpty(dataSource.getConnectionParameter())){ - url+=dataSource.getConnectionParameter()+";"; + String[] params = dataSource.getConnectionParameter().split("&"); + for (String param : params) { + url.append(param).append(";"); + } } } - return url; + return url.toString(); } /** diff --git a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-server/src/main/java/com/ruoyi/dataAsset/service/impl/DataSourceServiceImpl.java b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-server/src/main/java/com/ruoyi/dataAsset/service/impl/DataSourceServiceImpl.java index 1d21b20..7f0d9db 100644 --- a/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-server/src/main/java/com/ruoyi/dataAsset/service/impl/DataSourceServiceImpl.java +++ b/ruoyi-modules/ruoyi-data_asset/ruoyi-data_asset-server/src/main/java/com/ruoyi/dataAsset/service/impl/DataSourceServiceImpl.java @@ -152,7 +152,6 @@ public class DataSourceServiceImpl extends ServiceImpl ruoyi-data_transform + pom ruoyi-data_transform数据转换模块 + + ruoyi-data_transform-common + ruoyi-data_transform-remote + ruoyi-data_transform-server + 17 17 UTF-8 - - - - com.muyu - muyu-common-security - - - - - com.muyu - muyu-common-swagger - - - - - com.ruoyi - ruoyi-data_asset-client - 3.6.3 - - - - - com.ruoyi - ruoyi-rule_engine-client - 3.6.3 - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-config - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-sentinel - - - - - org.springframework.boot - spring-boot-starter-actuator - - - - - io.springfox - springfox-swagger-ui - ${swagger.fox.version} - - - - - com.mysql - mysql-connector-j - - - - - com.muyu - muyu-common-datascope - - - - - com.muyu - muyu-common-swagger - - - - - com.microsoft.sqlserver - mssql-jdbc - 9.4.0.jre8 - - diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/pom.xml b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/pom.xml new file mode 100644 index 0000000..c612c33 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/pom.xml @@ -0,0 +1,102 @@ + + + 4.0.0 + + com.muyu + ruoyi-data_transform + 3.6.3 + + + ruoyi-data_transform-common + ruoyi-data_transform-common数据转换公共模块 + + 17 + 17 + UTF-8 + + + + + com.muyu + muyu-common-security + + + + + com.muyu + muyu-common-swagger + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + muyu-common-datascope + + + + + com.muyu + muyu-common-swagger + + + + + com.microsoft.sqlserver + mssql-jdbc + 9.4.0.jre8 + + + + + com.ruoyi + ruoyi-data_asset-client + 3.6.3 + + + + + com.ruoyi + ruoyi-rule_engine-client + 3.6.3 + + + diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/src/main/java/com/ruoyi/dataTransform/domain/req/RandomDataReq.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/src/main/java/com/ruoyi/dataTransform/domain/req/RandomDataReq.java new file mode 100644 index 0000000..b4aa8f4 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/src/main/java/com/ruoyi/dataTransform/domain/req/RandomDataReq.java @@ -0,0 +1,36 @@ +package com.ruoyi.dataTransform.domain.req; + +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +/** + * 随机数据请求类 + * @ClassName RandomDataReq + * @Author 森静若林 + * @Date 2024/5/11 15:37 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "RandomDataReq", description = "随机数据") +public class RandomDataReq { + + /** + * 数据源编号 + */ + private Long dataSourceId; + + /** + * 表名称 + */ + private String tableName; + + /** + * 作用域编号 + */ + private Integer scope; +} diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/src/main/java/com/ruoyi/dataTransform/domain/req/TestDataReq.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/src/main/java/com/ruoyi/dataTransform/domain/req/TestDataReq.java new file mode 100644 index 0000000..2dee120 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/src/main/java/com/ruoyi/dataTransform/domain/req/TestDataReq.java @@ -0,0 +1,59 @@ +package com.ruoyi.dataTransform.domain.req; + +import com.ruoyi.ruleEngine.client.model.DataModel; +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import java.util.List; + +/** + * 测试数据请求类 + * @ClassName TestDataReq + * @Author 森静若林 + * @Date 2024/5/11 15:37 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "TestDataReq", description = "测试数据") +public class TestDataReq { + + /** + * 版本编号 + */ + private Long versionId; + + /** + * 版本类名 + */ + private String versionClass; + + /** + * 作用域编号 + */ + private Integer scope; + + /** + * 版本内容 + */ + private String ruleContent; + + /** + * 数据模型 + */ + private DataModel dataModel; + + /** + * 键集合 + */ + private List keys; + + /** + * 记录集合 + */ + private List> recordsList; + +} diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/src/main/java/com/ruoyi/dataTransform/util/DataExtractUtil.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/src/main/java/com/ruoyi/dataTransform/util/DataExtractUtil.java new file mode 100644 index 0000000..ae1fc4d --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-common/src/main/java/com/ruoyi/dataTransform/util/DataExtractUtil.java @@ -0,0 +1,105 @@ +package com.ruoyi.dataTransform.util; + +import com.ruoyi.ruleEngine.client.model.DataModel; +import java.sql.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + * 数据抽取工具 + * @ClassName DataExtractUtil + * @Author 森静若林 + * @Date 2024/5/6 20:51 + */ + +public class DataExtractUtil { + + private static final String RANDOM_SOME_SQL="select * from table_name"; + + private static final String RANDOM_ONE_SQL="select t1.* from table_name as t1 join (select rand()*(select max(primary_key) from table_name) as primary_key ) as t2 on t1.primary_key>t2.primary_key"; + + public static List> getRecordsModels(Connection connection,String tableName){ + List> recordsModels=new ArrayList<>(); + try { + String needSql = RANDOM_SOME_SQL.replaceAll("table_name", tableName); + if(connection.getMetaData().getDatabaseProductName().contains("MySQL")){ + needSql+=" limit 10;"; + }else { + needSql+=" order by primary_key offset 0 rows fetch next 10 rows only;"; + } + String primaryKey = getPrimaryKey(connection, tableName); + if(Objects.nonNull(primaryKey)){ + needSql = needSql.replaceAll("primary_key",primaryKey); + } + PreparedStatement preparedStatement = connection.prepareStatement(needSql); + ResultSet resultSet = preparedStatement.executeQuery(); + while (resultSet.next()){ + List dataModels=new ArrayList<>(); + setDataModels(dataModels,resultSet); + recordsModels.add(dataModels); + } + resultSet.close(); + preparedStatement.close(); + connection.close(); + } catch (SQLException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + return recordsModels; + } + + public static List getDataModels(Connection connection,String tableName){ + List dataModels=new ArrayList<>(); + try { + String needSql = RANDOM_ONE_SQL.replaceAll("table_name", tableName); + if(connection.getMetaData().getDatabaseProductName().contains("MySQL")){ + needSql+=" limit 1;"; + }else { + needSql+=" order by primary_key offset 0 rows fetch next 1 rows only;"; + } + String primaryKey = getPrimaryKey(connection, tableName); + if(Objects.nonNull(primaryKey)){ + needSql = needSql.replaceAll("primary_key",primaryKey); + } + PreparedStatement preparedStatement = connection.prepareStatement(needSql); + ResultSet resultSet = preparedStatement.executeQuery(); + if(resultSet.next()){ + setDataModels(dataModels,resultSet); + } + resultSet.close(); + preparedStatement.close(); + connection.close(); + } catch (SQLException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + return dataModels; + } + + public static void setDataModels(List dataModels,ResultSet resultSet) throws SQLException, ClassNotFoundException { + int index=1; + ResultSetMetaData data = resultSet.getMetaData(); + int columnCount = data.getColumnCount(); + while (index<=columnCount){ + DataModel dataModel = DataModel.builder() + .key(data.getColumnName(index)) + .value(resultSet.getString(index)) + .sourceType(data.getColumnTypeName(index)) + .processType(data.getColumnClassName(index)) + .processClass(Class.forName(data.getColumnClassName(index))) + .build(); + dataModels.add(dataModel); + index++; + } + } + + public static String getPrimaryKey(Connection connection,String tableName) throws SQLException { + ResultSet primaryKeys = connection.getMetaData().getPrimaryKeys(connection.getCatalog(), null, tableName); + String primaryKeyName=null; + while (primaryKeys.next()){ + primaryKeyName=primaryKeys.getString("COLUMN_NAME"); + } + primaryKeys.close(); + return primaryKeyName; + } + +} diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-remote/pom.xml b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-remote/pom.xml new file mode 100644 index 0000000..d47461a --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-remote/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + com.muyu + ruoyi-data_transform + 3.6.3 + + + com.ruoyi + ruoyi-data_transform-remote + + + 17 + 17 + UTF-8 + + + diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/pom.xml b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/pom.xml new file mode 100644 index 0000000..f392293 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/pom.xml @@ -0,0 +1,53 @@ + + + 4.0.0 + + com.muyu + ruoyi-data_transform + 3.6.3 + + + ruoyi-data_transform-server + + + 17 + 17 + UTF-8 + + + + + + com.muyu + ruoyi-data_transform-common + 3.6.3 + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + diff --git a/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/GtlDataTransformApplication.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/GtlDataTransformApplication.java similarity index 100% rename from ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/GtlDataTransformApplication.java rename to ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/GtlDataTransformApplication.java diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/controller/DataExtractController.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/controller/DataExtractController.java new file mode 100644 index 0000000..432d2a1 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/controller/DataExtractController.java @@ -0,0 +1,37 @@ +package com.ruoyi.dataTransform.controller; + +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.dataTransform.domain.req.RandomDataReq; +import com.ruoyi.dataTransform.service.DataExtractService; +import com.ruoyi.ruleEngine.client.model.DataModel; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * 数据抽取 + * @ClassName DataExtractController + * @Author 森静若林 + * @Date 2024/5/9 10:56 + */ +@Api(tags = "数据抽取") +@RestController +@RequestMapping("/extract") +public class DataExtractController { + + @Autowired + private DataExtractService dataExtractService; + + /** + * 获取随机数据 + */ + @ApiOperation("获取随机数据") + //@RequiresPermissions("dataTransform:extract:query") + @GetMapping("/getRandomData") + public Result>> getRandomData(RandomDataReq randomDataReq) { + return Result.success(dataExtractService.getRandomData(randomDataReq)); + } + +} diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/controller/EngineOperationController.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/controller/EngineOperationController.java new file mode 100644 index 0000000..d919d85 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/controller/EngineOperationController.java @@ -0,0 +1,34 @@ +package com.ruoyi.dataTransform.controller; + +import com.ruoyi.common.core.domain.Result; +import com.ruoyi.dataTransform.domain.req.TestDataReq; +import com.ruoyi.dataTransform.service.EngineOperationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 引擎运行 + * @ClassName EngineOperationController + * @Author 森静若林 + * @Date 2024/5/9 10:56 + */ +@Api(tags = "引擎运行") +@RestController +@RequestMapping("/operation") +public class EngineOperationController { + + @Autowired + private EngineOperationService engineOperationService; + + /** + * 测试引擎 + */ + @ApiOperation("测试引擎") + //@RequiresPermissions("dataTransform:operation:add") + @PostMapping("/testVersion") + public Result testVersion(@RequestBody TestDataReq testDataReq) { + return Result.success(engineOperationService.testVersion(testDataReq),"测试成功"); + } +} diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/DataExtractService.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/DataExtractService.java new file mode 100644 index 0000000..5d4628e --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/DataExtractService.java @@ -0,0 +1,22 @@ +package com.ruoyi.dataTransform.service; + +import com.ruoyi.dataTransform.domain.req.RandomDataReq; +import com.ruoyi.ruleEngine.client.model.DataModel; +import java.util.List; + +/** + * 数据抽取 service接口 + * @ClassName DataExtractService + * @Author 森静若林 + * @Date 2024/5/9 10:56 + */ +public interface DataExtractService { + + /** + * 获取随机数据 + * @param randomDataReq 随机数据 + * @return 随机数据 + */ + List> getRandomData(RandomDataReq randomDataReq); + +} diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/EngineOperationService.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/EngineOperationService.java new file mode 100644 index 0000000..77bf789 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/EngineOperationService.java @@ -0,0 +1,20 @@ +package com.ruoyi.dataTransform.service; + +import com.ruoyi.dataTransform.domain.req.TestDataReq; + +/** + * 引擎运行 service接口 + * @ClassName EngineOperationService + * @Author 森静若林 + * @Date 2024/5/9 10:56 + */ +public interface EngineOperationService { + + /** + * 测试引擎 + * @param testDataReq 测试数据 + * @return 测试结果 + */ + Object testVersion(TestDataReq testDataReq); + +} diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/impl/DataExtractServiceImpl.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/impl/DataExtractServiceImpl.java new file mode 100644 index 0000000..0748213 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/impl/DataExtractServiceImpl.java @@ -0,0 +1,49 @@ +package com.ruoyi.dataTransform.service.impl; + +import com.alibaba.druid.pool.DruidPooledConnection; +import com.ruoyi.dataAsset.config.DruidDataSourceFactory; +import com.ruoyi.dataTransform.domain.req.RandomDataReq; +import com.ruoyi.dataTransform.service.DataExtractService; +import com.ruoyi.dataTransform.util.DataExtractUtil; +import com.ruoyi.ruleEngine.client.model.DataModel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据抽取Service业务层处理 + * + * @author gtl + * @date 2024-04-20 + */ +@Slf4j +@Service +public class DataExtractServiceImpl implements DataExtractService { + + @Autowired + private DruidDataSourceFactory druidDataSourceFactory; + + @Override + public List> getRandomData(RandomDataReq randomDataReq) { + DruidPooledConnection connection=null; + List> list=new ArrayList<>(); + try { + // 获取数据源连接 + connection = druidDataSourceFactory.get(randomDataReq.getDataSourceId()).getConnection(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + if(randomDataReq.getScope()==4){ + // 数据模型 + list.add(DataExtractUtil.getDataModels(connection,randomDataReq.getTableName())); + }else { + // 记录/数据集 + list=DataExtractUtil.getRecordsModels(connection,randomDataReq.getTableName()); + } + return list; + } + +} diff --git a/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/impl/EngineOperationServiceImpl.java b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/impl/EngineOperationServiceImpl.java new file mode 100644 index 0000000..9a76cd8 --- /dev/null +++ b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/java/com/ruoyi/dataTransform/service/impl/EngineOperationServiceImpl.java @@ -0,0 +1,88 @@ +package com.ruoyi.dataTransform.service.impl; + +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.dataTransform.domain.req.TestDataReq; +import com.ruoyi.dataTransform.service.EngineOperationService; +import com.ruoyi.ruleEngine.client.config.RuleEngineVersionFactory; +import com.ruoyi.ruleEngine.client.context.DataModelContextHolder; +import com.ruoyi.ruleEngine.client.context.DataSetContextHolder; +import com.ruoyi.ruleEngine.client.context.RecordContextHolder; +import com.ruoyi.ruleEngine.client.dynamicLoad.DynamicLoader; +import com.ruoyi.ruleEngine.client.model.DataModel; +import com.ruoyi.ruleEngine.client.model.DataSetModel; +import com.ruoyi.ruleEngine.client.model.RecordModel; +import com.ruoyi.ruleEngine.client.model.process.DataModelProcessModel; +import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel; +import com.ruoyi.ruleEngine.client.model.process.RecordProcessModel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 数据抽取Service业务层处理 + * + * @author gtl + * @date 2024-04-20 + */ +@Slf4j +@Service +public class EngineOperationServiceImpl implements EngineOperationService { + + @Autowired + private RuleEngineVersionFactory ruleEngineVersionFactory; + + @Override + public Object testVersion(TestDataReq testDataReq) { + // 根据作用域编号放入对应的上下文中 + switch (testDataReq.getScope()){ + case 2: { + List list=new ArrayList<>(); + for (List dataModels : testDataReq.getRecordsList()) { + list.add(new RecordModel(dataModels)); + } + // 创建数据集模型 + DataSetModel dataSetModel = new DataSetModel(list); + // 将数据放入数据集上下文中 + DataSetContextHolder.set(new DataSetProcessModel(dataSetModel)); + }break; + case 3: { + // 创建记录模型 + RecordModel recordModel = new RecordModel(testDataReq.getRecordsList().get(0)); + // 将数据放入记录上下文中 + RecordContextHolder.set(new RecordProcessModel(testDataReq.getKeys(),recordModel)); + }break; + case 4: { + // 创建数据模型处理模型 + DataModelProcessModel dataModelProcessModel = new DataModelProcessModel(testDataReq.getDataModel()); + // 将数据放入模型上下文中 + DataModelContextHolder.set(dataModelProcessModel); + }break; + default:throw new ServiceException("此作用域暂无法测试"); + } + // 获取版本对应class文件的字节数组 + Map bytecode = ruleEngineVersionFactory.get(testDataReq.getVersionId()); + // 加载class文件到虚拟机中,然后通过反射执行 + @SuppressWarnings("resource") + DynamicLoader.MemoryClassLoader classLoader = new DynamicLoader.MemoryClassLoader(bytecode); + try { + Class clazz = classLoader.loadClass(testDataReq.getVersionClass()); + // 调用execution方法 + Method mainMethod = clazz.getDeclaredMethod("execution"); + mainMethod.invoke(clazz.newInstance()); + } catch (Exception e) { + e.printStackTrace(); + throw new ServiceException("测试失败,"+e.getMessage()); + } + // 处理后的测试数据 + return switch (testDataReq.getScope()) { + case 2 -> DataSetContextHolder.get().getDataSetModel(); + case 3 -> RecordContextHolder.get().getRecordModel(); + case 4 -> DataModelContextHolder.get().getDataModel(); + default -> null; + }; + } +} diff --git a/ruoyi-modules/ruoyi-data_transform/src/main/resources/banner.txt b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/resources/banner.txt similarity index 100% rename from ruoyi-modules/ruoyi-data_transform/src/main/resources/banner.txt rename to ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/resources/banner.txt diff --git a/ruoyi-modules/ruoyi-data_transform/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/resources/bootstrap.yml similarity index 100% rename from ruoyi-modules/ruoyi-data_transform/src/main/resources/bootstrap.yml rename to ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/resources/bootstrap.yml diff --git a/ruoyi-modules/ruoyi-data_transform/src/main/resources/logback.xml b/ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/resources/logback.xml similarity index 100% rename from ruoyi-modules/ruoyi-data_transform/src/main/resources/logback.xml rename to ruoyi-modules/ruoyi-data_transform/ruoyi-data_transform-server/src/main/resources/logback.xml diff --git a/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/controller/DataExtractController.java b/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/controller/DataExtractController.java deleted file mode 100644 index cea5835..0000000 --- a/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/controller/DataExtractController.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ruoyi.dataTransform.controller; - -import io.swagger.annotations.Api; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * 数据抽取 - * @ClassName DataExtractController - * @Author 森静若林 - * @Date 2024/5/9 10:56 - */ -@Api(tags = "数据抽取") -@RestController -@RequestMapping("/extract") -public class DataExtractController { - - -} diff --git a/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/service/DataExtractService.java b/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/service/DataExtractService.java deleted file mode 100644 index 6e7ba10..0000000 --- a/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/service/DataExtractService.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.ruoyi.dataTransform.service; - -/** - * 数据抽取 service接口 - * @ClassName DataExtractService - * @Author 森静若林 - * @Date 2024/5/9 10:56 - */ -public interface DataExtractService { - - -} diff --git a/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/service/impl/DataExtractServiceImpl.java b/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/service/impl/DataExtractServiceImpl.java deleted file mode 100644 index 053a7bb..0000000 --- a/ruoyi-modules/ruoyi-data_transform/src/main/java/com/ruoyi/dataTransform/service/impl/DataExtractServiceImpl.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.ruoyi.dataTransform.service.impl; - -import com.ruoyi.dataTransform.service.DataExtractService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * 数据抽取Service业务层处理 - * - * @author gtl - * @date 2024-04-20 - */ -@Slf4j -@Service -public class DataExtractServiceImpl implements DataExtractService { - - -} diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineApplicationRunner.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineApplicationRunner.java index e8ea105..d13a929 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineApplicationRunner.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineApplicationRunner.java @@ -1,14 +1,17 @@ package com.ruoyi.ruleEngine.client.config; import com.ruoyi.common.core.domain.Result; +import com.ruoyi.ruleEngine.constant.RuleOperationConstants; import com.ruoyi.ruleEngine.domain.EngineVersion; import com.ruoyi.ruleEngine.domain.req.EngineVersionQueryReq; +import com.ruoyi.ruleEngine.client.dynamicLoad.DynamicLoader; import com.ruoyi.ruleEngine.remote.RemoteRuleEngineService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import java.util.List; +import java.util.Map; /** * 规则引擎应用程序运行程序 @@ -22,13 +25,21 @@ public class RuleEngineApplicationRunner implements ApplicationRunner { @Autowired private RemoteRuleEngineService remoteRuleEngineService; + @Autowired + private RuleEngineVersionFactory ruleEngineVersionFactory; + @Override public void run(ApplicationArguments args) throws Exception { Result> result = remoteRuleEngineService.list(new EngineVersionQueryReq()); if(Result.isSuccess(result)){ - log.info(result.getData()); - }else { - log.error(result.getMsg()); + result.getData().forEach(engineVersion -> { + // 获取版本内容 + String content = engineVersion.getRuleContent().replaceAll("\r\n", ""); + // 对source进行编译生成class文件存放在Map中,这里用bytecode接收 + Map bytecode = DynamicLoader.compile(engineVersion.getVersionClass() + RuleOperationConstants.FILE_SUFFIX,content ); + // 存入工厂 + ruleEngineVersionFactory.put(engineVersion.getId(), bytecode); + }); } } } diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineClientConfig.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineClientConfig.java deleted file mode 100644 index 8b4cefd..0000000 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineClientConfig.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ruoyi.ruleEngine.client.config; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Import; - -/** - * 规则引擎客户端配置 - * @ClassName RuleEngineClientConfig - * @Author 森静若林 - * @Date 2024/5/8 19:31 - */ -@ComponentScan -@Import(RuleEngineApplicationRunner.class) -public class RuleEngineClientConfig { - -} diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineVersionFactory.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineVersionFactory.java new file mode 100644 index 0000000..cb7dea9 --- /dev/null +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/config/RuleEngineVersionFactory.java @@ -0,0 +1,30 @@ +package com.ruoyi.ruleEngine.client.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Import; +import java.util.HashMap; +import java.util.Map; + +/** + * 规则引擎版本工厂 + * @ClassName RuleEngineVersionFactory + * @Author 森静若林 + * @Date 2024/5/8 19:31 + */ +@ComponentScan +@Import(RuleEngineApplicationRunner.class) +public class RuleEngineVersionFactory { + private final Map> versionContentMap=new HashMap<>(); + + public Map> getMap() { + return this.versionContentMap; + } + + public void put(Long id,Map map) { + this.versionContentMap.put(id,map); + } + + public Map get(Long id) { + return this.versionContentMap.get(id); + } +} diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/DataModelContextHolder.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/DataModelContextHolder.java similarity index 85% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/DataModelContextHolder.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/DataModelContextHolder.java index f5e55e6..8670a08 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/DataModelContextHolder.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/DataModelContextHolder.java @@ -1,9 +1,10 @@ -package com.ruoyi.ruleEngine.context; +package com.ruoyi.ruleEngine.client.context; -import com.ruoyi.ruleEngine.model.process.DataModelProcessModel; -import com.ruoyi.ruleEngine.util.ScopeContextHolderUtil; +import com.ruoyi.ruleEngine.client.model.process.DataModelProcessModel; +import com.ruoyi.ruleEngine.client.util.ScopeContextHolderUtil; import lombok.Data; import lombok.experimental.SuperBuilder; + import java.sql.Connection; /** diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/DataSetContextHolder.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/DataSetContextHolder.java similarity index 88% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/DataSetContextHolder.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/DataSetContextHolder.java index 974fecd..0c9c036 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/DataSetContextHolder.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/DataSetContextHolder.java @@ -1,6 +1,6 @@ -package com.ruoyi.ruleEngine.context; +package com.ruoyi.ruleEngine.client.context; -import com.ruoyi.ruleEngine.model.process.DataSetProcessModel; +import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel; import lombok.Data; import lombok.experimental.SuperBuilder; diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/RecordContextHolder.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/RecordContextHolder.java similarity index 88% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/RecordContextHolder.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/RecordContextHolder.java index 778ab75..6abcdda 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/RecordContextHolder.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/RecordContextHolder.java @@ -1,6 +1,6 @@ -package com.ruoyi.ruleEngine.context; +package com.ruoyi.ruleEngine.client.context; -import com.ruoyi.ruleEngine.model.process.RecordProcessModel; +import com.ruoyi.ruleEngine.client.model.process.RecordProcessModel; import lombok.Data; import lombok.experimental.SuperBuilder; diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/TaskContextHolder.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/TaskContextHolder.java similarity index 82% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/TaskContextHolder.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/TaskContextHolder.java index 285cc86..bc7d488 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/TaskContextHolder.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/context/TaskContextHolder.java @@ -1,4 +1,4 @@ -package com.ruoyi.ruleEngine.context; +package com.ruoyi.ruleEngine.client.context; /** * 任务上下文 diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/dynamicLoad/DynamicLoader.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/dynamicLoad/DynamicLoader.java similarity index 98% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/dynamicLoad/DynamicLoader.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/dynamicLoad/DynamicLoader.java index 47d05aa..9bbe6cd 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/dynamicLoad/DynamicLoader.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/dynamicLoad/DynamicLoader.java @@ -1,15 +1,15 @@ -package com.ruoyi.ruleEngine.dynamicLoad; +package com.ruoyi.ruleEngine.client.dynamicLoad; +import javax.tools.JavaCompiler; +import javax.tools.JavaFileObject; +import javax.tools.StandardJavaFileManager; +import javax.tools.ToolProvider; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import javax.tools.JavaCompiler; -import javax.tools.JavaFileObject; -import javax.tools.StandardJavaFileManager; -import javax.tools.ToolProvider; /** * @ClassName DynamicLoader diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/dynamicLoad/MemoryJavaFileManager.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/dynamicLoad/MemoryJavaFileManager.java similarity index 88% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/dynamicLoad/MemoryJavaFileManager.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/dynamicLoad/MemoryJavaFileManager.java index aa784d7..0326049 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/dynamicLoad/MemoryJavaFileManager.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/dynamicLoad/MemoryJavaFileManager.java @@ -1,21 +1,11 @@ -package com.ruoyi.ruleEngine.dynamicLoad; +package com.ruoyi.ruleEngine.client.dynamicLoad; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FilterOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.Reader; -import java.io.StringReader; +import javax.tools.*; +import java.io.*; import java.net.URI; import java.nio.CharBuffer; import java.util.HashMap; import java.util.Map; -import javax.tools.FileObject; -import javax.tools.ForwardingJavaFileManager; -import javax.tools.JavaFileManager; -import javax.tools.JavaFileObject; -import javax.tools.SimpleJavaFileObject; /** * 将编译好的.class文件保存到内存当中,这里的内存也就是map映射当中 @@ -108,7 +98,7 @@ public final class MemoryJavaFileManager extends ForwardingJavaFileManager { @Override public JavaFileObject getJavaFileForOutput( - JavaFileManager.Location location, String className, + Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException { if (kind == JavaFileObject.Kind.CLASS) { return new ClassOutputBuffer(className); diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/Engine.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/Engine.java similarity index 79% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/Engine.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/Engine.java index a6722fd..25d0866 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/Engine.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/Engine.java @@ -1,4 +1,4 @@ -package com.ruoyi.ruleEngine.engine; +package com.ruoyi.ruleEngine.client.engine; /** * 引擎 diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/action/ActionDiscard.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/action/ActionDiscard.java similarity index 75% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/action/ActionDiscard.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/action/ActionDiscard.java index 3316ce4..b3ea21e 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/action/ActionDiscard.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/action/ActionDiscard.java @@ -1,4 +1,4 @@ -package com.ruoyi.ruleEngine.engine.action; +package com.ruoyi.ruleEngine.client.engine.action; /** * 丢弃动作 diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/scope/DataModelEngine.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/scope/DataModelEngine.java similarity index 73% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/scope/DataModelEngine.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/scope/DataModelEngine.java index 8974b06..0958eea 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/scope/DataModelEngine.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/scope/DataModelEngine.java @@ -1,9 +1,9 @@ -package com.ruoyi.ruleEngine.engine.scope; +package com.ruoyi.ruleEngine.client.engine.scope; -import com.ruoyi.ruleEngine.engine.Engine; -import com.ruoyi.ruleEngine.model.DataModel; -import com.ruoyi.ruleEngine.model.process.DataModelProcessModel; -import com.ruoyi.ruleEngine.context.DataModelContextHolder; +import com.ruoyi.ruleEngine.client.context.DataModelContextHolder; +import com.ruoyi.ruleEngine.client.engine.Engine; +import com.ruoyi.ruleEngine.client.model.DataModel; +import com.ruoyi.ruleEngine.client.model.process.DataModelProcessModel; /** * 数据模型引擎 diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/scope/DataSetEngine.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/scope/DataSetEngine.java similarity index 59% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/scope/DataSetEngine.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/scope/DataSetEngine.java index a44d4f4..7f1c7ef 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/scope/DataSetEngine.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/scope/DataSetEngine.java @@ -1,10 +1,10 @@ -package com.ruoyi.ruleEngine.engine.scope; +package com.ruoyi.ruleEngine.client.engine.scope; -import com.ruoyi.ruleEngine.context.DataSetContextHolder; -import com.ruoyi.ruleEngine.engine.Engine; -import com.ruoyi.ruleEngine.model.DataSetModel; -import com.ruoyi.ruleEngine.model.RecordModel; -import com.ruoyi.ruleEngine.model.process.DataSetProcessModel; +import com.ruoyi.ruleEngine.client.context.DataSetContextHolder; +import com.ruoyi.ruleEngine.client.engine.Engine; +import com.ruoyi.ruleEngine.client.model.DataSetModel; +import com.ruoyi.ruleEngine.client.model.RecordModel; +import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel; import java.util.List; diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/scope/RecordEngine.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/scope/RecordEngine.java similarity index 62% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/scope/RecordEngine.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/scope/RecordEngine.java index 7d6c1c6..06274c2 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/engine/scope/RecordEngine.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/engine/scope/RecordEngine.java @@ -1,10 +1,10 @@ -package com.ruoyi.ruleEngine.engine.scope; +package com.ruoyi.ruleEngine.client.engine.scope; -import com.ruoyi.ruleEngine.context.RecordContextHolder; -import com.ruoyi.ruleEngine.engine.Engine; -import com.ruoyi.ruleEngine.model.DataModel; -import com.ruoyi.ruleEngine.model.RecordModel; -import com.ruoyi.ruleEngine.model.process.RecordProcessModel; +import com.ruoyi.ruleEngine.client.context.RecordContextHolder; +import com.ruoyi.ruleEngine.client.engine.Engine; +import com.ruoyi.ruleEngine.client.model.DataModel; +import com.ruoyi.ruleEngine.client.model.RecordModel; +import com.ruoyi.ruleEngine.client.model.process.RecordProcessModel; import java.util.List; diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/DataModel.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/DataModel.java similarity index 93% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/DataModel.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/DataModel.java index b659e4d..fc969f4 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/DataModel.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/DataModel.java @@ -1,4 +1,4 @@ -package com.ruoyi.ruleEngine.model; +package com.ruoyi.ruleEngine.client.model; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/DataSetModel.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/DataSetModel.java similarity index 88% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/DataSetModel.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/DataSetModel.java index 8d3f14d..2a5b313 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/DataSetModel.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/DataSetModel.java @@ -1,8 +1,9 @@ -package com.ruoyi.ruleEngine.model; +package com.ruoyi.ruleEngine.client.model; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; + import java.util.List; /** diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/RecordModel.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/RecordModel.java similarity index 88% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/RecordModel.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/RecordModel.java index dcd472f..fca0140 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/RecordModel.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/RecordModel.java @@ -1,4 +1,4 @@ -package com.ruoyi.ruleEngine.model; +package com.ruoyi.ruleEngine.client.model; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/process/DataModelProcessModel.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/process/DataModelProcessModel.java similarity index 51% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/process/DataModelProcessModel.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/process/DataModelProcessModel.java index ad5169d..37d5ba9 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/process/DataModelProcessModel.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/process/DataModelProcessModel.java @@ -1,7 +1,9 @@ -package com.ruoyi.ruleEngine.model.process; +package com.ruoyi.ruleEngine.client.model.process; -import com.ruoyi.ruleEngine.model.DataModel; +import com.ruoyi.ruleEngine.client.model.DataModel; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; /** * 数据模型处理模型 @@ -10,6 +12,8 @@ import lombok.Data; * @Date 2024/5/5 18:37 */ @Data +@NoArgsConstructor +@AllArgsConstructor public class DataModelProcessModel { private DataModel dataModel; } diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/process/DataSetProcessModel.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/process/DataSetProcessModel.java similarity index 75% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/process/DataSetProcessModel.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/process/DataSetProcessModel.java index a93c3ee..f5be966 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/process/DataSetProcessModel.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/process/DataSetProcessModel.java @@ -1,6 +1,6 @@ -package com.ruoyi.ruleEngine.model.process; +package com.ruoyi.ruleEngine.client.model.process; -import com.ruoyi.ruleEngine.model.DataSetModel; +import com.ruoyi.ruleEngine.client.model.DataSetModel; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/process/RecordProcessModel.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/process/RecordProcessModel.java similarity index 55% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/process/RecordProcessModel.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/process/RecordProcessModel.java index 5172a8e..c0b2e87 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/model/process/RecordProcessModel.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/model/process/RecordProcessModel.java @@ -1,7 +1,10 @@ -package com.ruoyi.ruleEngine.model.process; +package com.ruoyi.ruleEngine.client.model.process; -import com.ruoyi.ruleEngine.model.RecordModel; +import com.ruoyi.ruleEngine.client.model.RecordModel; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; + import java.util.List; /** @@ -11,6 +14,8 @@ import java.util.List; * @Date 2024/5/5 18:37 */ @Data +@NoArgsConstructor +@AllArgsConstructor public class RecordProcessModel { private List keys; private RecordModel recordModel; diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/util/ScopeContextHolderUtil.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/util/ScopeContextHolderUtil.java similarity index 84% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/util/ScopeContextHolderUtil.java rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/util/ScopeContextHolderUtil.java index cf6d256..b4b3425 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/util/ScopeContextHolderUtil.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/java/com/ruoyi/ruleEngine/client/util/ScopeContextHolderUtil.java @@ -1,10 +1,10 @@ -package com.ruoyi.ruleEngine.util; +package com.ruoyi.ruleEngine.client.util; -import com.ruoyi.ruleEngine.context.DataSetContextHolder; -import com.ruoyi.ruleEngine.model.DataModel; -import com.ruoyi.ruleEngine.model.DataSetModel; -import com.ruoyi.ruleEngine.model.RecordModel; -import com.ruoyi.ruleEngine.model.process.DataSetProcessModel; +import com.ruoyi.ruleEngine.client.context.DataSetContextHolder; +import com.ruoyi.ruleEngine.client.model.DataModel; +import com.ruoyi.ruleEngine.client.model.DataSetModel; +import com.ruoyi.ruleEngine.client.model.RecordModel; +import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel; import java.sql.*; import java.util.ArrayList; import java.util.List; diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index ce4b4cb..5740293 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1 @@ -com.ruoyi.ruleEngine.client.config.RuleEngineClientConfig +com.ruoyi.ruleEngine.client.config.RuleEngineVersionFactory diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/ConfigCodeConstants.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/ConfigCodeConstants.java index de90592..2f639db 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/ConfigCodeConstants.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/ConfigCodeConstants.java @@ -10,11 +10,11 @@ public class ConfigCodeConstants { /** * 文件基础路径 */ - public final static String BASE_FILE_PATH="D:\\workspace\\gtl-ruoyi-server\\ruoyi-modules\\ruoyi-rule_engine\\ruoyi-rule_engine-common\\src\\main\\java\\com\\ruoyi\\ruleEngine\\context\\"; + public final static String BASE_FILE_PATH="/file/"; /** * 配置文件名数组 */ - public final static String[] CONFIG_FILE_NAME_ARRAY=new String[]{"engine_custom.txt","TaskContextHolder.java","DataSetContextHolder.java","RecordContextHolder.java","DataModelContextHolder.java"}; + public final static String[] CONFIG_FILE_NAME_ARRAY=new String[]{"engine_custom.txt","TaskContextHolder.txt","DataSetContextHolder.txt","RecordContextHolder.txt","DataModelContextHolder.txt"}; /** * 配置文件类型数组 */ diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/RuleOperationConstants.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/RuleOperationConstants.java index 1f9666f..113701d 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/RuleOperationConstants.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/RuleOperationConstants.java @@ -7,16 +7,8 @@ package com.ruoyi.ruleEngine.constant; * @Date 2024/5/4 16:12 */ public class RuleOperationConstants { - /** - * 运行类型 - */ - public final static String CLASS_NAME="TestClass"; /** * 文件后缀 */ public final static String FILE_SUFFIX=".java"; - /** - * 运行方法 - */ - public final static String METHOD_NAME="ruleTest"; } diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/model/TestData.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/model/TestData.java deleted file mode 100644 index e34f68b..0000000 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/model/TestData.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ruoyi.ruleEngine.domain.model; - -import lombok.Data; - -import java.util.List; - -/** - * 测试数据 - * @ClassName TestData - * @Author 森静若林 - * @Date 2024/5/3 16:13 - */ -@Data -public class TestData { - /** - * 引擎配置编号 - */ - private Long id; - /** - * 测试数据集合 - */ - private List list; -} diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/controller/EngineVersionController.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/controller/EngineVersionController.java index 65c1a28..0bad891 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/controller/EngineVersionController.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/controller/EngineVersionController.java @@ -7,7 +7,6 @@ import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.ruleEngine.domain.EngineVersion; -import com.ruoyi.ruleEngine.domain.model.TestData; import com.ruoyi.ruleEngine.domain.req.EngineVersionEditReq; import com.ruoyi.ruleEngine.domain.req.EngineVersionQueryReq; import com.ruoyi.ruleEngine.domain.req.EngineVersionSaveReq; @@ -55,16 +54,6 @@ public class EngineVersionController extends BaseController { return Result.success(engineVersionService.createVersionClass(req)); } - /** - * 测试引擎规则版本 - */ - @ApiOperation("测试引擎规则版本") - @RequiresPermissions("ruleEngine:version:add") - @PostMapping(value = "/test") - public Result ruleTest(@RequestBody TestData testData) { - return Result.success(engineVersionService.ruleTest(testData)); - } - /** * 新增引擎规则版本 */ diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/EngineVersionService.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/EngineVersionService.java index cf73e97..88e2d82 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/EngineVersionService.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/EngineVersionService.java @@ -2,7 +2,6 @@ package com.ruoyi.ruleEngine.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.ruleEngine.domain.EngineVersion; -import com.ruoyi.ruleEngine.domain.model.TestData; import com.ruoyi.ruleEngine.domain.req.VersionClassCreateReq; import com.ruoyi.ruleEngine.domain.resp.VersionClassCreateResp; import java.util.List; @@ -23,12 +22,6 @@ public interface EngineVersionService extends IService { */ public List list(EngineVersion engineConfig); - /** - * 规则测试 - * @param testData 规则配置版本编号 - */ - Object ruleTest(TestData testData); - /** * 生成引擎版本类并返回规则模版 * @param req 版本创建请求参数类 diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/impl/EngineConfigServiceImpl.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/impl/EngineConfigServiceImpl.java index 379aa42..e69d04d 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/impl/EngineConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/impl/EngineConfigServiceImpl.java @@ -4,8 +4,12 @@ import com.ruoyi.ruleEngine.constant.ConfigCodeConstants; import com.ruoyi.ruleEngine.domain.resp.EngineConfigScopeResp; import com.ruoyi.ruleEngine.service.EngineConfigService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; @@ -36,8 +40,9 @@ public class EngineConfigServiceImpl implements EngineConfigService { index++; continue; } - String path=ConfigCodeConstants.BASE_FILE_PATH+scope; - String code = Files.readString(Paths.get(path)); + ClassPathResource resource = new ClassPathResource(ConfigCodeConstants.BASE_FILE_PATH+scope); + InputStream inputStream = resource.getInputStream(); + String code = IOUtils.toString(inputStream, String.valueOf(StandardCharsets.UTF_8)); String type=ConfigCodeConstants.CONFIG_FILE_TYPE_ARRAY[index++]; list.add(EngineConfigScopeResp.builder().type(type).name(scope).code(code).build()); } diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/impl/EngineVersionServiceImpl.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/impl/EngineVersionServiceImpl.java index 7797da8..d3b8383 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/impl/EngineVersionServiceImpl.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/service/impl/EngineVersionServiceImpl.java @@ -2,25 +2,19 @@ package com.ruoyi.ruleEngine.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.ObjUtils; import com.ruoyi.ruleEngine.constant.EngineVersionConstants; -import com.ruoyi.ruleEngine.constant.RuleOperationConstants; import com.ruoyi.ruleEngine.domain.EngineVersion; -import com.ruoyi.ruleEngine.domain.model.TestData; import com.ruoyi.ruleEngine.domain.req.VersionClassCreateReq; import com.ruoyi.ruleEngine.domain.resp.EngineConfigScopeResp; import com.ruoyi.ruleEngine.domain.resp.VersionClassCreateResp; -import com.ruoyi.ruleEngine.dynamicLoad.DynamicLoader; import com.ruoyi.ruleEngine.mapper.EngineVersionMapper; import com.ruoyi.ruleEngine.service.EngineConfigService; import com.ruoyi.ruleEngine.service.EngineVersionService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.lang.reflect.Method; import java.util.List; -import java.util.Map; /** * 引擎配置Service业务层处理 @@ -65,35 +59,6 @@ public class EngineVersionServiceImpl extends ServiceImpl bytecode = DynamicLoader.compile(RuleOperationConstants.CLASS_NAME + RuleOperationConstants.FILE_SUFFIX,content ); - - // 加载class文件到虚拟机中,然后通过反射执行 - @SuppressWarnings("resource") - DynamicLoader.MemoryClassLoader classLoader = new DynamicLoader.MemoryClassLoader( - bytecode); - Class clazz = classLoader.loadClass(RuleOperationConstants.CLASS_NAME); - - // 调用ruleTest方法 - Method mainMethod = clazz.getDeclaredMethod(RuleOperationConstants.METHOD_NAME, List.class); - invoke = mainMethod.invoke(null, testData.getList()); - } catch (Exception e) { - e.printStackTrace(); - throw new ServiceException("测试失败"); - } - return invoke; - } - /** * 生成引擎版本类并返回规则模版 * @param req 版本创建请求参数类 diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/DataModelContextHolder.txt b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/DataModelContextHolder.txt new file mode 100644 index 0000000..8670a08 --- /dev/null +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/DataModelContextHolder.txt @@ -0,0 +1,44 @@ +package com.ruoyi.ruleEngine.client.context; + +import com.ruoyi.ruleEngine.client.model.process.DataModelProcessModel; +import com.ruoyi.ruleEngine.client.util.ScopeContextHolderUtil; +import lombok.Data; +import lombok.experimental.SuperBuilder; + +import java.sql.Connection; + +/** + * 数据模型上下文 + * @ClassName DataModelContextHolder + * @Author 森静若林 + */ +@Data +@SuperBuilder +public class DataModelContextHolder{ + + private static final ThreadLocal THREAD_LOCAL=new ThreadLocal<>(); + + private RecordContextHolder recordContextHolder; + + public static DataModelContextHolder build(RecordContextHolder recordContextHolder){ + return DataModelContextHolder.builder() + .recordContextHolder(recordContextHolder) + .build(); + } + + public static DataModelProcessModel get() { + return THREAD_LOCAL.get(); + } + + public static void set(DataModelProcessModel dataModelProcessModel) { + THREAD_LOCAL.set(dataModelProcessModel); + } + + public static void set(Connection connection,String sql){ + ScopeContextHolderUtil.setDataSetContextHolder(connection,sql); + } + + public static void remove() { + THREAD_LOCAL.remove(); + } +} diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/DataSetContextHolder.txt b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/DataSetContextHolder.txt new file mode 100644 index 0000000..0c9c036 --- /dev/null +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/DataSetContextHolder.txt @@ -0,0 +1,37 @@ +package com.ruoyi.ruleEngine.client.context; + +import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel; +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * 数据集上下文 + * @ClassName DataSetContextHolder + * @Author 森静若林 + */ +@Data +@SuperBuilder +public class DataSetContextHolder{ + + private static final ThreadLocal THREAD_LOCAL=new ThreadLocal<>(); + + private TaskContextHolder taskContextHolder; + + public static DataSetContextHolder build(TaskContextHolder taskContextHolder){ + return DataSetContextHolder.builder() + .taskContextHolder(taskContextHolder) + .build(); + } + + public static DataSetProcessModel get() { + return THREAD_LOCAL.get(); + } + + public static void set(DataSetProcessModel dataSetProcessModel) { + THREAD_LOCAL.set(dataSetProcessModel); + } + + public static void remove() { + THREAD_LOCAL.remove(); + } +} diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/RecordContextHolder.txt b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/RecordContextHolder.txt new file mode 100644 index 0000000..6abcdda --- /dev/null +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/RecordContextHolder.txt @@ -0,0 +1,37 @@ +package com.ruoyi.ruleEngine.client.context; + +import com.ruoyi.ruleEngine.client.model.process.RecordProcessModel; +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * 记录上下文 + * @ClassName RecordContextHolder + * @Author 森静若林 + */ +@Data +@SuperBuilder +public class RecordContextHolder{ + + private static final ThreadLocal THREAD_LOCAL=new ThreadLocal<>(); + + private DataSetContextHolder dataSetContextHolder; + + public static RecordContextHolder build(DataSetContextHolder dataSetContextHolder){ + return RecordContextHolder.builder() + .dataSetContextHolder(dataSetContextHolder) + .build(); + } + + public static RecordProcessModel get() { + return THREAD_LOCAL.get(); + } + + public static void set(RecordProcessModel recordProcessModel) { + THREAD_LOCAL.set(recordProcessModel); + } + + public static void remove() { + THREAD_LOCAL.remove(); + } +} diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/TaskContextHolder.txt b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/TaskContextHolder.txt new file mode 100644 index 0000000..bc7d488 --- /dev/null +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/TaskContextHolder.txt @@ -0,0 +1,13 @@ +package com.ruoyi.ruleEngine.client.context; + +/** + * 任务上下文 + * @ClassName TaskContextHolder + * @Author 森静若林 + */ +public class TaskContextHolder { + + public static TaskContextHolder build(){ + return new TaskContextHolder(); + } +} diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/engine_custom.txt b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/engine_custom.txt similarity index 77% rename from ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/engine_custom.txt rename to ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/engine_custom.txt index 32ce930..7734bc3 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/context/engine_custom.txt +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/resources/file/engine_custom.txt @@ -1,4 +1,4 @@ -import com.ruoyi.dataAsset.engine.scope.scope_engine; +import com.ruoyi.ruleEngine.client.engine.scope.scope_engine; /** * 自定义引擎