feat:规则引擎(数据源接入,测试)

master_fei
Yunfei Du 2024-05-15 09:34:33 +08:00
parent 7dcbe492a5
commit df32e7d7eb
16 changed files with 183 additions and 317 deletions

View File

@ -1,21 +0,0 @@
package com.etl.data.domain.config;
import com.alibaba.druid.pool.DruidDataSource;
/**
* @ClassName DataSourceConfig
* @Description
* @Author YunFei.Du
* @Date 2024/5/10 9:44
*/
public class DataSourceConfig {
public static DruidDataSource dataSource(String ip , String name, String port , String username, String password) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setUrl("jdbc:mysql://"+ip+":"+port+"/"+name+"?useSSL=false");
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
return dataSource;
}
}

View File

@ -0,0 +1,21 @@
package com.etl.data.source.remote;
import com.etl.common.core.constant.ServiceNameConstants;
import com.etl.data.source.remote.factory.AssetModelFactory;
import org.springframework.cloud.openfeign.FeignClient;
/**
* @ClassName RemoteAssetModelService
* @Description
* @Author YunFei.Du
* @Date 2024/5/13 15:08
*/
@FeignClient(
contextId = "RemoteAssetModelService",
value = ServiceNameConstants.DATA_SOURCE_SERVICE,
fallbackFactory = AssetModelFactory.class,
path = "/model"
)
public interface RemoteAssetModelService {
}

View File

@ -0,0 +1,17 @@
package com.etl.data.source.remote.factory;
import com.etl.data.source.remote.RemoteAssetModelService;
import org.springframework.cloud.openfeign.FallbackFactory;
/**
* @ClassName AssetModelFactory
* @Description
* @Author YunFei.Du
* @Date 2024/5/13 15:07
*/
public class AssetModelFactory implements FallbackFactory< RemoteAssetModelService > {
@Override
public RemoteAssetModelService create(Throwable cause) {
return null;
}
}

View File

