feat():规则版本测试
parent
d54102d35a
commit
53bd42aabe
|
@ -31,10 +31,22 @@ public class GenerateConstant {
|
|||
}
|
||||
return className;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成一个常量的代码字符串
|
||||
*
|
||||
* @param engine 引擎对象,包含引擎的级别信息
|
||||
* @param engineVersion 引擎版本对象,包含版本名称和代码
|
||||
* @return 返回一个包含包路径、导入语句、类定义以及基本注释的代码字符串
|
||||
*/
|
||||
public static String generateConstant(Engine engine,EngineVersion engineVersion){
|
||||
//创建日期格式化对象,用于格式化当前日期和时间
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
||||
//格式化当前日期和时间
|
||||
String format = simpleDateFormat.format(new Date());
|
||||
//获取引擎级别对应的字符串
|
||||
String level = getType(engine.getLevel());
|
||||
//构建并返回代码字符串
|
||||
return PACKAGE_PATH+"\n\n" +
|
||||
ACTION_IMPORT+"\n\n"+
|
||||
SCOPE_IMPORT+level+";\n"+
|
||||
|
|
|
@ -7,7 +7,12 @@ package com.muyu.engine.constant;
|
|||
* @Date 2024/5/11 16:11
|
||||
*/
|
||||
public class PathConstant {
|
||||
|
||||
//java源代码文件的路径
|
||||
public static final String JAVA_PATH = "D:\\vue08a\\2108-cloud-server\\muyu-modules\\muyu-engine\\muyu-engine-common\\src\\main\\java\\com\\muyu\\engine\\custom\\";
|
||||
//表示编译后生成的class文件的路径
|
||||
public static final String CLASS_PATH= "D:\\vue08a\\2108-cloud-server\\muyu-modules\\muyu-engine\\muyu-engine-common\\target\\classes\\";
|
||||
public static final String PACKAGE_PATH_SERVICE ="com.muyu.engine.custom";
|
||||
//表示包的路径,用于指定服务相关的包
|
||||
public static final String PACKAGE_PATH_SERVICE ="com.muyu.engine.custom.";
|
||||
|
||||
}
|
||||
|
|
|
@ -6,6 +6,8 @@ import com.muyu.model.RecordModel;
|
|||
import com.muyu.scope.DataSetContext;
|
||||
import com.muyu.scope.model.DataSetProcessModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName DataSetEngine
|
||||
* @Description 数据模型引擎接口
|
||||
|
@ -13,22 +15,23 @@ import com.muyu.scope.model.DataSetProcessModel;
|
|||
* @Date 2024/5/12 11:10
|
||||
*/
|
||||
public abstract class DataSetEngine implements Engine<DataSetProcessModel> {
|
||||
private DataSetContext dataSetContext;
|
||||
|
||||
private DataSetContext dataSetContext;
|
||||
@Override
|
||||
public DataSetProcessModel get(){
|
||||
return dataSetContext.get();
|
||||
}
|
||||
public RecordModel[] getRecordModelArr(){
|
||||
|
||||
public List<RecordModel> getRecordModelArr(){
|
||||
return getDataSetModel().getRecordModelArr();
|
||||
}
|
||||
|
||||
public DataSetModel getDataSetModel(){
|
||||
return get().getDataSetModel();
|
||||
}
|
||||
// public DataSetContext getDataSetContext(){
|
||||
// return dataSetContext;
|
||||
// }
|
||||
// public void setDataSetContext(DataSetContext dataSetContext){
|
||||
// this.dataSetContext = dataSetContext;
|
||||
// }
|
||||
|
||||
public List<String> getKeys(){
|
||||
return get().getKeys();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,6 +6,8 @@ import com.muyu.model.RecordModel;
|
|||
import com.muyu.scope.RecordContext;
|
||||
import com.muyu.scope.model.RecordProcessModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName RecordEngine
|
||||
* @Description 数据模型引擎接口
|
||||
|
@ -13,18 +15,23 @@ import com.muyu.scope.model.RecordProcessModel;
|
|||
* @Date 2024/5/12 11:10
|
||||
*/
|
||||
public abstract class RecordEngine implements Engine<RecordProcessModel> {
|
||||
|
||||
private RecordContext recordContext;
|
||||
|
||||
@Override
|
||||
public RecordProcessModel get(){
|
||||
return recordContext.get();
|
||||
}
|
||||
|
||||
public RecordModel getRecordModel(){
|
||||
return get().getRecordModel();
|
||||
}
|
||||
public String[] getKeys(){
|
||||
|
||||
public List<String> getKeys(){
|
||||
return get().getKeys();
|
||||
}
|
||||
public DataModel[] getDataModelArr(){
|
||||
|
||||
public List<DataModel> getDataModelArr(){
|
||||
return getRecordModel().getDataModelArr();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.muyu.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @ClassName DataModel
|
||||
|
@ -9,6 +11,8 @@ import lombok.Data;
|
|||
* @Date 2024/5/11 16:17
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DataModel {
|
||||
/**
|
||||
* 数据键
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
package com.muyu.model;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName DataSetModel
|
||||
|
@ -10,20 +14,13 @@ import lombok.Data;
|
|||
* @Date 2024/5/11 16:17
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DataSetModel {
|
||||
|
||||
private RecordModel[] recordModelArr = null;
|
||||
private List<RecordModel> recordModelArr;
|
||||
|
||||
private DataSetModel(int recordModelLength){
|
||||
recordModelArr = new RecordModel[recordModelLength];
|
||||
}
|
||||
private DataSetModel(RecordModel[] recordModelArr){
|
||||
recordModelArr=recordModelArr;
|
||||
}
|
||||
private static DataSetModel build(int recordModelLength){
|
||||
return new DataSetModel(recordModelLength);
|
||||
}
|
||||
private static DataSetModel build(RecordModel[] recordModelArr){
|
||||
private static DataSetModel build(List<RecordModel> recordModelArr){
|
||||
return new DataSetModel(recordModelArr);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
package com.muyu.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName RecordModel
|
||||
|
@ -9,23 +13,12 @@ import lombok.Data;
|
|||
* @Date 2024/5/11 16:18
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class RecordModel {
|
||||
|
||||
private DataModel[] dataModelArr = null;
|
||||
|
||||
private RecordModel(int dataModelLength){
|
||||
this.dataModelArr = new DataModel[dataModelLength];
|
||||
}
|
||||
|
||||
private RecordModel(DataModel[] dataModelArr){
|
||||
this.dataModelArr = dataModelArr;
|
||||
}
|
||||
|
||||
public static RecordModel build(int dataModelLength){
|
||||
return new RecordModel(dataModelLength);
|
||||
}
|
||||
|
||||
public static RecordModel build(DataModel[] dataModelArr){
|
||||
private List<DataModel> dataModelArr;
|
||||
public static RecordModel build(List<DataModel> dataModelArr){
|
||||
return new RecordModel(dataModelArr);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
package com.muyu.scope.model;
|
||||
|
||||
import com.muyu.model.DataModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @ClassName DataProcessModel
|
||||
* @Description 数据处理模型
|
||||
* @Description 数据处理模型 字段
|
||||
* @Author Peng.Jiang
|
||||
* @Date 2024/5/11 19:32
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DataProcessModel {
|
||||
|
||||
private DataModel dataModel;
|
||||
|
|
|
@ -1,17 +1,24 @@
|
|||
package com.muyu.scope.model;
|
||||
|
||||
import com.muyu.model.DataSetModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName DataSetProcessModel
|
||||
* @Description 数据处理模型
|
||||
* @Description 数据处理模型 数据集
|
||||
* @Author Peng.Jiang
|
||||
* @Date 2024/5/11 19:32
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DataSetProcessModel {
|
||||
|
||||
private List<String> keys;
|
||||
private DataSetModel dataSetModel;
|
||||
|
||||
}
|
||||
|
|
|
@ -2,18 +2,24 @@ package com.muyu.scope.model;
|
|||
|
||||
import com.muyu.model.DataSetModel;
|
||||
import com.muyu.model.RecordModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName RecordProcessModel
|
||||
* @Description 数据处理模型
|
||||
* @Description 数据处理模型 记录
|
||||
* @Author Peng.Jiang
|
||||
* @Date 2024/5/11 19:33
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class RecordProcessModel {
|
||||
|
||||
private String[] keys;
|
||||
private List<String> keys;
|
||||
private RecordModel recordModel;
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import com.muyu.common.core.utils.poi.ExcelUtil;
|
||||
import com.muyu.engine.domain.EngineVersion;
|
||||
import com.muyu.engine.req.DataSourceAssetModelReq;
|
||||
import com.muyu.engine.req.TestInterfaceReq;
|
||||
import com.muyu.engine.service.EngineVersionService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
@ -124,8 +125,8 @@ public class EngineVersionController extends BaseController
|
|||
public Result initializeRuleEngine(@RequestBody EngineVersion engineVersion){
|
||||
return engineVersionService.initializeRuleEngine(engineVersion);
|
||||
}
|
||||
@PostMapping("TestRuleVersion")
|
||||
public Result testRuleVersion(){
|
||||
return engineVersionService.testRuleVersion();
|
||||
@PostMapping("testRuleVersion")
|
||||
public Result testRuleVersion(@RequestBody TestInterfaceReq testInterfaceReq){
|
||||
return engineVersionService.testRuleVersion(testInterfaceReq);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,4 +70,6 @@ public interface EngineVersionMapper
|
|||
|
||||
void updVersionIsActivate(Long id, String isActivate);
|
||||
|
||||
int updIsTest(Long ruleEngineId);
|
||||
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.muyu.common.core.domain.Result;
|
|||
import com.muyu.engine.domain.Engine;
|
||||
import com.muyu.engine.domain.EngineVersion;
|
||||
import com.muyu.engine.req.DataSourceAssetModelReq;
|
||||
import com.muyu.engine.req.TestInterfaceReq;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -76,6 +77,6 @@ public interface EngineVersionService
|
|||
|
||||
Result getDataRegionList(DataSourceAssetModelReq req);
|
||||
|
||||
Result testRuleVersion();
|
||||
Result testRuleVersion(TestInterfaceReq testInterfaceReq);
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,9 @@ package com.muyu.engine.service.impl;
|
|||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.sql.*;
|
||||
import java.util.*;
|
||||
|
||||
|
@ -10,6 +13,7 @@ import com.muyu.common.core.domain.Result;
|
|||
import com.muyu.common.core.utils.DateUtils;
|
||||
import com.muyu.common.security.utils.SecurityUtils;
|
||||
import com.muyu.data.access.client.datasource.MyDataSource;
|
||||
import com.muyu.engine.classLoading.CustomClassLoader;
|
||||
import com.muyu.engine.constant.GenerateConstant;
|
||||
import com.muyu.engine.constant.PathConstant;
|
||||
import com.muyu.engine.domain.Engine;
|
||||
|
@ -17,8 +21,11 @@ import com.muyu.engine.domain.EngineVersion;
|
|||
import com.muyu.engine.mapper.EngineMapper;
|
||||
import com.muyu.engine.mapper.EngineVersionMapper;
|
||||
import com.muyu.engine.req.DataSourceAssetModelReq;
|
||||
import com.muyu.engine.req.TestInterfaceReq;
|
||||
import com.muyu.engine.service.EngineVersionService;
|
||||
import com.muyu.etl.domain.VTClass;
|
||||
import com.muyu.scope.DataModelContext;
|
||||
import com.muyu.scope.RecordContext;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -260,8 +267,40 @@ public class EngineVersionServiceImpl implements EngineVersionService
|
|||
}
|
||||
|
||||
@Override
|
||||
public Result testRuleVersion() {
|
||||
return null;
|
||||
public Result testRuleVersion(TestInterfaceReq testInterfaceReq) {
|
||||
//根据规则引擎ID查询引擎信息
|
||||
Engine engine = engineMapper.selectEngineById(testInterfaceReq.getEngineVersion().getRuleEngineId());
|
||||
//根据引擎级别设置不同的上下文,进行存储
|
||||
if(engine.getLevel().equals("data-feild")){
|
||||
DataModelContext.set(testInterfaceReq.getDataProcessModel());
|
||||
}else if(engine.getLevel().equals("data-set")){
|
||||
DataModelContext.set(testInterfaceReq.getDataProcessModel());
|
||||
}else {
|
||||
RecordContext.set(testInterfaceReq.getRecordProcessModel());
|
||||
}
|
||||
//拼接服务类的全限定名和类路径
|
||||
String className = PathConstant.PACKAGE_PATH_SERVICE+GenerateConstant.getClassName(testInterfaceReq.getEngineVersion().getVersionCode());
|
||||
String classPath = PathConstant.CLASS_PATH+className.replace(".","\\")+".class";
|
||||
try {
|
||||
//从类路径中读取字节码文件
|
||||
byte[] bytes = Files.readAllBytes(Paths.get(classPath));
|
||||
//创建自定义类加载器并加载类
|
||||
CustomClassLoader customClassLoader = new CustomClassLoader();
|
||||
Class<?> aClass = customClassLoader.defineClassFromBytes(className, bytes);
|
||||
//实例化加载的类
|
||||
Object newInstance = aClass.newInstance();
|
||||
//执行加载的类中的所有方法
|
||||
Method[] methods = aClass.getDeclaredMethods();
|
||||
for (Method method : methods) {
|
||||
method.invoke(newInstance);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
//如果过程中发送异常,返回错误信息
|
||||
return Result.success("程序异常,异常信息:"+e.getMessage());
|
||||
}
|
||||
engineVersionMapper.updIsTest(testInterfaceReq.getEngineVersion().getRuleEngineId());
|
||||
//执行无异常,返回成功结果
|
||||
return Result.success("测试无异常");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -111,6 +111,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<update id="updVersionIsActivate">
|
||||
update engine_version set is_activate = #{isActivate} where id = #{id}
|
||||
</update>
|
||||
<update id="updIsTest">
|
||||
update engine_version set isTest = '2' where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteEngineVersionById" parameterType="Long">
|
||||
delete from engine_version where id = #{id}
|
||||
|
|
Loading…
Reference in New Issue