From 5af8c4155a7488246ecd502f267ca88cf6d8ad13 Mon Sep 17 00:00:00 2001 From: gtl <2949451835@qq.com> Date: Sat, 4 May 2024 17:49:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E7=BB=B4=E6=8A=A4=E6=96=B0=E5=A2=9E=E5=92=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=97=B6=E7=BC=BA=E5=B0=91=E6=8F=8F=E8=BF=B0=E8=AF=AD=E5=8F=A5?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/ConfigCodeConstants.java | 22 ++++++++ .../constant/RuleOperationConstants.java | 22 ++++++++ .../ruleEngine/domain/EngineMaintenance.java | 8 +++ .../domain/req/EngineMaintenanceEditReq.java | 3 + .../domain/req/EngineMaintenanceSaveReq.java | 5 ++ .../com/ruoyi/ruleEngine/scope/TestClass.txt | 2 +- .../service/impl/EngineConfigServiceImpl.java | 56 ++++++------------- 7 files changed, 78 insertions(+), 40 deletions(-) create mode 100644 ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/ConfigCodeConstants.java create mode 100644 ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/RuleOperationConstants.java 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 new file mode 100644 index 0000000..caf5fa2 --- /dev/null +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/ConfigCodeConstants.java @@ -0,0 +1,22 @@ +package com.ruoyi.ruleEngine.constant; + +/** + * 配置编码常量 + * @ClassName ConfigCodeConstants + * @Author 森静若林 + * @Date 2024/5/4 15:28 + */ +public class ConfigCodeConstants { + /** + * 文件基础路径 + */ + public final static String BASE_FILE_PATH="D:/workspace/gtl-ruoyi-server/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/scope/"; + /** + * 配置文件名数组 + */ + public final static String[] CONFIG_FILE_NAME_ARRAY=new String[]{"TestClass.txt","TaskContextHolder.java","DataSetContextHolder.java","RecordContextHolder.java","DataModelContextHolder.java"}; + /** + * 配置文件类型数组 + */ + public final static String[] CONFIG_FILE_TYPE_ARRAY=new String[]{"测试模版","任务","数据集","资产记录","资产模型"}; +} 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 new file mode 100644 index 0000000..1f9666f --- /dev/null +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/constant/RuleOperationConstants.java @@ -0,0 +1,22 @@ +package com.ruoyi.ruleEngine.constant; + +/** + * 规则运行常量 + * @ClassName RuleOperationConstants + * @Author 森静若林 + * @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/EngineMaintenance.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/EngineMaintenance.java index 76116ca..784cbea 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/EngineMaintenance.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/EngineMaintenance.java @@ -69,6 +69,10 @@ public class EngineMaintenance extends BaseEntity { @ApiModelProperty(name = "状态", value = "状态") private String status; + /** 描述 */ + @Excel(name = "描述") + @ApiModelProperty(name = "描述", value = "描述") + private String description; /** * 查询构造器 */ @@ -94,6 +98,8 @@ public class EngineMaintenance extends BaseEntity { .engineCode(engineMaintenanceSaveReq.getEngineCode()) .isActivate(engineMaintenanceSaveReq.getIsActivate()) .status(engineMaintenanceSaveReq.getStatus()) + .description(engineMaintenanceSaveReq.getDescription()) + .remark(engineMaintenanceSaveReq.getRemark()) .createBy(createBy.get()) .createTime(new Date()) .build(); @@ -111,6 +117,8 @@ public class EngineMaintenance extends BaseEntity { .engineCode(engineMaintenanceEditReq.getEngineCode()) .isActivate(engineMaintenanceEditReq.getIsActivate()) .status(engineMaintenanceEditReq.getStatus()) + .remark(engineMaintenanceEditReq.getRemark()) + .description(engineMaintenanceEditReq.getDescription()) .updateBy(updateBy.get()) .updateTime(new Date()) .build(); diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/req/EngineMaintenanceEditReq.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/req/EngineMaintenanceEditReq.java index 428ebc0..6126373 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/req/EngineMaintenanceEditReq.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/req/EngineMaintenanceEditReq.java @@ -46,4 +46,7 @@ public class EngineMaintenanceEditReq extends BaseEntity { @ApiModelProperty(name = "状态", value = "状态") private String status; + /** 描述 */ + @ApiModelProperty(name = "描述", value = "描述") + private String description; } diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/req/EngineMaintenanceSaveReq.java b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/req/EngineMaintenanceSaveReq.java index 9d7fcbf..5312d53 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/req/EngineMaintenanceSaveReq.java +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-common/src/main/java/com/ruoyi/ruleEngine/domain/req/EngineMaintenanceSaveReq.java @@ -57,4 +57,9 @@ public class EngineMaintenanceSaveReq extends BaseEntity { @ApiModelProperty(name = "状态", value = "状态") private String status; + /** 描述 */ + + @ApiModelProperty(name = "描述", value = "描述") + private String description; + } diff --git a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/scope/TestClass.txt b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/scope/TestClass.txt index 187d619..f928971 100644 --- a/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/scope/TestClass.txt +++ b/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/scope/TestClass.txt @@ -4,7 +4,7 @@ import java.util.List; * @Author 森静若林 */ public class TestClass { - public String ruleTest(List list) { + public static String ruleTest(List list) { } } 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 ecf10f0..cc0762c 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,6 +4,8 @@ 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.ConfigCodeConstants; +import com.ruoyi.ruleEngine.constant.RuleOperationConstants; import com.ruoyi.ruleEngine.domain.EngineConfig; import com.ruoyi.ruleEngine.domain.model.TestData; import com.ruoyi.ruleEngine.domain.resp.EngineConfigScopeResp; @@ -13,7 +15,6 @@ import com.ruoyi.ruleEngine.service.EngineConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.nio.file.Files; import java.nio.file.Paths; @@ -39,21 +40,16 @@ public class EngineConfigServiceImpl extends ServiceImpl getScopeList() { List list=new ArrayList<>(); - List scopeName=List.of("TaskContextHolder","DataSetContextHolder","RecordContextHolder","DataModelContextHolder"); try { - for (String scope : scopeName) { - String path="D:/workspace/gtl-ruoyi-server/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/scope/"+scope+".java"; - String code = Files.readString(Paths.get(path)); - String type=null; - if(scope.contains("Task")){ - type="任务"; - }else if(scope.contains("DataSet")){ - type="数据集"; - }else if(scope.contains("Record")){ - type="资产记录"; - }else{ - type="资产模型"; + int index=0; + for (String scope : ConfigCodeConstants.CONFIG_FILE_NAME_ARRAY) { + if(index==0){ + index++; + continue; } + String path=ConfigCodeConstants.BASE_FILE_PATH+scope; + String code = Files.readString(Paths.get(path)); + String type=ConfigCodeConstants.CONFIG_FILE_TYPE_ARRAY[index++]; list.add(EngineConfigScopeResp.builder().type(type).name(scope).code(code).build()); } } catch (IOException e) { @@ -99,25 +95,9 @@ public class EngineConfigServiceImpl extends ServiceImpl bytecode = DynamicLoader.compile(className + SUFFIX,content ); + Map bytecode = DynamicLoader.compile(RuleOperationConstants.CLASS_NAME + RuleOperationConstants.FILE_SUFFIX,content ); // 加载class文件到虚拟机中,然后通过反射执行 @SuppressWarnings("resource") DynamicLoader.MemoryClassLoader classLoader = new DynamicLoader.MemoryClassLoader( bytecode); - Class clazz = classLoader.loadClass(className); + Class clazz = classLoader.loadClass(RuleOperationConstants.CLASS_NAME); // 调用ruleTest方法 - Method mainMethod = clazz.getDeclaredMethod("ruleTest", List.class); + Method mainMethod = clazz.getDeclaredMethod(RuleOperationConstants.METHOD_NAME, List.class); invoke = mainMethod.invoke(null, testData.getList()); - } catch (ClassNotFoundException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { + } catch (Exception e) { e.printStackTrace(); throw new ServiceException("测试失败"); }