初始化规则引擎

master
Qin Dong Ming 2024-08-22 15:54:11 +08:00
parent 242f61f070
commit 8bfbd8afb0
9 changed files with 248 additions and 12 deletions

View File

@ -11,10 +11,14 @@
<artifactId>cloud-etl-client</artifactId> <artifactId>cloud-etl-client</artifactId>
<properties> <dependencies>
<maven.compiler.source>17</maven.compiler.source> <dependency>
<maven.compiler.target>17</maven.compiler.target> <groupId>com.muyu</groupId>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <artifactId>cloud-etl-common</artifactId>
</properties> <version>1.0.0</version>
</dependency>
</dependencies>
</project> </project>

View File

@ -1,7 +0,0 @@
package com.muyu;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}

View File

@ -0,0 +1,85 @@
//package com.muyu.config;
//
//import com.muyu.common.core.domain.Result;
//import com.muyu.ruleEngine.context.DataModelContextHolder;
//import com.muyu.ruleEngine.context.DataSetContextHolder;
//import com.muyu.ruleEngine.context.RecordContextHolder;
//import com.muyu.ruleEngine.domain.EngineVersion;
//import com.muyu.ruleEngine.domain.req.EngineVersionTestReq;
//import com.muyu.ruleEngine.dynamicLoad.DynamicLoader;
//import com.muyu.ruleEngine.model.DataModel;
//import com.muyu.ruleEngine.model.DataSetModel;
//import com.muyu.ruleEngine.model.RecordModel;
//import com.muyu.ruleEngine.model.process.DataProcessModel;
//import com.muyu.ruleEngine.model.process.DataSetProcessModel;
//import com.muyu.ruleEngine.model.process.RecordProcessModel;
//import com.muyu.source.engine.client.ruleEngineInit.RuleEngineInit;
//import com.muyu.source.remote.RemoteVersionService;
//import lombok.extern.log4j.Log4j2;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.ComponentScan;
//import org.springframework.context.annotation.Import;
//
//import java.lang.reflect.Method;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
///**
// * 规则引擎客户端配置类
// *
// * @author CHX
// * on 2024/5/9 星期四
// */
//@Log4j2
//@ComponentScan
//@Import(value = {RuleEngineClientRunner.class})
//public class RuleEngineClientConfig {
//
// @Autowired
// private RemoteVersionService remoteVersionService;
//
// public Result engineVersionTest(EngineVersionTestReq testReq) {
// if (testReq.getScope() == 4) {
// DataProcessModel dataProcessModel = DataProcessModel.builder().dataModel(testReq.getDataModel()).build();
// DataModelContextHolder.set(dataProcessModel);
// } else if (testReq.getScope() == 3) {
// RecordModel recordModel = RecordModel.builder().dataModels(testReq.getDataModelList()).build();
// RecordProcessModel recordProcessModel = RecordProcessModel.builder()
// .keys(testReq.getKeys())
// .recordModel(recordModel)
// .build();
// RecordContextHolder.set(recordProcessModel);
// } else if (testReq.getScope() == 2) {
// List<RecordModel> recordModelList = new ArrayList<>();
// List<List<DataModel>> dataModelLists = testReq.getDataModelLists();
// dataModelLists.stream().forEach(dataModelList -> {
// RecordModel recordModel = RecordModel.builder().dataModels(dataModelList).build();
// recordModelList.add(recordModel);
// });
// DataSetModel dataSetModel = DataSetModel.builder()
// .recordModels(recordModelList)
// .build();
// DataSetProcessModel dataSetProcessModel = DataSetProcessModel.builder()
// .dataSetModel(dataSetModel)
// .build();
// DataSetContextHolder.set(dataSetProcessModel);
// }
// Result<EngineVersion> versionResult = remoteVersionService.getVersion(testReq.getEngineVersionId());
// EngineVersion engineVersion = versionResult.getData();
// Map<String, byte[]> engineMap = RuleEngineInit.getEngineMap(testReq.getEngineVersionId());
//
// try {
// @SuppressWarnings("resource")
// DynamicLoader.MemoryClassLoader classLoader = new DynamicLoader.MemoryClassLoader(engineMap);
// Class<?> aClass = classLoader.loadClass(engineVersion.getVersionClass());
// Method method = aClass.getDeclaredMethod("execution");
// Object o = aClass.newInstance();
// method.invoke(o);
// } catch (Exception e) {
// log.info(e.getMessage());
// return Result.success("程序异常: 信息[" + e.getLocalizedMessage() + "]异常");
// }
// return Result.success("测试正常,无异常数据返回");
// }
//}