@ -31,6 +31,9 @@ public class DataSourceController extends BaseController {
@PostMapping("/list") @PostMapping("/list")
public Result< TableDataInfo<DataSource> > getDataSourceList (@RequestBody DataSourceQueryReq req) { public Result< TableDataInfo<DataSource> > getDataSourceList (@RequestBody DataSourceQueryReq req) {
startPage(); startPage();
ThreadLocal< String > local = new ThreadLocal<> ( );
String s = local.get ( );
System.out.println ("asd"+s );
List<DataSource> list = dataSourceService.selectDataSourceList(req); List<DataSource> list = dataSourceService.selectDataSourceList(req);
return getDataAsset (list); return getDataAsset (list);
} }

View File

@ -0,0 +1,55 @@
package com.etl.data.unit.controller;/**
* @ClassName TextController
* @Description
* @Author YunFei Du
* @Date 2024/05/13 15:21
*/
import com.etl.data.unit.domain.DataModel;
import com.etl.data.unit.domain.TreadConstant;
import com.etl.data.unit.service.Basic;
import com.etl.data.unit.service.impl.A;
import com.etl.data.unit.service.impl.B;
import com.etl.data.unit.service.impl.C;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.ConcurrentHashMap;
/**
*TextController
*
* YunFei Du
*2024/05/13 15:21
*/
@RestController
public class TextController {
private static final ConcurrentHashMap<String, Basic> ruleConcurrentHashMap= new ConcurrentHashMap<>();
static {
init();
}
public static void init(){
ruleConcurrentHashMap.put("a",new A());
ruleConcurrentHashMap.put("b",new B());
ruleConcurrentHashMap.put("c",new C());
}
@PostMapping("text")
public void text(){
DataModel dataModel = new DataModel();
dataModel.setValue("王五");
dataModel.setKey("name");
dataModel.setProcessClass(String.class);
dataModel.setSourceType("varchar");
dataModel.setProcessType("String");
TreadConstant.set(dataModel);
Basic a = ruleConcurrentHashMap.get("a");
Basic b = ruleConcurrentHashMap.get("b");
Basic c = ruleConcurrentHashMap.get("c");
a.execution();
b.execution();
c.execution();
TreadConstant.remove();
}
}

View File

@ -0,0 +1,26 @@
package com.etl.data.unit.domain;/**
* @ClassName DataModel
* @Description
* @Author YunFei Du
* @Date 2024/05/13 14:55
*/
import lombok.Data;
/**
*DataModel
*
* YunFei Du
*2024/05/13 14:55
*/
@Data
public class DataModel {
private String key;
private Object value;
private String sourceType;
private String processType;
private Class<?> processClass;
}

View File

@ -0,0 +1,33 @@
package com.etl.data.unit.domain;/**
* @ClassName TreadConstant
* @Description
* @Author YunFei Du
* @Date 2024/05/13 14:58
*/
import com.etl.data.unit.domain.DataModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
*TreadConstant
*
* YunFei Du
*2024/05/13 14:58
*/
public class TreadConstant {
private static ThreadLocal<DataModel> threadLocal= new ThreadLocal<>();
public static DataModel get(){
return threadLocal.get();
}
public static void set(DataModel dataModel){
threadLocal.set(dataModel);
}
public static void remove(){
threadLocal.remove();
}
}

View File

@ -0,0 +1,11 @@
package com.etl.data.unit.service;
/**
* @ClassName Basic
* @Description
* @Author YunFei Du
* @Date 2024/05/13 15:11
*/
public interface Basic {
public void execution();
}

View File

@ -0,0 +1,10 @@
package com.etl.rule.engine.action;
/**
* @Author: YunFei.Du
* @date: 2024/5/6
* @Description:
* @Version: 1.0
*/
public class ActionDiscard extends RuntimeException{
}

View File

@ -20,6 +20,7 @@ public class DataModelContext implements ScopeContext <DataProcessModel>{
this.recordContext = recordContext; this.recordContext = recordContext;
} }
@Override @Override
public DataProcessModel get () { public DataProcessModel get () {
return THREAD_LOCAL.get(); return THREAD_LOCAL.get();

View File

@ -5,10 +5,9 @@ import com.etl.rule.engine.model.DataSetModel;
import com.etl.rule.engine.scope.model.DataSetProcessModel; import com.etl.rule.engine.scope.model.DataSetProcessModel;
/** /**
* @Author: YunFei.Du *
* @date: 2024/5/6 * @author YunFei.Du
* @Description: * @date 8:52 2024/5/15
* @Version: 1.0
*/ */
public abstract class DataSetEngine implements Engine<DataSetProcessModel> { public abstract class DataSetEngine implements Engine<DataSetProcessModel> {
private DataSetContext dataSetContext; private DataSetContext dataSetContext;

View File

@ -3,10 +3,9 @@ package com.etl.rule.engine.scope;
import com.etl.rule.engine.scope.model.RecordProcessModel; import com.etl.rule.engine.scope.model.RecordProcessModel;
/** /**
* @Author: YunFei.Du * /
* @date: 2024/4/29 * @author YunFei.Du
* @Description: / * @date 8:50 2024/5/15
* @Version: 1.0
*/ */
public class RecordContext implements ScopeContext<RecordProcessModel>{ public class RecordContext implements ScopeContext<RecordProcessModel>{

View File

@ -39,10 +39,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where> </where>
</select> </select>
<select id="selectEngineMaintenanceById" parameterType="Long" resultMap="EngineMaintenanceResult">
<include refid="selectEngineMaintenanceVo"/>
where id = #{id}
</select>
<insert id="insertEngineMaintenance" parameterType="com.etl.rule.engine.domain.EngineMaintenance" useGeneratedKeys="true" keyProperty="id"> <insert id="insertEngineMaintenance" parameterType="com.etl.rule.engine.domain.EngineMaintenance" useGeneratedKeys="true" keyProperty="id">
insert into engine_maintenance insert into engine_maintenance

View File

@ -1,152 +0,0 @@
package com.etl.rule.engine.domain;
import com.etl.common.core.annotation.Excel;
import com.etl.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* engine_maintenance
*
* @author ruoyi
* @date 2024-05-02
*/
public class EngineMaintenance extends BaseEntity {
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 规则引擎名称 */
@Excel(name = "规则引擎名称")
private String name;
/** 规则引擎类型 */
@Excel(name = "规则引擎类型")
private String type;
/** 规则引擎激活状态 */
@Excel(name = "规则引擎激活状态")
private String isActivate;
/** 规则引擎状态 */
@Excel(name = "规则引擎状态")
private String status;
/** 规则引擎描述 */
@Excel(name = "规则引擎描述")
private String description;
/** 规则引擎编码 */
@Excel(name = "规则引擎编码")
private String code;
/** 规则引擎级别 */
@Excel(name = "规则引擎级别")
private String level;
/** 编辑代码文本 */
@Excel(name = "编辑代码文本")
private String codeText;
public String getCodeText() {
return codeText;
}
public void setCodeText(String codeText) {
this.codeText = codeText;
}
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setType(String type)
{
this.type = type;
}
public String getType()
{
return type;
}
public void setIsActivate(String isActivate)
{
this.isActivate = isActivate;
}
public String getIsActivate()
{
return isActivate;
}
public void setStatus(String status)
{
this.status = status;
}
public String getStatus()
{
return status;
}
public void setDescription(String description)
{
this.description = description;
}
public String getDescription()
{
return description;
}
public void setCode(String code)
{
this.code = code;
}
public String getCode()
{
return code;
}
public void setLevel(String level)
{
this.level = level;
}
public String getLevel()
{
return level;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("name", getName())
.append("type", getType())
.append("isActivate", getIsActivate())
.append("status", getStatus())
.append("description", getDescription())
.append("code", getCode())
.append("level", getLevel())
.append("codeText", getCodeText())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -1,62 +0,0 @@
package com.etl.rule.engine.mapper;
import com.etl.rule.engine.domain.EngineMaintenance;
import java.util.List;
/**
* Mapper
*
* @author ruoyi
* @date 2024-05-02
*/
public interface EngineMaintenanceMapper
{
/**
*
*
* @param id
* @return
*/
public EngineMaintenance selectEngineMaintenanceById(Long id);
/**
*
*
* @param engineMaintenance
* @return
*/
public List<EngineMaintenance> selectEngineMaintenanceList(EngineMaintenance engineMaintenance);
/**
*
*
* @param engineMaintenance
* @return
*/
public int insertEngineMaintenance(EngineMaintenance engineMaintenance);
/**
*
*
* @param engineMaintenance
* @return
*/
public int updateEngineMaintenance(EngineMaintenance engineMaintenance);
/**
*
*
* @param id
* @return
*/
public int deleteEngineMaintenanceById(Long id);
/**
*
*
* @param ids
* @return
*/
public int deleteEngineMaintenanceByIds(Long[] ids);
}

View File

@ -1,70 +0,0 @@
package com.etl.rule.engine.service;
import com.etl.common.core.domain.Result;
import com.etl.rule.engine.domain.EngineMaintenance;
import java.util.List;
/**
* Service
*
* @author ruoyi
* @date 2024-05-02
*/
public interface IEngineMaintenanceService
{
/**
*
*
* @param id
* @return
*/
public EngineMaintenance selectEngineMaintenanceById(Long id);
/**
*
*
* @param engineMaintenance
* @return
*/
public List<EngineMaintenance> selectEngineMaintenanceList(EngineMaintenance engineMaintenance);
/**
*
*
* @param engineMaintenance
* @return
*/
public int insertEngineMaintenance(EngineMaintenance engineMaintenance);
/**
*
*
* @param engineMaintenance
* @return
*/
public int updateEngineMaintenance(EngineMaintenance engineMaintenance);
/**
*
*
* @param ids
* @return
*/
public int deleteEngineMaintenanceByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
public int deleteEngineMaintenanceById(Long id);
/**
*
*/
Result initializeRuleEngine(EngineMaintenance engineMaintenance);
Result testMethod(String code);
}