feat:规则引擎客户端新增规则引擎服务类
parent
7462c6b251
commit
8408d8f9a6
|
@ -19,13 +19,6 @@ public class ConnectionPoolContextHolder {
|
|||
*/
|
||||
private final Map<Long, DruidDataSource> druidDataSourceMap=new ConcurrentHashMap<>(16);
|
||||
|
||||
/**
|
||||
* 获取所有数据源
|
||||
*/
|
||||
public Map<Long,DruidDataSource> getMap(){
|
||||
return this.druidDataSourceMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将数据源存入上下文中
|
||||
*/
|
||||
|
@ -46,4 +39,11 @@ public class ConnectionPoolContextHolder {
|
|||
public boolean hasKey(Long id){
|
||||
return this.druidDataSourceMap.containsKey(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除数据源
|
||||
*/
|
||||
public void remove(Long id){
|
||||
this.druidDataSourceMap.remove(id);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ public class ConnectionPoolService {
|
|||
public void init(List<DataSource> dataSourceList){
|
||||
for (DataSource dataSource : dataSourceList) {
|
||||
try {
|
||||
connectionPoolContextHolder.put(dataSource.getId(), createDataSource(dataSource));
|
||||
this.put(dataSource);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.dataTransform.domain.req;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.dataTransform.util;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
|
@ -2,8 +2,7 @@ package com.ruoyi.dataTransform.consumer;
|
|||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.rabbitmq.client.Channel;
|
||||
import com.ruoyi.ruleEngine.client.config.RuleEngineVersionFactory;
|
||||
import com.ruoyi.ruleEngine.client.util.RuleEngineUtil;
|
||||
import com.ruoyi.ruleEngine.client.service.RuleEngineService;
|
||||
import com.ruoyi.ruleEngine.constant.QueueNameConstants;
|
||||
import com.ruoyi.ruleEngine.domain.EngineVersion;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
|
@ -15,7 +14,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 引擎版本消费者
|
||||
|
@ -31,7 +29,7 @@ public class EngineVersionConsumer {
|
|||
private RedisTemplate<String, String> redisTemplate;
|
||||
|
||||
@Autowired
|
||||
private RuleEngineVersionFactory ruleEngineVersionFactory;
|
||||
private RuleEngineService ruleEngineService;
|
||||
|
||||
@Autowired
|
||||
private MessageConverter messageConverter;
|
||||
|
@ -47,12 +45,10 @@ public class EngineVersionConsumer {
|
|||
String messageId = message.getMessageProperties().getMessageId();
|
||||
try {
|
||||
Long count = redisTemplate.opsForSet().add(QueueNameConstants.VERSION_MESSAGE, messageId);
|
||||
if (count > 0) {
|
||||
if (count != null&&count > 0) {
|
||||
// 正常消费消息
|
||||
// 编译
|
||||
Map<String, byte[]> bytecode = RuleEngineUtil.compileVersion(engineVersion);
|
||||
// 新增或替换规则内容
|
||||
ruleEngineVersionFactory.put(engineVersion.getId(),bytecode);
|
||||
ruleEngineService.put(engineVersion);
|
||||
// 消费成功 手动确认
|
||||
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
||||
log.info("引擎版本消费者接收到消息,消息内容:{},消费消息成功!", JSON.toJSONString(engineVersion));
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.ruoyi.common.core.domain.Result;
|
|||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.ruoyi.dataTransform.domain.req.RandomDataReq;
|
||||
import com.ruoyi.dataTransform.service.DataExtractService;
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.ruoyi.dataTransform.service;
|
||||
|
||||
import com.ruoyi.dataTransform.domain.req.RandomDataReq;
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
|
@ -5,7 +5,7 @@ import com.ruoyi.dataAsset.service.ConnectionPoolService;
|
|||
import com.ruoyi.dataTransform.domain.req.RandomDataReq;
|
||||
import com.ruoyi.dataTransform.service.DataExtractService;
|
||||
import com.ruoyi.dataTransform.util.DataExtractUtil;
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
|
@ -4,20 +4,20 @@ import com.ruoyi.common.core.domain.Result;
|
|||
import com.ruoyi.common.core.exception.ServiceException;
|
||||
import com.ruoyi.dataTransform.domain.req.TestDataReq;
|
||||
import com.ruoyi.dataTransform.service.EngineOperationService;
|
||||
import com.ruoyi.ruleEngine.client.config.RuleEngineVersionFactory;
|
||||
import com.ruoyi.ruleEngine.client.context.DataModelContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.context.DataSetContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.context.RecordContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.context.DataModelContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.context.DataSetContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.context.RecordContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.dynamicLoad.DynamicLoader;
|
||||
import com.ruoyi.ruleEngine.client.engine.action.ActionRecords;
|
||||
import com.ruoyi.ruleEngine.client.engine.action.ActionRemove;
|
||||
import com.ruoyi.ruleEngine.client.engine.action.ActionReplace;
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.model.DataSetModel;
|
||||
import com.ruoyi.ruleEngine.client.model.RecordModel;
|
||||
import com.ruoyi.ruleEngine.client.model.process.DataModelProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.model.process.RecordProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataSetModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.RecordModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.DataModelProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.DataSetProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.RecordProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.service.RuleEngineService;
|
||||
import com.ruoyi.ruleEngine.remote.RemoteRuleEngineService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -40,7 +40,7 @@ import java.util.Objects;
|
|||
public class EngineOperationServiceImpl implements EngineOperationService {
|
||||
|
||||
@Autowired
|
||||
private RuleEngineVersionFactory ruleEngineVersionFactory;
|
||||
private RuleEngineService ruleEngineService;
|
||||
|
||||
@Autowired
|
||||
private RemoteRuleEngineService remoteRuleEngineService;
|
||||
|
@ -75,7 +75,7 @@ public class EngineOperationServiceImpl implements EngineOperationService {
|
|||
}
|
||||
StringBuffer actionRecords=null;
|
||||
// 获取版本对应class文件的字节数组
|
||||
Map<String, byte[]> bytecode = ruleEngineVersionFactory.get(testDataReq.getVersionId());
|
||||
Map<String, byte[]> bytecode = ruleEngineService.get(testDataReq.getVersionId());
|
||||
try {
|
||||
//执行引擎
|
||||
actionRecords=this.engineExecute(bytecode,testDataReq.getVersionClass(), testDataReq.getVersionId());
|
||||
|
|
|
@ -1,18 +1,15 @@
|
|||
package com.ruoyi.ruleEngine.client.config;
|
||||
|
||||
import com.ruoyi.common.core.domain.Result;
|
||||
import com.ruoyi.ruleEngine.client.util.RuleEngineUtil;
|
||||
import com.ruoyi.ruleEngine.constant.RuleOperationConstants;
|
||||
import com.ruoyi.ruleEngine.client.service.RuleEngineService;
|
||||
import com.ruoyi.ruleEngine.domain.EngineVersion;
|
||||
import com.ruoyi.ruleEngine.domain.req.EngineVersionQueryReq;
|
||||
import com.ruoyi.ruleEngine.client.dynamicLoad.DynamicLoader;
|
||||
import com.ruoyi.ruleEngine.remote.RemoteRuleEngineService;
|
||||
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;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 规则引擎应用程序运行程序
|
||||
|
@ -27,18 +24,13 @@ public class RuleEngineApplicationRunner implements ApplicationRunner {
|
|||
private RemoteRuleEngineService remoteRuleEngineService;
|
||||
|
||||
@Autowired
|
||||
private RuleEngineVersionFactory ruleEngineVersionFactory;
|
||||
private RuleEngineService ruleEngineService;
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
public void run(ApplicationArguments args) {
|
||||
Result<List<EngineVersion>> result = remoteRuleEngineService.list(new EngineVersionQueryReq());
|
||||
if(Result.isSuccess(result)){
|
||||
result.getData().forEach(engineVersion -> {
|
||||
// 编译规则内容
|
||||
Map<String, byte[]> bytecode = RuleEngineUtil.compileVersion(engineVersion);
|
||||
// 存入工厂
|
||||
ruleEngineVersionFactory.put(engineVersion.getId(), bytecode);
|
||||
});
|
||||
ruleEngineService.init(result.getData());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
package com.ruoyi.ruleEngine.client.config;
|
||||
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
/**
|
||||
* 规则引擎版本客户端配置
|
||||
* @ClassName RuleEngineVersionFactory
|
||||
* @Author 森静若林
|
||||
* @Date 2024/5/8 19:31
|
||||
*/
|
||||
@ComponentScan
|
||||
@Import(RuleEngineApplicationRunner.class)
|
||||
public class RuleEngineVersionClientConfig {
|
||||
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
package com.ruoyi.ruleEngine.client.config;
|
||||
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 规则引擎版本工厂
|
||||
* @ClassName RuleEngineVersionFactory
|
||||
* @Author 森静若林
|
||||
* @Date 2024/5/8 19:31
|
||||
*/
|
||||
@ComponentScan
|
||||
@Import(RuleEngineApplicationRunner.class)
|
||||
public class RuleEngineVersionFactory {
|
||||
private final Map<Long,Map<String, byte[]>> versionContentMap=new HashMap<>();
|
||||
|
||||
public Map<Long, Map<String, byte[]>> getMap() {
|
||||
return this.versionContentMap;
|
||||
}
|
||||
|
||||
public void put(Long id,Map<String, byte[]> map) {
|
||||
this.versionContentMap.put(id,map);
|
||||
}
|
||||
|
||||
public Map<String, byte[]> get(Long id) {
|
||||
return this.versionContentMap.get(id);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package com.ruoyi.ruleEngine.client.context;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* 规则引擎上下文
|
||||
* @ClassName RuleEngineContextHolder
|
||||
* @Author GuanTieLin
|
||||
* @Date 2024/5/15 20:37
|
||||
*/
|
||||
@Component
|
||||
public class RuleEngineContextHolder {
|
||||
|
||||
/**
|
||||
* 存储容器
|
||||
*/
|
||||
private final Map<Long, Map<String, byte[]>> versionContentMap=new ConcurrentHashMap<>(16);
|
||||
|
||||
/**
|
||||
* 判断key是否存在
|
||||
*/
|
||||
public boolean hasKey(Long id){
|
||||
return versionContentMap.containsKey(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增编译文件数据
|
||||
*/
|
||||
public void put(Long id,Map<String, byte[]> map) {
|
||||
this.versionContentMap.put(id,map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取编译文件数据
|
||||
*/
|
||||
public Map<String, byte[]> get(Long id) {
|
||||
return this.versionContentMap.get(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除编译文件数据
|
||||
*/
|
||||
public void remove(Long id) {
|
||||
this.versionContentMap.remove(id);
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.ruleEngine.client.engine.action;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.ruleEngine.client.engine.action;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import lombok.*;
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
package com.ruoyi.ruleEngine.client.context;
|
||||
package com.ruoyi.ruleEngine.client.engine.context;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.process.DataModelProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.DataModelProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.util.RuleEngineUtil;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.sql.Connection;
|
||||
|
||||
/**
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.ruleEngine.client.context;
|
||||
package com.ruoyi.ruleEngine.client.engine.context;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.DataSetProcessModel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.ruleEngine.client.context;
|
||||
package com.ruoyi.ruleEngine.client.engine.context;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.process.RecordProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.RecordProcessModel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.ruoyi.ruleEngine.client.context;
|
||||
package com.ruoyi.ruleEngine.client.engine.context;
|
||||
|
||||
/**
|
||||
* 任务上下文
|
|
@ -1,4 +1,4 @@
|
|||
package com.ruoyi.ruleEngine.client.model;
|
||||
package com.ruoyi.ruleEngine.client.engine.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
|
@ -1,4 +1,4 @@
|
|||
package com.ruoyi.ruleEngine.client.model;
|
||||
package com.ruoyi.ruleEngine.client.engine.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
|
@ -1,4 +1,4 @@
|
|||
package com.ruoyi.ruleEngine.client.model;
|
||||
package com.ruoyi.ruleEngine.client.engine.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.ruleEngine.client.model.process;
|
||||
package com.ruoyi.ruleEngine.client.engine.model.process;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.ruleEngine.client.model.process;
|
||||
package com.ruoyi.ruleEngine.client.engine.model.process;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.DataSetModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataSetModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.ruleEngine.client.model.process;
|
||||
package com.ruoyi.ruleEngine.client.engine.model.process;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.RecordModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.RecordModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
|
@ -1,9 +1,9 @@
|
|||
package com.ruoyi.ruleEngine.client.engine.scope;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.context.DataModelContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.context.DataModelContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.Engine;
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.model.process.DataModelProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.DataModelProcessModel;
|
||||
|
||||
/**
|
||||
* 数据模型引擎
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package com.ruoyi.ruleEngine.client.engine.scope;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.context.DataSetContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.context.DataSetContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.Engine;
|
||||
import com.ruoyi.ruleEngine.client.model.DataSetModel;
|
||||
import com.ruoyi.ruleEngine.client.model.RecordModel;
|
||||
import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataSetModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.RecordModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.DataSetProcessModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package com.ruoyi.ruleEngine.client.engine.scope;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.context.RecordContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.context.RecordContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.Engine;
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.model.RecordModel;
|
||||
import com.ruoyi.ruleEngine.client.model.process.RecordProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.RecordModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.RecordProcessModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
package com.ruoyi.ruleEngine.client.service;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.context.RuleEngineContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.util.RuleEngineUtil;
|
||||
import com.ruoyi.ruleEngine.domain.EngineVersion;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 规则引擎服务
|
||||
* @ClassName RuleEngineService
|
||||
* @Author GuanTieLin
|
||||
* @Date 2024/5/15 20:36
|
||||
*/
|
||||
@Log4j2
|
||||
@Component
|
||||
public class RuleEngineService {
|
||||
|
||||
@Autowired
|
||||
private RuleEngineContextHolder ruleEngineContextHolder;
|
||||
|
||||
/**
|
||||
* 初始化规则引擎上下文
|
||||
* @param engineVersionList 引擎版本集合
|
||||
*/
|
||||
public void init(List<EngineVersion> engineVersionList){
|
||||
engineVersionList.forEach(this::put);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增编译文件数据
|
||||
* @param engineVersion 引擎版本
|
||||
*/
|
||||
public void put(EngineVersion engineVersion){
|
||||
// 编译规则内容
|
||||
Map<String, byte[]> bytecode = RuleEngineUtil.compileVersion(engineVersion);
|
||||
// 存入上下文
|
||||
ruleEngineContextHolder.put(engineVersion.getId(), bytecode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除编译文件数据
|
||||
* @param id 引擎版本编号
|
||||
*/
|
||||
public void remove(Long id){
|
||||
if(hasKey(id)){
|
||||
ruleEngineContextHolder.remove(id);
|
||||
}else {
|
||||
log.error("引擎上下文中不存在key:[{}]",id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取编译文件数据
|
||||
* @param id 引擎版本编号
|
||||
* @return 编译文件数据
|
||||
*/
|
||||
public Map<String,byte[]> get(Long id){
|
||||
Map<String,byte[]> map=new HashMap<>();
|
||||
if(hasKey(id)){
|
||||
map=ruleEngineContextHolder.get(id);
|
||||
}else {
|
||||
log.error("引擎上下文中不存在key:[{}]",id);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断key是否存在
|
||||
* @param id 引擎版本编号
|
||||
* @return 是否
|
||||
*/
|
||||
public boolean hasKey(Long id){
|
||||
return ruleEngineContextHolder.hasKey(id);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package com.ruoyi.ruleEngine.client.util;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.context.DataSetContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.engine.context.DataSetContextHolder;
|
||||
import com.ruoyi.ruleEngine.client.dynamicLoad.DynamicLoader;
|
||||
import com.ruoyi.ruleEngine.client.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.model.DataSetModel;
|
||||
import com.ruoyi.ruleEngine.client.model.RecordModel;
|
||||
import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.DataSetModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.RecordModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.DataSetProcessModel;
|
||||
import com.ruoyi.ruleEngine.constant.RuleOperationConstants;
|
||||
import com.ruoyi.ruleEngine.domain.EngineVersion;
|
||||
import java.sql.*;
|
||||
|
@ -56,6 +56,11 @@ public class RuleEngineUtil {
|
|||
DataSetContextHolder.set(dataSetProcessModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编译版本内容
|
||||
* @param engineVersion 引擎版本
|
||||
* @return class文件字节数组
|
||||
*/
|
||||
public static Map<String, byte[]> compileVersion(EngineVersion engineVersion){
|
||||
// 获取版本内容
|
||||
String content = engineVersion.getRuleContent().replaceAll("\r\n", "");
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
com.ruoyi.ruleEngine.client.config.RuleEngineVersionFactory
|
||||
com.ruoyi.ruleEngine.client.config.RuleEngineVersionClientConfig
|
||||
com.ruoyi.ruleEngine.client.context.RuleEngineContextHolder
|
||||
com.ruoyi.ruleEngine.client.service.RuleEngineService
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
package com.ruoyi.ruleEngine.client.context;
|
||||
package com.ruoyi.ruleEngine.client.engine.context;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.process.DataModelProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.DataModelProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.util.RuleEngineUtil;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.sql.Connection;
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.ruleEngine.client.context;
|
||||
package com.ruoyi.ruleEngine.client.engine.context;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.process.DataSetProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.DataSetProcessModel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.ruleEngine.client.context;
|
||||
package com.ruoyi.ruleEngine.client.engine.context;
|
||||
|
||||
import com.ruoyi.ruleEngine.client.model.process.RecordProcessModel;
|
||||
import com.ruoyi.ruleEngine.client.engine.model.process.RecordProcessModel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package com.ruoyi.ruleEngine.client.context;
|
||||
package com.ruoyi.ruleEngine.client.engine.context;
|
||||
|
||||
/**
|
||||
* 任务上下文
|
||||
|
|
Loading…
Reference in New Issue