From 330110f4190c36857daf4e006ea004b6be761829 Mon Sep 17 00:00:00 2001 From: rouchen <3133657697@qq.com> Date: Sun, 19 May 2024 21:17:39 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0Skywalking=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- muyu-auth/pom.xml | 13 ++ .../source/client/config/KvtClientRunner.java | 138 +++++++++--------- .../muyu/engine/client/EngClientRunner.java | 81 +++++++++- .../main/java/com/muyu/model/DataModel.java | 6 + .../muyu/scope/model/DataProcessModel.java | 6 + .../remote/RuleEngineManangerService.java | 6 +- .../RuleEngineManangerServiceFactory.java | 5 + .../impl/RuleEngineVersionServiceImpl.java | 13 ++ 8 files changed, 201 insertions(+), 67 deletions(-) diff --git a/muyu-auth/pom.xml b/muyu-auth/pom.xml index a8ddedc..c4cba9c 100644 --- a/muyu-auth/pom.xml +++ b/muyu-auth/pom.xml @@ -52,6 +52,19 @@ muyu-common-security + + + org.apache.skywalking + apm-toolkit-logback-1.x + 8.16.0 + + + org.apache.skywalking + apm-toolkit-trace + 8.16.0 + + + diff --git a/muyu-modules/muyu-dataSource/muyu-dataSource-client/src/main/java/com/muyu/source/client/config/KvtClientRunner.java b/muyu-modules/muyu-dataSource/muyu-dataSource-client/src/main/java/com/muyu/source/client/config/KvtClientRunner.java index 3d847ea..89b41a2 100644 --- a/muyu-modules/muyu-dataSource/muyu-dataSource-client/src/main/java/com/muyu/source/client/config/KvtClientRunner.java +++ b/muyu-modules/muyu-dataSource/muyu-dataSource-client/src/main/java/com/muyu/source/client/config/KvtClientRunner.java @@ -1,7 +1,10 @@ package com.muyu.source.client.config; import com.muyu.common.core.domain.Result; -import com.muyu.source.connection.service.ConnectionPoolManagement; +import com.muyu.source.client.pool.BasePool; +import com.muyu.source.client.pool.MysqlPool; +import com.muyu.source.client.pool.confilg.MysqlPoolConfig; +import com.muyu.source.client.pool.dto.SysDataSource; import com.muyu.source.domain.Kvt; import com.muyu.source.remote.RemoteDataManagerService; import lombok.extern.log4j.Log4j2; @@ -9,6 +12,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; /** @@ -29,62 +38,62 @@ public class KvtClientRunner implements ApplicationRunner { public void run(ApplicationArguments args) { - Result> list = remoteDataManagerService.selectKvt(); - List data = list.getData(); + Result> selectKvt = remoteDataManagerService.selectKvt(); + List data = selectKvt.getData(); - if(data != null) { - ConnectionPoolManagement.init(data); - } else { - log.warn("数据源为空"); - } - - - -// List list = new ArrayList<>(); -// HashMap hashMap = new HashMap<>(); -// data.forEach(kvt -> { -// -// MysqlPoolConfig build = MysqlPoolConfig.builder() -// .id(String.valueOf(kvt.getId())) -// .ip(kvt.getHost()) -// .port(kvt.getPort()) -// .databaseName(kvt.getDatabaseName()) -// .param(kvt.getConnectionParam()) -// .initTotal(Math.toIntExact(kvt.getInitNum())) -// .maxTotal(Math.toIntExact(kvt.getMaxNum())) -// .maxWaitTimes(kvt.getMaxWaitTime()) -// .userName(kvt.getUsername()) -// .password(kvt.getPassword()) -// .driverName("com.mysql.cj.jdbc.Driver") -// .build(); -// BasePool mysqlPool = new MysqlPool(build); -// -// log.info("初始化开始"); -// -// mysqlPool.init(); -// int initNum = build.getInitTotal(); -// for (int i = 0; i < initNum; i++) { -// Connection connection = mysqlPool.creatConnection(); -// map.put(String.valueOf(i), connection); -// mysqlPool.returnConn(connection); -// } -// log.info("-------------------------"); -// mysqlPool.close(); -// log.info("map:{}",map); -// }); -// Connection connection = map.get("1"); -// Statement statement =null; -// try{ -// statement = connection.createStatement(); -// ResultSet resultSet = statement.executeQuery("SHOW Tables"); -// while (resultSet.next()){ -// String name = resultSet.getString(1); -// log.info("name:{}",name); -// } -// log.info("连接成功"); -// }catch (SQLException e){ -// log.error("sql错误"); +// if(data != null) { +// ConnectionPoolManagement.init(data); +// } else { +// log.warn("数据源为空"); // } +// +// + + List aa = new ArrayList<>(); + HashMap map = new HashMap<>(); + data.forEach(kvt -> { + + MysqlPoolConfig build = MysqlPoolConfig.builder() + .id(String.valueOf(kvt.getId())) + .ip(kvt.getHost()) + .port(kvt.getPort()) + .databaseName(kvt.getDatabaseName()) + .param(kvt.getConnectionParam()) + .initTotal(Math.toIntExact(kvt.getInitNum())) + .maxTotal(Math.toIntExact(kvt.getMaxNum())) + .maxWaitTimes(kvt.getMaxWaitTime()) + .userName(kvt.getUsername()) + .password(kvt.getPassword()) + .driverName("com.mysql.cj.jdbc.Driver") + .build(); + BasePool mysqlPool = new MysqlPool(build); + + log.info("初始化开始"); + + mysqlPool.init(); + int initNum = build.getInitTotal(); + for (int i = 0; i < initNum; i++) { + Connection connection = mysqlPool.creatConnection(); + map.put(String.valueOf(i), connection); + mysqlPool.returnConn(connection); + } + log.info("-------------------------"); + mysqlPool.close(); + log.info("map:{}",map); + }); + Connection connection = map.get("1"); + Statement statement =null; + try{ + statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery("SHOW Tables"); + while (resultSet.next()){ + String name = resultSet.getString(1); + log.info("name:{}",name); + } + log.info("连接成功"); + }catch (SQLException e){ + log.error("sql错误"); + } // SysDataSource sysDataSource = new SysDataSource(); @@ -105,17 +114,17 @@ public class KvtClientRunner implements ApplicationRunner { // sysDataSource.setRemark("测试"); // sysDataSource.setIsInit("Y"); // -// list.add(sysDataSource); +// aa.add(sysDataSource); // // list.forEach(sysDataSoure -> { // MysqlPoolConfig build = MysqlPoolConfig.builder() -// .id(sysDataSoure.getId()) +// .id(String.valueOf(sysDataSoure.getId())) // .ip(sysDataSoure.getHost()) // .port(sysDataSoure.getPort()) // .databaseName(sysDataSoure.getDatabaseName()) // .param(sysDataSoure.getConnectionParam()) -// .initTotal(sysDataSoure.getInitNum()) -// .maxTotal(sysDataSoure.getMaxNum()) +// .initTotal(Math.toIntExact(sysDataSoure.getInitNum())) +// .maxTotal(Math.toIntExact(sysDataSoure.getMaxNum())) // .maxWaitTimes(sysDataSoure.getMaxWaitTime()) // .userName(sysDataSoure.getUsername()) // .password(sysDataSoure.getPassword()) @@ -126,7 +135,7 @@ public class KvtClientRunner implements ApplicationRunner { // log.info("初始化开始"); // // mysqlPool.init(); -// int initNum = sysDataSoure.getInitNum(); +// int initNum = Math.toIntExact(sysDataSoure.getInitNum()); // for (int i = 0; i < initNum; i++) { // Connection connection = mysqlPool.creatConnection(); // map.put(String.valueOf(i), connection); @@ -136,16 +145,15 @@ public class KvtClientRunner implements ApplicationRunner { // mysqlPool.close(); // log.info("map:{}",map); // }); - +// // Connection connection = map.get("1"); // Statement statement =null; // try{ // statement = connection.createStatement(); -// ResultSet resultSet = statement.executeQuery("select * from user"); +// ResultSet resultSet = statement.executeQuery("SELECT Table"); // while (resultSet.next()){ -// int id = resultSet.getInt(1); -// String name = resultSet.getString(2); -// log.info("id:{},name:{}",id,name); +// String name = resultSet.getString(1); +// log.info("name:{}",name); // } // log.info("连接成功"); // }catch (SQLException e){ diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientRunner.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientRunner.java index 4a7a04a..73baf37 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientRunner.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-clinet/src/main/java/com/muyu/engine/client/EngClientRunner.java @@ -2,12 +2,18 @@ package com.muyu.engine.client; import com.muyu.common.core.domain.Result; import com.muyu.engine.domain.RuleEngine; +import com.muyu.engine.domain.rule_engine_version.RuleEngineVersion; import com.muyu.engine.remote.RuleEngineManangerService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import javax.tools.*; +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.net.URI; +import java.util.Arrays; import java.util.List; /** @@ -25,7 +31,80 @@ public class EngClientRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { Result> listResult = ruleEngineManangerService.selectRuleEngine(); - System.out.println("sdsssssssssssssssssssssssss"+listResult.getData()); + +// Result> result = ruleEngineManangerService.RuleEngineVersionList(new RuleEngineVersionQueryReq()); +// List data = result.getData(); +// System.out.println("result = " + result); +// data.forEach(ruleEngineVersion -> { +// //如何判断指定目录下是否有.java文件 +// this.writeCodeAdd(ruleEngineVersion); +// }); + } + private String url ="D:\\work\\zglkh\\cloud-server\\muyu-modules\\muyu-rule-engine\\muyu-rule-engine-common\\src\\main\\java\\com\\muyu\\engine\\java\\"; + + public void writeCodeAdd(RuleEngineVersion ruleEngineVersion) { + try { + String originalVersionCode = ruleEngineVersion.getVersionCode(); + // 提取第一个字符并转换为大写 + String firstCharUpperCase = originalVersionCode.substring(0, 1).toUpperCase(); + // 截取从第二个字符到末尾的子串 + String restOfVersionCode = originalVersionCode.substring(1); + // 将首字母大写和剩余部分拼接起来 + String newVersionCode = firstCharUpperCase + restOfVersionCode; + + String className = newVersionCode; + + //编译 + String path=url+className+".java"; + + BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(path)); + // 写入内容 + bufferedWriter.write(ruleEngineVersion.getCodeIng()); + // 关闭流 + bufferedWriter.close(); + //编译内容 + String content = ruleEngineVersion.getCodeIng(); + // 指定输出目录 + JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); + // 获取编译器 + try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null)) { + // 创建一个内存中的源文件 + JavaFileObject sourceFileObject = new JavaSourceFromString(className, content); + + // 编译选项 + Iterable options = Arrays.asList("-d", url); + // 编译源代码 + JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, options, null, Arrays.asList(sourceFileObject)); + boolean success = task.call(); + + if (success) { + System.out.println("编译成功"); + } else { + System.out.println("编译失败"); + } + } catch (Exception e) { + e.printStackTrace(); + } + }catch (Exception e) { + e.printStackTrace(); + } + + } + //内存中的源文件 + static class JavaSourceFromString extends SimpleJavaFileObject { + final String code; + // 构造方法 + JavaSourceFromString(String name, String code) { + // URI + super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE); + this.code = code; + } + // 返回源代码 + @Override + public CharSequence getCharContent(boolean ignoreEncodingErrors) { + return code; + } + } } diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/model/DataModel.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/model/DataModel.java index 2f5c77b..ca64fac 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/model/DataModel.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/model/DataModel.java @@ -1,6 +1,9 @@ package com.muyu.model; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; /** * 数据模型 DataModel @@ -9,6 +12,9 @@ import lombok.Data; * on 2024/5/8 */ @Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor public class DataModel { diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/scope/model/DataProcessModel.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/scope/model/DataProcessModel.java index 42f02c1..da64d05 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/scope/model/DataProcessModel.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-common/src/main/java/com/muyu/scope/model/DataProcessModel.java @@ -1,7 +1,10 @@ package com.muyu.scope.model; import com.muyu.model.DataModel; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; /**数据处理模型 * @Author: DongZeLiang @@ -10,6 +13,9 @@ import lombok.Data; * @Version: 1.0 */ @Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder public class DataProcessModel { private DataModel dataModel; diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/RuleEngineManangerService.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/RuleEngineManangerService.java index 86fcd4b..32a3576 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/RuleEngineManangerService.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/RuleEngineManangerService.java @@ -32,4 +32,8 @@ import java.util.List; public interface RuleEngineManangerService { @PostMapping("/selectRuleEngine") public Result> selectRuleEngine(); -} +// +// @GetMapping("/RuleEngineVersionList") +// public Result> RuleEngineVersionList(RuleEngineVersionQueryReq ruleEngineVersionQueryReq) ; + + } diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/factory/RuleEngineManangerServiceFactory.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/factory/RuleEngineManangerServiceFactory.java index 5ed2d88..e69d4cc 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/factory/RuleEngineManangerServiceFactory.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-remote/src/main/java/com/muyu/engine/remote/factory/RuleEngineManangerServiceFactory.java @@ -23,6 +23,11 @@ public class RuleEngineManangerServiceFactory implements FallbackFactory> selectRuleEngine() { return Result.error(cause.getMessage()); } + +// @Override +// public Result> RuleEngineVersionList(RuleEngineVersionQueryReq ruleEngineVersionQueryReq) { +// return Result.error(cause.getMessage()); +// } }; } } diff --git a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java index 056f88c..3747ac8 100644 --- a/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java +++ b/muyu-modules/muyu-rule-engine/muyu-rule-engine-server/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java @@ -116,8 +116,21 @@ private RuleEngineService ruleEngineService; log.info("编码保存成功"); } + @Override public Result test(EngineVersionReq engineVersionReq) { + if (engineVersionReq.getLevel().equals("data-field")){ + + } + if (engineVersionReq.getLevel().equals("data-set")){ + + } + if (engineVersionReq.getLevel().equals("recording")){ + + } + + + return null; }