diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/EtlRuleAddReq.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/EtlRuleAddReq.java index d71a3e4..0ff7d41 100644 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/EtlRuleAddReq.java +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/EtlRuleAddReq.java @@ -1,5 +1,6 @@ package com.muyu.rule.common.domain.req; +import com.muyu.rule.common.utils.OssUtil; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import lombok.Data; @@ -43,4 +44,5 @@ public class EtlRuleAddReq { */ private String remark; + } diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java index 0284692..45d5f80 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/EngineTest.java @@ -26,7 +26,7 @@ public class EngineTest { SourceCodeComplier.javaCompilerPath(engineConfig.getLocation()); //对class文件进行自定义类加载规则引擎 Map> stringClassMap = JavaBinaryClassLoader.loadClassesByLocation(engineConfig.getPack(),engineConfig.getLocation()); - + System.out.println("====>"+stringClassMap); stringClassMap.forEach((key,value)->{ EngineContainer.loadEngineInstance(key,value); }); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java index 17bc004..0c73333 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java @@ -3,8 +3,6 @@ package com.muyu.rule.server.basic.engine; import com.muyu.rule.common.domain.DataValue; import com.muyu.rule.server.basic.abstracts.DataEngineValueActuator; -import javax.xml.crypto.Data; - /** * @Author:张承志 * @Package:com.muyu.rule.server.basic.engine diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/complie/SourceCodeComplier.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/complie/SourceCodeComplier.java index dadaa7b..d39fa21 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/complie/SourceCodeComplier.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/complie/SourceCodeComplier.java @@ -28,8 +28,7 @@ public class SourceCodeComplier extends ClassLoader { * @param path 文件夹路径 */ -public static void -javaCompilerPath(String path){ +public static void javaCompilerPath(String path){ File[] files = JavaCodeScan.javaSourceScanByPath(path); javaCampiler(files); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/constant/SuffixClass.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/constant/SuffixClass.java new file mode 100644 index 0000000..da308e5 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/constant/SuffixClass.java @@ -0,0 +1,18 @@ +package com.muyu.rule.server.constant; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.constant + * @Project:cloud-etl-rule + * @name:SuffixClass + * @Date:2024/8/30 9:14 + */ + +public class SuffixClass { + + public static final String Suffix_JAVA = ".java"; + public static final String Suffix_CLASS = ".class"; + + + +} diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java index 96a9490..0ec2272 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/controller/RuleEngineVersionController.java @@ -3,6 +3,7 @@ package com.muyu.rule.server.controller; import com.muyu.common.core.domain.Result; import com.muyu.rule.common.domain.RuleEngineVersion; import com.muyu.rule.common.domain.req.VersionAddReq; +import com.muyu.rule.common.utils.OssUtil; import com.muyu.rule.server.service.RuleEngineVersionService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -74,6 +75,25 @@ public class RuleEngineVersionController { } + /** + * 上传 + * @param versionClazz + * @return + */ + + + @PostMapping("/deposit/{versionClazz}/{className}") + public Result deposit(@PathVariable("versionClazz") String versionClazz, @PathVariable("className") String className){ + + versionService.Upload(versionClazz,className); + + return Result.success(); + } + + + + + diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class b/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class new file mode 100644 index 0000000..35ac10d Binary files /dev/null and b/cloud-rule-server/src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.class differ diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/load/JavaBinaryClassLoader.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/load/JavaBinaryClassLoader.java index cfadf27..b3830a1 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/load/JavaBinaryClassLoader.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/load/JavaBinaryClassLoader.java @@ -19,6 +19,7 @@ import java.util.Map; * @Project:cloud-etl-rule * @name:JavaBinaryClassLoader * @Date:2024/8/22 20:54 + * java字节码文件 加载器 */ public class JavaBinaryClassLoader extends ClassLoader{ @@ -43,7 +44,7 @@ private static Class loadClassByNameAndLocation(String name,String pack,File try { //将class文件的数据读入到byte数组中 转成二进制文件 byte[] datas = loader.loadClassData(name,location); - pack= loader.convert(pack); + //pack= loader.convert(pack); //通过byte数组加载Class对象 String cc = pack+name; diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/pool/container/EngineContainer.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/pool/container/EngineContainer.java index a1742a4..d21af86 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/pool/container/EngineContainer.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/pool/container/EngineContainer.java @@ -45,8 +45,9 @@ public class EngineContainer { classMap.put(engineKey, clazz); methodMap.put(engineKey, method); - +//获取所有的参数 Class[] parameterTypes = method.getParameterTypes(); + //获取所有的注解 Annotation[][] parameterAnnotations = method.getParameterAnnotations(); ArrayList engineParams = new ArrayList<>(); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/scan/JavaCodeScan.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/scan/JavaCodeScan.java index ac9fbc4..fb8ed45 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/scan/JavaCodeScan.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/scan/JavaCodeScan.java @@ -13,6 +13,8 @@ import java.io.FilenameFilter; * @Project:cloud-etl-rule * @name:JavaCodeScan * @Date:2024/8/22 21:11 + * + * java 文件扫描器 扫描某路径下的源码,二进制文件 */ public class JavaCodeScan { diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/RuleEngineVersionService.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/RuleEngineVersionService.java index 53385bb..884aadc 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/RuleEngineVersionService.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/RuleEngineVersionService.java @@ -27,4 +27,12 @@ public interface RuleEngineVersionService extends IService { void disable(Long id); String dataGenerate(String dataSource); + + /** + * + * @param versionClazz 具体代码 + * @param className 类的名 + */ + + void Upload(String versionClazz,String className); } diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineServiceImpl.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineServiceImpl.java index 14c656b..87dc530 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineServiceImpl.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/service/impl/RuleEngineServiceImpl.java @@ -8,12 +8,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.enums.SystemYesNo; import com.muyu.rule.common.domain.RuleEngine; import com.muyu.rule.common.domain.RuleEngineVersion; +import com.muyu.rule.common.utils.OssUtil; import com.muyu.rule.server.mapper.RuleEngineVersionMapper; +import com.muyu.rule.server.scan.JavaCodeScan; import com.muyu.rule.server.service.RuleEngineVersionService; import org.springframework.stereotype.Service; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.util.Base64; import java.util.List; +import static com.muyu.rule.server.constant.SuffixClass.Suffix_JAVA; + /** * @Author:张承志 * @Package:com.muyu.rule.server.service.impl @@ -58,6 +66,31 @@ public class RuleEngineServiceImpl extends ServiceImpl