master
zhang chengzhi 2024-08-24 01:36:38 +08:00
parent 1443bf6a06
commit c1a3bb406b
5 changed files with 25 additions and 12 deletions

View File

@ -15,7 +15,7 @@ public class EngineConfig {
/**
*
*/
private String pack ="com.ecology.etl.engine.";
private String pack ="com.muyu.rule.server.";
/**
*

View File

@ -2,6 +2,7 @@ package com.muyu.rule.server;
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;
@ -24,16 +25,17 @@ public class EngineTest {
//扫描原码进行编译
SourceCodeComplier.javaCompilerPath(engineConfig.getLocation());
Map<String ,Class<?>> stringClassMap = JavaBinaryClassLoader.loadClassesByLocation(engineConfig.getPack(),engineConfig.getLocation());
Map<String ,Class<?>> stringClassMap = JavaBinaryClassLoader.loadClassesByLocation(engineConfig.getPack(),engineConfig.getLocation());
stringClassMap.forEach((key,value)->{
EngineContainer.loadEngineInstance(key,value);
});
Map<String, Object> params = new HashMap<>();
params.put("idCard","");
//EngineExecution.engineExe(,params);
params.put("idcard","142021 200212215977");
Object engineObject = EngineExecution.engineExe("Engine_2020_11_3_2347", params);
//
// System.out.println(engineObject);

View File

@ -95,9 +95,9 @@ public class EtlRuleController {
* @param id
* @return
*/
@DeleteMapping
@DeleteMapping("/{id}")
@Operation(summary = "规则引擎的删除", description = "通过Id删除规则信息")
public Result<Boolean> deleteById(int id){
public Result<Boolean> deleteById(@PathVariable("id") int id){
etlRuleService.deleteById(id);
return Result.success();
}

View File

@ -39,14 +39,16 @@ public class JavaBinaryClassLoader extends ClassLoader{
private static Class<?> loadClassByNameAndLocation(String name,String pack,File location){
Class<?> aClass = null;
try {
//将class文件的数据读入到byte数组中 转成二进制文件
byte[] datas = loader.loadClassData(name,location);
pack= loader.convert(pack);
System.out.println(pack+"======"+name);
//通过byte数组加载Class对象
aClass = loader.defineClass(pack + name, datas, 0, datas.length);
String cc = pack+name;
System.out.println(cc);
Class<?> aClass = loader.defineClass(cc, datas, 0, datas.length);
log.info("成功加载规则引擎-> {} ",aClass.getName());
return aClass;
} catch (IOException e) {
@ -62,12 +64,14 @@ return aClass;
* @return
*/
public static Map<String ,Class<?>> loadClassesByLocation(String pack,String location){
int count =0;
File[] childFiles = JavaCodeScan.javaBinaryByPath(location);
HashMap<String, Class<?>> map = new HashMap<>();
for (File f : childFiles) {
String name = f.getName().substring(0, f.getName().indexOf(".class"));
Class<?> c = loadClassByNameAndLocation(name,pack,new File(location));
System.out.println(++count);
map.put(name,c);
}
return map;
@ -79,7 +83,7 @@ return map;
* @return
*/
private String convert(String pack) {
return pack.replace('.', '/') + "/";
return pack;
}
public byte[] loadClassData(String name, File location)throws IOException {

View File

@ -96,6 +96,7 @@ return null;
public static List<String> getMethodEngineParamMap(String engineKey) {
return null;
}
@ -114,4 +115,10 @@ return null;
return null;
}
public static int getSumEngine() {
return 1;
}
}