From 7ad71f5f612250a190213bcac508570e96ea77fa Mon Sep 17 00:00:00 2001 From: zhang chengzhi <3144712872@qq.com> Date: Sat, 31 Aug 2024 09:34:38 +0800 Subject: [PATCH] 11111 --- HelloWorld.java | 5 ++ .../rule/common/domain/req/VersionAddReq.java | 1 - .../com/muyu/rule/common/utils/OssUtil.java | 48 ++++++++++++++-- .../java/com/muyu/rule/server/DataTest.java | 55 +++++++++++++++++-- .../java/com/muyu/rule/server/EngineTest.java | 23 ++++++++ .../main/java/com/muyu/rule/server/Main.java | 3 +- .../basic/engine/row/ENGINE_ROW_HANG_R1.java | 34 ++++++++++++ .../{ => value}/ENGINE_VALUE_VFD1000_V1.java | 2 +- .../{ => value}/ENGINE_VALUE_VFD1000_V2.java | 4 +- .../server/complie/SourceCodeComplier.java | 1 - .../RuleEngineVersionController.java | 20 +++++-- .../service/RuleEngineVersionService.java | 10 ++++ .../service/impl/RuleEngineServiceImpl.java | 37 +++++++++---- .../impl/SourceDisposeServiceImpl.java | 46 ++++++++++++++++ ...u.rule.server.basic.engine.HelloWorld.java | 5 ++ 15 files changed, 262 insertions(+), 32 deletions(-) create mode 100644 HelloWorld.java create mode 100644 cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/row/ENGINE_ROW_HANG_R1.java rename cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/{ => value}/ENGINE_VALUE_VFD1000_V1.java (91%) rename cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/{ => value}/ENGINE_VALUE_VFD1000_V2.java (93%) create mode 100644 com.muyu.rule.server.basic.engine.HelloWorld.java diff --git a/HelloWorld.java b/HelloWorld.java new file mode 100644 index 0000000..3d781ec --- /dev/null +++ b/HelloWorld.java @@ -0,0 +1,5 @@ +public class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello, World!"); + } +} \ No newline at end of file diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/VersionAddReq.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/VersionAddReq.java index 3870ca5..e710bb6 100644 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/VersionAddReq.java +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/domain/req/VersionAddReq.java @@ -21,7 +21,6 @@ import lombok.experimental.SuperBuilder; @Tag(name = "客户端版本添加请求对象") public class VersionAddReq { - /** * 版本名称 */ diff --git a/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/OssUtil.java b/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/OssUtil.java index 71dbea6..386eb4d 100644 --- a/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/OssUtil.java +++ b/cloud-rule-common/src/main/java/com/muyu/rule/common/utils/OssUtil.java @@ -3,6 +3,7 @@ package com.muyu.rule.common.utils; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.GetObjectRequest; +import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.PutObjectRequest; import lombok.extern.log4j.Log4j2; import org.springframework.web.multipart.MultipartFile; @@ -20,17 +21,19 @@ public class OssUtil { /** * Endpoint 存储对象概述 阿里云主账号AccessKey,accessKeySecret拥有所有API的访问权限 访问路径前缀 存储对象概述 */ - private static String endPoint = "oss-cn-shanghai.aliyuncs.com"; - private static String accessKeyId = "LTAI5tDbRqXkC5i3SMrCSDcX"; - private static String accessKeySecret = "XUzMZoHPLsjNLafHsdQnMElBWZATsu"; - private static String accessPre = "https://mall-bw.oss-cn-shanghai.aliyuncs.com/"; + private static String endPoint = "oss-cn-beijing.aliyuncs.com"; + private static String accessKeyId = "LTAI5tRRrrYqiSXddVq7RvqW"; + private static String accessKeySecret = "GhEg1LlHTOx4q0rxs1S3pCaSQayCVL"; + private static String accessPre = "https://zcz-vfd-1000.oss-cn-beijing.aliyuncs.com/"; + + /** * bucket名称 * * @return */ - private static String bucketName = "mall-bw"; + private static String bucketName = "zcz-vfd-1000"; private static OSS ossClient; @@ -159,4 +162,39 @@ public class OssUtil { return getOssDefaultPath() + UUID.randomUUID().toString() + "." + fileSuf; } + + + + + + /** + * 直接读取OSS中的文件内容 + * + * @param bucketName 存储空间名称 + * @param objectName OSS中的对象名称 + * @return 文件内容 + */ + public static String readFileContentFromOSS(String bucketName, String objectName) { + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endPoint,accessKeyId,accessKeySecret); + + try (OSSObject ossObject = ossClient.getObject(new GetObjectRequest(bucketName, objectName))) { + BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent())); + StringBuilder content = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + content.append(line).append("\n"); + } + return content.toString(); + } catch (Exception e) { + e.printStackTrace(); + return "读取失败:" + e.getMessage(); + } finally { + // 关闭OSSClient。 + ossClient.shutdown(); + } + } + + + } diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/DataTest.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/DataTest.java index aa20cfc..1443193 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/DataTest.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/DataTest.java @@ -1,6 +1,18 @@ package com.muyu.rule.server; +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.PutObjectRequest; import com.muyu.rule.common.domain.DataValue; +import com.muyu.rule.common.utils.OssUtil; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; /** * @Author:张承志 @@ -9,17 +21,50 @@ import com.muyu.rule.common.domain.DataValue; * @name:DataTest * @Date:2024/8/27 9:43 */ + public class DataTest { + + + + /** + * Endpoint 存储对象概述 阿里云主账号AccessKey,accessKeySecret拥有所有API的访问权限 访问路径前缀 存储对象概述 + */ + private static String endPoint = "oss-cn-beijing.aliyuncs.com"; + private static String accessKeyId = "LTAI5tRRrrYqiSXddVq7RvqW"; + private static String accessKeySecret = "GhEg1LlHTOx4q0rxs1S3pCaSQayCVL"; + private static String accessPre = "https://zcz-vfd-1000.oss-cn-beijing.aliyuncs.com/"; + + private static String bucketName = "zcz-vfd-1000"; + public static void main(String[] args) { - DataValue describe = new DataValue(); +String sourceCode ="public class HelloWorld {\n" + + " public static void main(String[] args) {\n" + + " System.out.println(\"Hello, World!\");\n" + + " }\n" + + "}"; - describe.setKey("name"); - describe.setType("String"); - describe.setLabel("姓名"); - describe.setValue("张三"); + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret); + // 将字符串转换为字节数组。 + byte[] contentBytes = sourceCode.getBytes(); + + // 创建PutObjectRequest。 + PutObjectRequest put = new PutObjectRequest(bucketName, "test", new ByteArrayInputStream(contentBytes)); + + // 上传字符串到OSS。 + ossClient.putObject(put); + + // 关闭OSSClient。 + ossClient.shutdown(); + //读取 + String s = OssUtil.readFileContentFromOSS(bucketName, "test"); + + System.out.println(s); } + + } 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 45d5f80..269844b 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 @@ -1,11 +1,16 @@ package com.muyu.rule.server; +import com.muyu.rule.common.utils.OssUtil; import com.muyu.rule.server.complie.SourceCodeComplier; import com.muyu.rule.server.execution.EngineExecution; import com.muyu.rule.server.load.JavaBinaryClassLoader; import com.muyu.rule.server.pool.container.EngineContainer; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; @@ -22,6 +27,24 @@ public class EngineTest { EngineConfig engineConfig = new EngineConfig(); +// String string = OssUtil.uploadFileInputStreamForBucket("zcz-vfd-1000", engineConfig.getPack(),"E:\\practical_training\\cloud-etl-rule\\cloud-rule-server\\src\\main\\java\\com\\muyu\\rule\\server\\engine\\Engine_2024_8_23_2347.java"); +// +// try { +// InputStream fileInputStream = new FileInputStream("src/main/java/com/muyu/rule/server/engine/Engine_2024_8_23_2347.java"); +// } catch (FileNotFoundException e) { +// throw new RuntimeException(e); +// } +// +// System.out.println(string); +// +// String ossFilePath = OssUtil.getOssFilePath(engineConfig.getPack()); +// +// System.out.println("===>"+ossFilePath); +////读取 +//String s = OssUtil.readFileContentFromOSS("zcz-vfd-1000", engineConfig.getPack()); + +// System.out.println(s); + //扫描原码进行编译+-+- SourceCodeComplier.javaCompilerPath(engineConfig.getLocation()); //对class文件进行自定义类加载规则引擎 diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/Main.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/Main.java index 4aa1bce..383c032 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/Main.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/Main.java @@ -2,7 +2,6 @@ package com.muyu.rule.server; import com.muyu.rule.common.domain.DataValue; import com.muyu.rule.server.basic.BasicEngine; -import com.muyu.rule.server.basic.engine.ENGINE_VALUE_VFD1000_V1; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -21,7 +20,7 @@ public class Main { static { try { - Class aClass = Class.forName("com.muyu.rule.server.basic.engine.ENGINE_VALUE_VFD1000_V1"); + Class aClass = Class.forName("com.muyu.rule.server.basic.engine.value.ENGINE_VALUE_VFD1000_V1"); try { engineMap.put("ENGINE_VALUE_VFD1000_V1", (BasicEngine) aClass.newInstance()); diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/row/ENGINE_ROW_HANG_R1.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/row/ENGINE_ROW_HANG_R1.java new file mode 100644 index 0000000..751a343 --- /dev/null +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/row/ENGINE_ROW_HANG_R1.java @@ -0,0 +1,34 @@ +package com.muyu.rule.server.basic.engine.row; + +import com.muyu.rule.common.domain.DataValue; +import com.muyu.rule.server.basic.abstracts.DataEngineRowActuator; +import com.muyu.rule.server.basic.handler.DataEngineRowHandler; + +/** + * @Author:张承志 + * @Package:com.muyu.rule.server.basic.engine.row + * @Project:cloud-etl-rule + * @name:ENGINE_ROW_HANG_R1 + * @Date:2024/8/30 11:13 + */ +public class ENGINE_ROW_HANG_R1 extends DataEngineRowActuator { + + + @Override + public void execution() { + DataValue[] dataValues = get(); + + + + + + + + + + } + + + + +} 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/value/ENGINE_VALUE_VFD1000_V1.java similarity index 91% rename from cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V1.java rename to cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/value/ENGINE_VALUE_VFD1000_V1.java index 0c73333..82aa49f 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/value/ENGINE_VALUE_VFD1000_V1.java @@ -1,4 +1,4 @@ -package com.muyu.rule.server.basic.engine; +package com.muyu.rule.server.basic.engine.value; import com.muyu.rule.common.domain.DataValue; import com.muyu.rule.server.basic.abstracts.DataEngineValueActuator; diff --git a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V2.java b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/value/ENGINE_VALUE_VFD1000_V2.java similarity index 93% rename from cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V2.java rename to cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/value/ENGINE_VALUE_VFD1000_V2.java index b5c067d..ed22815 100644 --- a/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/ENGINE_VALUE_VFD1000_V2.java +++ b/cloud-rule-server/src/main/java/com/muyu/rule/server/basic/engine/value/ENGINE_VALUE_VFD1000_V2.java @@ -1,4 +1,4 @@ -package com.muyu.rule.server.basic.engine; +package com.muyu.rule.server.basic.engine.value; import com.muyu.rule.common.domain.DataValue; import com.muyu.rule.common.utils.Desensitization; @@ -17,8 +17,6 @@ public class ENGINE_VALUE_VFD1000_V2 extends DataEngineValueActuator { DataValue dataValue = get(); String string = Desensitization.mobilePhoneDesensitization((String) dataValue.getValue()); - System.out.println("手机号脱敏的结果是====>"+string); - } } 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 d39fa21..81f8296 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 @@ -33,7 +33,6 @@ public static void javaCompilerPath(String path){ javaCampiler(files); } - /** * 输入编译的文件路径 * @param filePath 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 3ad8170..04b4a63 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 @@ -38,10 +38,17 @@ public class RuleEngineVersionController { @PostMapping("/insertVersion") - @Operation(summary = "规则引擎版本",description = "通过传入版本添加的实体类,进行规则引擎的版本添加") + @Operation(summary = "增加规则引擎版本",description = "通过传入版本添加的实体类,进行规则引擎的版本添加") public Result insertVersion(@Validated @RequestBody VersionAddReq versionAddReq){ - versionService.save(RuleEngineVersion.addBuild(versionAddReq)); + boolean save = versionService.save(RuleEngineVersion.addBuild(versionAddReq)); + if (true==save){ + //添加成功则把增加的代码进行java编译,进行热加载 + versionService.HotLoadClass(versionAddReq.getClassName(),versionAddReq.getVersionClazz()); + + + } + return Result.success(); } @@ -76,12 +83,11 @@ public class RuleEngineVersionController { /** - * 上传 + * 将源码写入到OSS中 * @param * @return */ - @PostMapping("/deposit") public Result deposit(@RequestBody VersionAddReq ver ){ @@ -96,7 +102,13 @@ public class RuleEngineVersionController { } +@PostMapping("/readByOss/{className}") + public Result readByOss(@PathVariable String className){ +Object o= versionService.readByOss(className); + + return Result.success(o); + } 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 884aadc..006a2c6 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 @@ -35,4 +35,14 @@ public interface RuleEngineVersionService extends IService { */ void Upload(String versionClazz,String className); + + /** + * 从OSS服务器读取文件的接口 + * @param className 类名 + * @return + */ + Object readByOss(String className); + + void HotLoadClass(String className, String versionClazz); + } 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 87dc530..443ee55 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 @@ -17,6 +17,8 @@ import org.springframework.stereotype.Service; import java.io.ByteArrayInputStream; import java.io.File; import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Base64; import java.util.List; @@ -65,30 +67,45 @@ public class RuleEngineServiceImpl extends ServiceImpl