View File

@ -0,0 +1,34 @@
//package com.muyu.config;
//
//import com.muyu.common.core.domain.Result;
//import com.muyu.ruleEngine.domain.EngineVersion;
//import com.muyu.source.engine.client.ruleEngineInit.RuleEngineInit;
//import com.muyu.source.remote.RemoteVersionService;
//import lombok.extern.log4j.Log4j2;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.ApplicationArguments;
//import org.springframework.boot.ApplicationRunner;
//
//import java.util.List;
//
///**
// * 初始化加载
// *
// * @author CHX
// * on 2024/5/9 星期四
// */
//@Log4j2
//public class RuleEngineClientRunner implements ApplicationRunner {
//
// @Autowired
// private RemoteVersionService remoteVersionService;
//
// @Override
// public void run(ApplicationArguments args) throws Exception {
// Result<List<EngineVersion>> versionListResult = remoteVersionService.getVersionList();
// log.info(versionListResult);
// List<EngineVersion> engineVersionList = versionListResult.getData();
// RuleEngineInit.init(engineVersionList);
//
// }
//}

View File

@ -0,0 +1,37 @@
//package com.muyu.ruleEngineLnit;
//
//import com.muyu.ruleEngine.constant.RuleOperationConstants;
//import com.muyu.ruleEngine.domain.EngineVersion;
//import com.muyu.ruleEngine.dynamicLoad.DynamicLoader;
//import org.springframework.stereotype.Component;
//
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * 规则引擎初始化
// *
// * @author CHX
// * on 2024/5/14 星期二
// */
//@Component
//public class RuleEngineInit {
// private static Map<Long, Map<String, byte[]>> engineMap = new HashMap();
//
// public static void init(List<EngineVersion> engineVersionList){
//// Map<String, byte[]> map = new HashMap<>();
// engineVersionList.stream().forEach(engineVersion -> {
// // 获取版本内容
// String content = engineVersion.getRuleContent().replaceAll("\r\n", "");
// // 对source进行编译生成class文件存放在Map中这里用bytecode接收
// Map<String, byte[]> bytecode = DynamicLoader.compile(engineVersion.getVersionClass() +
// RuleOperationConstants.FILE_SUFFIX, content);
// engineMap.put(engineVersion.getId(), bytecode);
// });
// }
//
// public static Map<String, byte[]> getEngineMap(Long ruleId) {
// return engineMap.get(ruleId);
// }
//}

View File

@ -0,0 +1,21 @@
package com.muyu.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @Authorqdm
* @Packagecom.muyu.domain
* @Projectcloud-etl-engine
* @nameEngineMaintenance
* @Date2024/8/22 15:38
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class EngineMaintenance {
}

View File

@ -0,0 +1,31 @@
package com.muyu.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.service.EngIneService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Authorqdm
* @Packagecom.muyu.controller
* @Projectcloud-etl-engine
* @nameEngIneController
* @Date2024/8/22 15:36
*/
@RestController
@RequestMapping("/engine")
public class EngIneController {
@Autowired
EngIneService engIneService;
@GetMapping("/getMaintenanceList")
public Result<List<EngineMaintenance>> getMaintenanceList() {
List<EngineMaintenance> list = engineMaintenanceService.list();
return Result.success(list);
}
}

View File

@ -0,0 +1,11 @@
package com.muyu.service;
/**
* @Authorqdm
* @Packagecom.muyu.service
* @Projectcloud-etl-engine
* @nameEngIneService
* @Date2024/8/22 15:37
*/
public interface EngIneService {
}

View File

@ -0,0 +1,20 @@
package com.muyu.service.serviceImpl;
import com.muyu.mapper.EngineMapper;
import com.muyu.service.EngIneService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @Authorqdm
* @Packagecom.muyu.service.serviceImpl
* @Projectcloud-etl-engine
* @nameEngIneServiceImpl
* @Date2024/8/22 15:37
*/
@Service
public class EngIneServiceImpl implements EngIneService {
@Autowired
EngineMapper engineMapper;
}