From f77c58500f7443a177ec88ad4582c10591286171 Mon Sep 17 00:00:00 2001 From: chentaisen <14615430+chentaisen@user.noreply.gitee.com> Date: Thu, 5 Sep 2024 11:26:57 +0800 Subject: [PATCH] Changes --- .../rule/data/engine/basic/BasicEngine.java | 34 ++--- .../abstracts/DataEngineRecordActuator.java | 31 +++++ .../abstracts/DataEngineRowActuator.java | 44 +++---- .../abstracts/DataEngineValueActuator.java | 65 +++++----- .../basic/handler/DataEngineHandler.java | 46 +++---- .../basic/handler/DataEngineRowHandler.java | 40 +++--- .../basic/handler/DataEngineValueHandler.java | 66 +++++----- .../service/ENGINE_VALUE_JDIE3456711_V1.java | 54 ++++---- .../src/main/java/rule/domain/DataValue.java | 52 ++++---- .../main/java/rule/domain/RuleDescribe.java | 50 ++++---- .../controller/RuleEditionController.java | 46 +++---- .../muyu/rule/test/ExternalClassLoader.java | 23 ++++ .../java/com/muyu/rule/test/TestService.java | 117 ++++++++++++++++++ 13 files changed, 420 insertions(+), 248 deletions(-) create mode 100644 muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineRecordActuator.java create mode 100644 muyu-rule-server/src/main/java/com/muyu/rule/test/ExternalClassLoader.java create mode 100644 muyu-rule-server/src/main/java/com/muyu/rule/test/TestService.java diff --git a/muyu-rule-common/src/main/java/rule/data/engine/basic/BasicEngine.java b/muyu-rule-common/src/main/java/rule/data/engine/basic/BasicEngine.java index c53c275..c6f277d 100644 --- a/muyu-rule-common/src/main/java/rule/data/engine/basic/BasicEngine.java +++ b/muyu-rule-common/src/main/java/rule/data/engine/basic/BasicEngine.java @@ -1,17 +1,17 @@ -//package rule.data.engine.basic; -// -///** -// * @ClassName BasicEngin -// * @Description 规则引擎基准 -// * @Author Chen -// * @Date 2024/8/29 14:28 -// */ -//public interface BasicEngine { -// public void set(V dataValue); -// -// public V get(); -// -// public void remove(); -// -// public void execution(); -//} +package rule.data.engine.basic; + +/** + * @ClassName BasicEngin + * @Description 规则引擎基准 + * @Author Chen + * @Date 2024/8/29 14:28 + */ +public interface BasicEngine { + public void set(V dataValue); + + public V get(); + + public void remove(); + + public void execution(); +} diff --git a/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineRecordActuator.java b/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineRecordActuator.java new file mode 100644 index 0000000..94fd5fa --- /dev/null +++ b/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineRecordActuator.java @@ -0,0 +1,31 @@ +package rule.data.engine.basic.abstracts; + +import rule.data.engine.basic.BasicEngine; +import rule.data.engine.basic.handler.DataEngineValueHandler; +import rule.domain.DataValue; + +/** + * @ClassName DataEngineRecordActuator + * @Description 描述 + * @Author Chen + * @Date 2024/9/3 10:18 + */ +public abstract class DataEngineRecordActuator implements BasicEngine { + @Override + public void set(DataValue dataValue) { + DataEngineValueHandler.set(dataValue); + } + + @Override + public DataValue get() { + return DataEngineValueHandler.get(); + } + + @Override + public void execution() { + this.run(); + this.remove(); + } + + public abstract void run(); +} diff --git a/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineRowActuator.java b/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineRowActuator.java index 3de469b..d1f4b86 100644 --- a/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineRowActuator.java +++ b/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineRowActuator.java @@ -1,22 +1,22 @@ -//package rule.data.engine.basic.abstracts; -// -// -//import rule.data.engine.basic.BasicEngine; -//import rule.data.engine.basic.handler.DataEngineHandler; -//import rule.domain.DataValue; -// -///** -// * @ClassName DataEngineValueActuator -// * @Description 数据值处理对象 -// * @Author Chen -// * @Date 2024/8/29 16:10 -// */ -//public abstract class DataEngineRowActuator implements BasicEngine { -// public void set(DataValue[] dataValue) { -// DataEngineHandler.set(dataValue); -// } -// -// public DataValue[] get() { -// return DataEngineHandler.get(); -// } -//} +package rule.data.engine.basic.abstracts; + + +import rule.data.engine.basic.BasicEngine; +import rule.data.engine.basic.handler.DataEngineHandler; +import rule.domain.DataValue; + +/** + * @ClassName DataEngineValueActuator + * @Description 数据值处理对象 + * @Author Chen + * @Date 2024/8/29 16:10 + */ +public abstract class DataEngineRowActuator implements BasicEngine { + public void set(DataValue[] dataValue) { + DataEngineHandler.set(dataValue); + } + + public DataValue[] get() { + return DataEngineHandler.get(); + } +} diff --git a/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineValueActuator.java b/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineValueActuator.java index a219a75..ca97515 100644 --- a/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineValueActuator.java +++ b/muyu-rule-common/src/main/java/rule/data/engine/basic/abstracts/DataEngineValueActuator.java @@ -1,33 +1,32 @@ -//package rule.data.engine.basic.abstracts; -// -// -//import rule.data.engine.basic.BasicEngine; -//import rule.data.engine.basic.handler.DataEngineValueHandler; -//import rule.domain.DataValue; -// -///** -// * @ClassName DataEngineValueActuator -// * @Description 数据值处理对象 -// * @Author Chen -// * @Date 2024/8/29 16:10 -// */ -//public abstract class DataEngineValueActuator implements BasicEngine { -// @Override -// public void set(DataValue dataValue) { -// DataEngineValueHandler.set(dataValue); -// } -// -// @Override -// public DataValue get() { -// return DataEngineValueHandler.get(); -// } -// -// @Override -// public void execution() { -// this.run(); -// this.remove(); -// } -// -// -// public abstract void run(); -//} +package rule.data.engine.basic.abstracts; + + +import rule.data.engine.basic.BasicEngine; +import rule.data.engine.basic.handler.DataEngineValueHandler; +import rule.domain.DataValue; + +/** + * @ClassName DataEngineValueActuator + * @Description 数据值处理对象 + * @Author Chen + * @Date 2024/8/29 16:10 + */ +public abstract class DataEngineValueActuator implements BasicEngine { + @Override + public void set(DataValue dataValue) { + DataEngineValueHandler.set(dataValue); + } + + @Override + public DataValue get() { + return DataEngineValueHandler.get(); + } + + @Override + public void execution() { + this.run(); + this.remove(); + } + + public abstract void run(); +} diff --git a/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineHandler.java b/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineHandler.java index 1504cff..af7911a 100644 --- a/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineHandler.java +++ b/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineHandler.java @@ -1,23 +1,23 @@ -//package rule.data.engine.basic.handler; -// -///** -// * @ClassName DataEngineHandler -// * @Description 规则引擎作用域 -// * @Author Chen -// * @Date 2024/8/29 14:35 -// */ -//public class DataEngineHandler { -// private static final ThreadLocal dataEngineHandler = new ThreadLocal<>(); -// -// public static void set(final Object handler) { -// dataEngineHandler.set(handler); -// } -// -// public static T get() { -// return (T) dataEngineHandler.get(); -// } -// -// public static void remove() { -// dataEngineHandler.remove(); -// } -//} +package rule.data.engine.basic.handler; + +/** + * @ClassName DataEngineHandler + * @Description 规则引擎作用域 + * @Author Chen + * @Date 2024/8/29 14:35 + */ +public class DataEngineHandler { + private static final ThreadLocal dataEngineHandler = new ThreadLocal<>(); + + public static void set(final Object handler) { + dataEngineHandler.set(handler); + } + + public static T get() { + return (T) dataEngineHandler.get(); + } + + public static void remove() { + dataEngineHandler.remove(); + } +} diff --git a/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineRowHandler.java b/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineRowHandler.java index 6d2f17d..7efcd2c 100644 --- a/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineRowHandler.java +++ b/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineRowHandler.java @@ -1,20 +1,20 @@ -//package rule.data.engine.basic.handler; -// -//import rule.domain.DataValue; -// -///** -// * @ClassName DataEngineValueHandler -// * @Description 数据值作用域 数据记录 -// * @Author Chen -// * @Date 2024/8/29 14:41 -// */ -//public class DataEngineRowHandler { -// public static void set(DataValue[] dataValue) { -// DataEngineHandler.set(dataValue); -// } -// -// public DataValue[] get() { -// return DataEngineHandler.get(); -// } -// -//} +package rule.data.engine.basic.handler; + +import rule.domain.DataValue; + +/** + * @ClassName DataEngineValueHandler + * @Description 数据值作用域 数据记录 + * @Author Chen + * @Date 2024/8/29 14:41 + */ +public class DataEngineRowHandler { + public static void set(DataValue[] dataValue) { + DataEngineHandler.set(dataValue); + } + + public DataValue[] get() { + return DataEngineHandler.get(); + } + +} diff --git a/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineValueHandler.java b/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineValueHandler.java index e16b8a7..e3e433d 100644 --- a/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineValueHandler.java +++ b/muyu-rule-common/src/main/java/rule/data/engine/basic/handler/DataEngineValueHandler.java @@ -1,33 +1,33 @@ -//package rule.data.engine.basic.handler; -// -//import com.muyu.common.core.text.Convert; -//import rule.domain.DataValue; -// -///** -// * @ClassName DataEngineValueHandler -// * @Description 数据值作用域 -// * @Author Chen -// * @Date 2024/8/29 14:41 -// */ -//public class DataEngineValueHandler { -// public static void set(DataValue dataValue) { -// DataEngineHandler.set(dataValue); -// } -// -// public static DataValue get() { -// return DataEngineHandler.get(); -// } -// -// public static void remove() { -// DataEngineHandler.remove(); -// } -// public static Object getValue() { -// return get().getValue(); -// } -// -// public static Integer getIntegerValue() { -// return Convert.toInt(getValue(), null); -// } -// -// -//} +package rule.data.engine.basic.handler; + +import com.muyu.common.core.text.Convert; +import rule.domain.DataValue; + +/** + * @ClassName DataEngineValueHandler + * @Description 数据值作用域 + * @Author Chen + * @Date 2024/8/29 14:41 + */ +public class DataEngineValueHandler { + public static void set(DataValue dataValue) { + DataEngineHandler.set(dataValue); + } + + public static DataValue get() { + return DataEngineHandler.get(); + } + + public static void remove() { + DataEngineHandler.remove(); + } + public static Object getValue() { + return get().getValue(); + } + + public static Integer getIntegerValue() { + return Convert.toInt(getValue(), null); + } + + +} diff --git a/muyu-rule-common/src/main/java/rule/data/engine/service/ENGINE_VALUE_JDIE3456711_V1.java b/muyu-rule-common/src/main/java/rule/data/engine/service/ENGINE_VALUE_JDIE3456711_V1.java index c6966b7..7ac1558 100644 --- a/muyu-rule-common/src/main/java/rule/data/engine/service/ENGINE_VALUE_JDIE3456711_V1.java +++ b/muyu-rule-common/src/main/java/rule/data/engine/service/ENGINE_VALUE_JDIE3456711_V1.java @@ -1,27 +1,27 @@ -//package rule.data.engine.service; -// -//import rule.data.engine.basic.abstracts.DataEngineValueActuator; -//import rule.domain.DataValue; -// -///** -// * @ClassName ENGINE_VALUE_JDIE3456711 -// * @Description 判空 -// * @Author Chen -// * @Date 2024/8/29 16:26 -// */ -//public class ENGINE_VALUE_JDIE3456711_V1 extends DataEngineValueActuator { -// -// -// @Override -// public void run() { -// DataValue dataValue = get(); -// if (dataValue.getValue()==null){ -// System.out.println("数据为空,需要丢弃"); -// } -// } -// -// @Override -// public void remove() { -// -// } -//} +package rule.data.engine.service; + +import rule.data.engine.basic.abstracts.DataEngineValueActuator; +import rule.domain.DataValue; + +/** + * @ClassName ENGINE_VALUE_JDIE3456711 + * @Description 判空 + * @Author Chen + * @Date 2024/8/29 16:26 + */ +public class ENGINE_VALUE_JDIE3456711_V1 extends DataEngineValueActuator { + + + @Override + public void run() { + DataValue dataValue = get(); + if (dataValue.getValue()==null){ + System.out.println("数据为空,需要丢弃"); + } + } + + @Override + public void remove() { + + } +} diff --git a/muyu-rule-common/src/main/java/rule/domain/DataValue.java b/muyu-rule-common/src/main/java/rule/domain/DataValue.java index 2ee6f1d..1564547 100644 --- a/muyu-rule-common/src/main/java/rule/domain/DataValue.java +++ b/muyu-rule-common/src/main/java/rule/domain/DataValue.java @@ -1,27 +1,25 @@ -//package rule.domain; -// -//import lombok.AllArgsConstructor; -//import lombok.Builder; -//import lombok.Data; -//import lombok.NoArgsConstructor; -// -//import java.net.SocketOption; -// -///** -// * @ClassName DataValue -// * @Description 描述 -// * @Author Chen -// * @Date 2024/8/29 15:05 -// */ -//@Data -//@Builder -//@AllArgsConstructor -//@NoArgsConstructor -//public class DataValue { -// private Object value; -// private String type; -// private String key; -// private String label; -// -// -//} +package rule.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.net.SocketOption; + +/** + * @ClassName DataValue + * @Description 描述 + * @Author Chen + * @Date 2024/8/29 15:05 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DataValue { + private Object value; + private String type; + private String key; + private String label; +} diff --git a/muyu-rule-common/src/main/java/rule/domain/RuleDescribe.java b/muyu-rule-common/src/main/java/rule/domain/RuleDescribe.java index afb6c08..6cdf815 100644 --- a/muyu-rule-common/src/main/java/rule/domain/RuleDescribe.java +++ b/muyu-rule-common/src/main/java/rule/domain/RuleDescribe.java @@ -1,25 +1,25 @@ -//package rule.domain; -// -//import lombok.AllArgsConstructor; -//import lombok.Data; -//import lombok.NoArgsConstructor; -// -///** -// * @ClassName RuleAll -// * @Description 描述 -// * @Author Chen -// * @Date 2024/8/27 09:04 -// */ -//@Data -//@AllArgsConstructor -//@NoArgsConstructor -//public class RuleDescribe { -// //字段名 -// private String key; -// private Object value; -// //元类型 目标类型 逻辑类型 -// private Object type; -// //描述 -// private String label; -//} -// +package rule.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName RuleAll + * @Description 描述 + * @Author Chen + * @Date 2024/8/27 09:04 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RuleDescribe { + //字段名 + private String key; + private Object value; + //元类型 目标类型 逻辑类型 + private Object type; + //描述 + private String label; +} + diff --git a/muyu-rule-server/src/main/java/com/muyu/rule/controller/RuleEditionController.java b/muyu-rule-server/src/main/java/com/muyu/rule/controller/RuleEditionController.java index 949e48c..10f500d 100644 --- a/muyu-rule-server/src/main/java/com/muyu/rule/controller/RuleEditionController.java +++ b/muyu-rule-server/src/main/java/com/muyu/rule/controller/RuleEditionController.java @@ -6,6 +6,7 @@ import com.muyu.common.core.exception.ServiceException; import com.muyu.rule.compile.SourceCodeCompiler; import com.muyu.rule.service.RuleEditionService; import com.muyu.rule.test.OSSFileDownload; +import com.muyu.rule.test.TestService; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; @@ -29,6 +30,8 @@ import java.util.List; public class RuleEditionController { @Autowired private RuleEditionService ruleEditionService; + @Autowired + private TestService testService; /** * 规则版本列表 @@ -63,27 +66,27 @@ public class RuleEditionController { @Operation(summary = "添加版本", description = "添加版本") public Result insert(@RequestBody @Validated RuleEdition ruleEdition) { - //java OSS - UploadOss.uploadFiles(ruleEdition.getRuleEngine(), ruleEdition.getRuleKind()); - - OSSFileDownload.streamingDownload(ruleEdition.getRuleKind()); - - //对路径里的.java文件进行编译 - SourceCodeCompiler.javaCompilerPath("/home"); - //指定的输出目录 - File outputDir = new File("/home"); - //获取输出目录中文件 - File[] classFiles = outputDir.listFiles(); - if (classFiles != null) { - for (File classFile : classFiles) { - if (classFile.getName().endsWith(".class")) { - log.info("找到class文件 " + classFile.getName()); - } - } - } else { - log.info("没有找到文件"); - } - +// //java OSS +// UploadOss.uploadFiles(ruleEdition.getRuleEngine(), ruleEdition.getRuleKind()); +// +// OSSFileDownload.streamingDownload(ruleEdition.getRuleKind()); +// +// //对路径里的.java文件进行编译 +// SourceCodeCompiler.javaCompilerPath("/home"); +// //指定的输出目录 +// File outputDir = new File("/home"); +// //获取输出目录中文件 +// File[] classFiles = outputDir.listFiles(); +// if (classFiles != null) { +// for (File classFile : classFiles) { +// if (classFile.getName().endsWith(".class")) { +// log.info("找到class文件 " + classFile.getName()); +// } +// } +// } else { +// log.info("没有找到文件"); +// } + testService.test(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq( RuleEdition::getRuleKind, ruleEdition.getRuleKind() @@ -178,6 +181,7 @@ public class RuleEditionController { /** * 保存代码 + * * @param ruleEdition * @return */ diff --git a/muyu-rule-server/src/main/java/com/muyu/rule/test/ExternalClassLoader.java b/muyu-rule-server/src/main/java/com/muyu/rule/test/ExternalClassLoader.java new file mode 100644 index 0000000..fd705e3 --- /dev/null +++ b/muyu-rule-server/src/main/java/com/muyu/rule/test/ExternalClassLoader.java @@ -0,0 +1,23 @@ +package com.muyu.rule.test; + +import java.io.IOException; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.file.Files; +import java.nio.file.Path; + +public class ExternalClassLoader extends URLClassLoader { + + public ExternalClassLoader(URL[] urls) { + super(urls, Thread.currentThread().getContextClassLoader()); + } + + public Class defineClassFromBytes(byte[] classBytes, String className) throws IOException { + return super.defineClass(className, classBytes, 0, classBytes.length); + } + + public Class loadClassFromPath(Path classFilePath, String className) throws IOException { + byte[] classData = Files.readAllBytes(classFilePath); + return defineClassFromBytes(classData, className); + } +} diff --git a/muyu-rule-server/src/main/java/com/muyu/rule/test/TestService.java b/muyu-rule-server/src/main/java/com/muyu/rule/test/TestService.java new file mode 100644 index 0000000..bcbfbfd --- /dev/null +++ b/muyu-rule-server/src/main/java/com/muyu/rule/test/TestService.java @@ -0,0 +1,117 @@ +package com.muyu.rule.test; + + +import org.springframework.stereotype.Service; +import rule.data.engine.basic.BasicEngine; +import rule.domain.DataValue; + +import javax.tools.JavaCompiler; +import javax.tools.ToolProvider; +import java.io.*; +import java.lang.reflect.InvocationTargetException; +import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@Service +public class TestService { + + static Map> engineMap = new ConcurrentHashMap<>(); + + public static final String engineWorkSourcePath = "D:\\work\\cc"; + // public static final String engineWorkClassPath = engineWorkSourcePath; + public static final String className = "rule.data.engine.service.ENGINE_VALUE_JDIE3456711_V1"; + + + // package com.muyu.data.engine.service; + public static final String code = + """ + package com.muyu.data.engine.service; + + import com.muyu.data.engine.basic.abstracts.DataEngineValueActuator; + import com.muyu.etl.core.domain.DataValue; + + /** + * @Author: cc + * @date: 2024/9/29 + * @Description: 判空 + * @Version: 1.0 + */ + public class ENGINE_VALUE_JDIES979972_V2 extends DataEngineValueActuator { + + @Override + public void run () { + DataValue dataValue = get(); + if (dataValue.getValue() == null){ + System.out.println("数据为空,需要丢弃"); + }else{ + System.out.println("数据非空:"+dataValue.getValue()); + } + } + } + """; + + + public void test() { + try { + + FileWriter writer; + writer = new FileWriter(engineWorkSourcePath + "\\ENGINE_VALUE_JDIE3456711_V1.java"); + writer.write(code); + writer.flush(); + writer.close(); + + // 获取java编译器 + JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); + // + InputStream first = null; // 程序的输入 null 用 system.in + OutputStream second = null; // 程序的输出 null 用 system.out + OutputStream third = null; // 程序的错误输出 .,null 用 system.err + // 程序编译参数 注意 我们编译目录是我们的项目目录 + String[] strings = {"-classpath", engineWorkSourcePath, "-verbose", "-d", engineWorkSourcePath, engineWorkSourcePath + "\\ENGINE_VALUE_JDIE3456711_V1.java"}; + // 0 表示成功, 其他表示出现了错误 + System.out.println(Arrays.toString(strings)); + int i = javaCompiler.run(first, second, third, strings); + if (i == 0) { + System.out.println("成功"); + } else { + System.out.println("错误"); + } + // 假设这是你的外部类文件路径 + String externalClassFilePath = + engineWorkSourcePath + "\\com\\muyu\\rule\\test\\ENGINE_VALUE_JDIE3456711_V1.class"; + Path classFilePath = Paths.get(externalClassFilePath); + // 获取外部类所在的目录 + String externalClassDir = externalClassFilePath.substring(0, externalClassFilePath.lastIndexOf('\\')); + URL[] urls = new URL[]{new File(externalClassDir).toURI().toURL()}; + + // 创建自定义类加载器 + ExternalClassLoader externalClassLoader = new ExternalClassLoader(urls); + + // 加载类 + // 注意类名必须是完全限定名(包括包名) + Class clazz = externalClassLoader.loadClassFromPath(classFilePath, className); +// Class clazz = customClassLoader.defineClassFromBytes(externalClassBytes); + // 创建类的实例 + Object instance = clazz.getDeclaredConstructor().newInstance(); + + engineMap.put("ENGINE_VALUE_JDIE3456711_V1", (BasicEngine) instance); + + } catch (IllegalAccessException | IOException | InstantiationException | + NoSuchMethodException | InvocationTargetException e) { + throw new RuntimeException(e); + } + DataValue dataValue = DataValue.builder() + .type("String") + .label("姓名") + .key("name") + .value("张三") + .build(); + BasicEngine engine = engineMap.get("ENGINE_VALUE_JDIE3456711_V1"); + engine.set(dataValue); + engine.execution(); + } +}