feat:新增作用域模型类
parent
e0fbb445a1
commit
db59d7edc8
|
@ -16,7 +16,7 @@ import org.apache.velocity.VelocityContext;
|
|||
/**
|
||||
* 模板处理工具类
|
||||
*
|
||||
* @author ruoyi
|
||||
* @author muyu
|
||||
*/
|
||||
public class VelocityUtils {
|
||||
/**
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
//
|
||||
// // quartz参数
|
||||
// Properties prop = new Properties();
|
||||
// prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler");
|
||||
// prop.put("org.quartz.scheduler.instanceName", "muyuScheduler");
|
||||
// prop.put("org.quartz.scheduler.instanceId", "AUTO");
|
||||
// // 线程池配置
|
||||
// prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
|
||||
|
@ -42,7 +42,7 @@
|
|||
// prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
|
||||
// factory.setQuartzProperties(prop);
|
||||
//
|
||||
// factory.setSchedulerName("RuoyiScheduler");
|
||||
// factory.setSchedulerName("muyuScheduler");
|
||||
// // 延时启动
|
||||
// factory.setStartupDelay(1);
|
||||
// factory.setApplicationContextSchedulerContextKey("applicationContextKey");
|
||||
|
|
|
@ -14,7 +14,7 @@ public class ConfigCodeConstants {
|
|||
/**
|
||||
* 文件基础路径
|
||||
*/
|
||||
public final static String BASE_FILE_PATH="D:/workspace/gtl-ruoyi-server/ruoyi-modules/ruoyi-rule_engine/ruoyi-rule_engine-server/src/main/java/com/ruoyi/ruleEngine/scope/";
|
||||
public final static String BASE_FILE_PATH="D:/workspace/gtl-muyu-server/muyu-modules/muyu-rule_engine/muyu-rule_engine-server/src/main/java/com/muyu/ruleEngine/scope/";
|
||||
/**
|
||||
* 配置文件名数组
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
package com.muyu.ruleEngine.context;
|
||||
|
||||
import com.muyu.ruleEngine.model.process.DataModelProcessModel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 数据模型上下文
|
||||
* @ClassName DataModelContextHolder
|
||||
* @Author 森静若林
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
public class DataModelContextHolder{
|
||||
|
||||
private static final ThreadLocal<DataModelProcessModel> THREAD_LOCAL=new ThreadLocal<>();
|
||||
|
||||
private RecordContextHolder recordContextHolder;
|
||||
|
||||
public static DataModelContextHolder build(RecordContextHolder recordContextHolder){
|
||||
return DataModelContextHolder.builder()
|
||||
.recordContextHolder(recordContextHolder)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static DataModelProcessModel get() {
|
||||
return THREAD_LOCAL.get();
|
||||
}
|
||||
|
||||
public static void set(DataModelProcessModel dataModelProcessModel) {
|
||||
THREAD_LOCAL.set(dataModelProcessModel);
|
||||
}
|
||||
|
||||
public static void remove() {
|
||||
THREAD_LOCAL.remove();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package com.muyu.ruleEngine.context;
|
||||
|
||||
import com.muyu.ruleEngine.model.process.DataSetProcessModel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 数据集上下文
|
||||
* @ClassName DataSetContextHolder
|
||||
* @Author 森静若林
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
public class DataSetContextHolder{
|
||||
|
||||
private static final ThreadLocal<DataSetProcessModel> THREAD_LOCAL=new ThreadLocal<>();
|
||||
|
||||
private TaskContextHolder taskContextHolder;
|
||||
|
||||
public static DataSetContextHolder build(TaskContextHolder taskContextHolder){
|
||||
return DataSetContextHolder.builder()
|
||||
.taskContextHolder(taskContextHolder)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static DataSetProcessModel get() {
|
||||
return THREAD_LOCAL.get();
|
||||
}
|
||||
|
||||
public static void set(DataSetProcessModel dataSetProcessModel) {
|
||||
THREAD_LOCAL.set(dataSetProcessModel);
|
||||
}
|
||||
|
||||
public static void remove() {
|
||||
THREAD_LOCAL.remove();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package com.muyu.ruleEngine.context;
|
||||
|
||||
import com.muyu.ruleEngine.model.process.RecordProcessModel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 记录上下文
|
||||
* @ClassName RecordContextHolder
|
||||
* @Author 森静若林
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
public class RecordContextHolder{
|
||||
|
||||
private static final ThreadLocal<RecordProcessModel> THREAD_LOCAL=new ThreadLocal<>();
|
||||
|
||||
private DataSetContextHolder dataSetContextHolder;
|
||||
|
||||
public static RecordContextHolder build(DataSetContextHolder dataSetContextHolder){
|
||||
return RecordContextHolder.builder()
|
||||
.dataSetContextHolder(dataSetContextHolder)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static RecordProcessModel get() {
|
||||
return THREAD_LOCAL.get();
|
||||
}
|
||||
|
||||
public static void set(RecordProcessModel recordProcessModel) {
|
||||
THREAD_LOCAL.set(recordProcessModel);
|
||||
}
|
||||
|
||||
public static void remove() {
|
||||
THREAD_LOCAL.remove();
|
||||
}
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
package com.muyu.ruleEngine.scope;
|
||||
package com.muyu.ruleEngine.context;
|
||||
|
||||
/**
|
||||
* 任务上下文
|
||||
* @ClassName TaskContextHolder
|
||||
* @Author hufangming
|
||||
* @Version: 1.0
|
||||
*
|
||||
*/
|
||||
public class TaskContextHolder {
|
||||
|
|
@ -46,16 +46,47 @@ public class EngineConfig extends BaseEntity {
|
|||
@ApiModelProperty(name = "版本编码", value = "版本编码", required = true)
|
||||
private String versionCode;
|
||||
|
||||
/** 版本编码 */
|
||||
@Excel(name = "版本类名")
|
||||
@ApiModelProperty(name = "版本类名", value = "版本类名", required = true)
|
||||
private String versionClass;
|
||||
|
||||
/** 版本编码 */
|
||||
@Excel(name = "版本名称")
|
||||
@ApiModelProperty(name = "版本名称", value = "版本名称", required = true)
|
||||
private String name;
|
||||
|
||||
|
||||
/** 规则内容 */
|
||||
@Excel(name = "规则内容")
|
||||
@ApiModelProperty(name = "规则内容", value = "规则内容", required = true)
|
||||
private String ruleContent;
|
||||
|
||||
/** 是否激活 ‘Y’(已激活)‘N’未激活 */
|
||||
@Excel(name = "是否激活")
|
||||
@ApiModelProperty(name = "是否激活", value = "是否激活", required = true)
|
||||
private String isActivate;
|
||||
|
||||
/** "测试状态 (字典表 1(测试通过)/0(测试失败)/-1(未测试)默认-1) */
|
||||
@Excel(name = "测试状态")
|
||||
@ApiModelProperty(name = "测试状态", value = "测试状态", required = true)
|
||||
private Long testStatus;
|
||||
|
||||
/** "测试状态 (字典表 1(测试通过)/0(测试失败)/-1(未测试)默认-1) */
|
||||
@Excel(name = "状态")
|
||||
@ApiModelProperty(name = "状态", value = "状态", required = true)
|
||||
private Long status;
|
||||
/** 引擎维护编号 */
|
||||
@Excel(name = "引擎维护编号")
|
||||
@ApiModelProperty(name = "引擎维护编号", value = "引擎维护编号", required = true)
|
||||
private Long engineMaintenanceId;
|
||||
|
||||
/** 版本描述 */
|
||||
@Excel(name = "版本描述")
|
||||
@ApiModelProperty(name = "版本描述", value = "版本描述", required = true)
|
||||
private String description;
|
||||
|
||||
|
||||
/**
|
||||
* 查询构造器
|
||||
*/
|
||||
|
@ -64,6 +95,11 @@ public class EngineConfig extends BaseEntity {
|
|||
.versionCode(engineConfigQueryReq.getVersionCode())
|
||||
.ruleContent(engineConfigQueryReq.getRuleContent())
|
||||
.engineMaintenanceId(engineConfigQueryReq.getEngineMaintenanceId())
|
||||
.isActivate(engineConfigQueryReq.getIsActivate())
|
||||
.versionClass(engineConfigQueryReq.getVersionClass())
|
||||
.name(engineConfigQueryReq.getName())
|
||||
.testStatus(engineConfigQueryReq.getTestStatus())
|
||||
.status(engineConfigQueryReq.getStatus())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
@ -75,6 +111,11 @@ public class EngineConfig extends BaseEntity {
|
|||
.versionCode(engineConfigSaveReq.getVersionCode())
|
||||
.ruleContent(engineConfigSaveReq.getRuleContent())
|
||||
.engineMaintenanceId(engineConfigSaveReq.getEngineMaintenanceId())
|
||||
.isActivate(engineConfigSaveReq.getIsActivate())
|
||||
.versionClass(engineConfigSaveReq.getVersionClass())
|
||||
.name(engineConfigSaveReq.getName())
|
||||
.testStatus(engineConfigSaveReq.getTestStatus())
|
||||
.status(engineConfigSaveReq.getStatus())
|
||||
.remark(engineConfigSaveReq.getRemark())
|
||||
.createBy(createBy.get())
|
||||
.createTime(new Date())
|
||||
|
@ -90,6 +131,11 @@ public class EngineConfig extends BaseEntity {
|
|||
.versionCode(engineConfigEditReq.getVersionCode())
|
||||
.ruleContent(engineConfigEditReq.getRuleContent())
|
||||
.engineMaintenanceId(engineConfigEditReq.getEngineMaintenanceId())
|
||||
.isActivate(engineConfigEditReq.getIsActivate())
|
||||
.versionClass(engineConfigEditReq.getVersionClass())
|
||||
.name(engineConfigEditReq.getName())
|
||||
.testStatus(engineConfigEditReq.getTestStatus())
|
||||
.status(engineConfigEditReq.getStatus())
|
||||
.remark(engineConfigEditReq.getRemark())
|
||||
.updateBy(updateBy.get())
|
||||
.updateTime(new Date())
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.muyu.ruleEngine.domain.req;
|
||||
|
||||
import com.muyu.common.core.annotation.Excel;
|
||||
import com.muyu.common.core.web.domain.BaseEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
@ -35,4 +36,27 @@ public class EngineConfigEditReq extends BaseEntity {
|
|||
/** 引擎维护编号 */
|
||||
@ApiModelProperty(name = "引擎维护编号", value = "引擎维护编号", required = true)
|
||||
private Long engineMaintenanceId;
|
||||
/** 版本编码 */
|
||||
@ApiModelProperty(name = "版本类名", value = "版本类名", required = true)
|
||||
private String versionClass;
|
||||
|
||||
/** 版本编码 */
|
||||
@ApiModelProperty(name = "版本名称", value = "版本名称", required = true)
|
||||
private String name;
|
||||
|
||||
/** 是否激活 ‘Y’(已激活)‘N’未激活 */
|
||||
@ApiModelProperty(name = "是否激活", value = "是否激活", required = true)
|
||||
private String isActivate;
|
||||
|
||||
/** "测试状态 (字典表 1(测试通过)/0(测试失败)/-1(未测试)默认-1) */
|
||||
@ApiModelProperty(name = "测试状态", value = "测试状态", required = true)
|
||||
private Long testStatus;
|
||||
|
||||
/** "测试状态 (字典表 1(测试通过)/0(测试失败)/-1(未测试)默认-1) */
|
||||
@ApiModelProperty(name = "状态", value = "状态", required = true)
|
||||
private Long status;
|
||||
|
||||
/** 版本描述 */
|
||||
@ApiModelProperty(name = "版本描述", value = "版本描述", required = true)
|
||||
private String description;
|
||||
}
|
||||
|
|
|
@ -35,4 +35,29 @@ public class EngineConfigQueryReq extends BaseEntity {
|
|||
/** 引擎维护编号 */
|
||||
@ApiModelProperty(name = "引擎维护编号", value = "引擎维护编号")
|
||||
private Long engineMaintenanceId;
|
||||
|
||||
|
||||
/** 版本编码 */
|
||||
@ApiModelProperty(name = "版本类名", value = "版本类名", required = true)
|
||||
private String versionClass;
|
||||
|
||||
/** 版本编码 */
|
||||
@ApiModelProperty(name = "版本名称", value = "版本名称", required = true)
|
||||
private String name;
|
||||
|
||||
/** 是否激活 ‘Y’(已激活)‘N’未激活 */
|
||||
@ApiModelProperty(name = "是否激活", value = "是否激活", required = true)
|
||||
private String isActivate;
|
||||
|
||||
/** "测试状态 (字典表 1(测试通过)/0(测试失败)/-1(未测试)默认-1) */
|
||||
@ApiModelProperty(name = "测试状态", value = "测试状态", required = true)
|
||||
private Long testStatus;
|
||||
|
||||
/** "测试状态 (字典表 1(测试通过)/0(测试失败)/-1(未测试)默认-1) */
|
||||
@ApiModelProperty(name = "状态", value = "状态", required = true)
|
||||
private Long status;
|
||||
|
||||
/** 版本描述 */
|
||||
@ApiModelProperty(name = "版本描述", value = "版本描述", required = true)
|
||||
private String description;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.muyu.ruleEngine.domain.req;
|
||||
|
||||
import com.muyu.common.core.annotation.Excel;
|
||||
import com.muyu.common.core.web.domain.BaseEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
@ -44,4 +45,29 @@ public class EngineConfigSaveReq extends BaseEntity {
|
|||
@ApiModelProperty(name = "引擎维护编号", value = "引擎维护编号", required = true)
|
||||
private Long engineMaintenanceId;
|
||||
|
||||
|
||||
/** 版本编码 */
|
||||
@ApiModelProperty(name = "版本类名", value = "版本类名", required = true)
|
||||
private String versionClass;
|
||||
|
||||
/** 版本编码 */
|
||||
@ApiModelProperty(name = "版本名称", value = "版本名称", required = true)
|
||||
private String name;
|
||||
|
||||
/** 是否激活 ‘Y’(已激活)‘N’未激活 */
|
||||
@ApiModelProperty(name = "是否激活", value = "是否激活", required = true)
|
||||
private String isActivate;
|
||||
|
||||
/** "测试状态 (字典表 1(测试通过)/0(测试失败)/-1(未测试)默认-1) */
|
||||
@ApiModelProperty(name = "测试状态", value = "测试状态", required = true)
|
||||
private Long testStatus;
|
||||
|
||||
/** "测试状态 (字典表 1(测试通过)/0(测试失败)/-1(未测试)默认-1) */
|
||||
@ApiModelProperty(name = "状态", value = "状态", required = true)
|
||||
private Long status;
|
||||
|
||||
/** 版本描述 */
|
||||
@ApiModelProperty(name = "版本描述", value = "版本描述", required = true)
|
||||
private String description;
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package com.muyu.ruleEngine.domain.req;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 引擎版本
|
||||
*
|
||||
* @author HuFangMing
|
||||
* @ClassName: VersionClassCreateReq
|
||||
* @createTime: 2024/5/7 16:34
|
||||
*/
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@SuperBuilder
|
||||
@ApiModel(value = "VersionClassCreateReq", description = "引擎版本")
|
||||
public class VersionClassCreateReq {
|
||||
private String engineCode;
|
||||
private String versionCode;
|
||||
private String scope;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package com.muyu.ruleEngine.domain.resp;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 引擎版本结果集
|
||||
*
|
||||
* @author HuFangMing
|
||||
* @ClassName: VersionClassCreateResp
|
||||
* @createTime: 2024/5/7 17:22
|
||||
*/
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@SuperBuilder
|
||||
public class VersionClassCreateResp {
|
||||
private String versionClass;
|
||||
private String ruleContent;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package com.muyu.ruleEngine.engine;
|
||||
|
||||
/**
|
||||
* 引擎
|
||||
* @ClassName Engine
|
||||
* @Author: 森静若林
|
||||
* @Date: 2024/5/6 13:48
|
||||
*/
|
||||
public interface Engine<V> {
|
||||
|
||||
public void execution();
|
||||
|
||||
public V get();
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package com.muyu.ruleEngine.engine.action;
|
||||
|
||||
/**
|
||||
* 丢弃动作
|
||||
* @ClassName ActionDiscard
|
||||
* @Author: 森静若林
|
||||
* @Date: 2024/5/6 13:48
|
||||
*/
|
||||
public class ActionDiscard extends RuntimeException{
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.muyu.ruleEngine.engine.custom;
|
||||
|
||||
import com.muyu.ruleEngine.engine.action.ActionDiscard;
|
||||
import com.muyu.ruleEngine.engine.scope.DataModelEngine;
|
||||
|
||||
/**
|
||||
* 不为空自定义引擎
|
||||
* @ClassName IsNotNullEngineCustom
|
||||
* @Author: 森静若林
|
||||
* @Date: 2024/5/6 13:48
|
||||
*/
|
||||
public class IsNotNullEngineCustom extends DataModelEngine {
|
||||
@Override
|
||||
public void execution () {
|
||||
Object value = getValue();
|
||||
|
||||
if (value == null || "".equals(value) || "null".equals(value)) {
|
||||
throw new ActionDiscard();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package com.muyu.ruleEngine.engine.scope;
|
||||
|
||||
import com.muyu.ruleEngine.engine.Engine;
|
||||
import com.muyu.ruleEngine.model.DataModel;
|
||||
import com.muyu.ruleEngine.model.process.DataModelProcessModel;
|
||||
import com.muyu.ruleEngine.context.DataModelContextHolder;
|
||||
|
||||
/**
|
||||
* 数据模型引擎
|
||||
* @ClassName DataModelEngine
|
||||
* @Author: 森静若林
|
||||
* @Date: 2024/5/6 13:48
|
||||
*/
|
||||
public abstract class DataModelEngine implements Engine<DataModelProcessModel> {
|
||||
|
||||
@Override
|
||||
public DataModelProcessModel get (){
|
||||
return DataModelContextHolder.get();
|
||||
}
|
||||
|
||||
public DataModel getModel(){
|
||||
return get().getDataModel();
|
||||
}
|
||||
|
||||
|
||||
public String getKey () {
|
||||
return getModel().getKey();
|
||||
}
|
||||
|
||||
public Object getValue () {
|
||||
return getModel().getValue();
|
||||
}
|
||||
|
||||
public String getSourceType () {
|
||||
return getModel().getSourceType();
|
||||
}
|
||||
|
||||
public String getProcessType () {
|
||||
return getModel().getProcessType();
|
||||
}
|
||||
|
||||
public Class<?> getProcessClass () {
|
||||
return getModel().getProcessClass();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package com.muyu.ruleEngine.engine.scope;
|
||||
|
||||
import com.muyu.ruleEngine.context.DataSetContextHolder;
|
||||
import com.muyu.ruleEngine.engine.Engine;
|
||||
import com.muyu.ruleEngine.model.DataSetModel;
|
||||
import com.muyu.ruleEngine.model.RecordModel;
|
||||
import com.muyu.ruleEngine.model.process.DataSetProcessModel;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 数据集引擎
|
||||
* @ClassName DataSetEngine
|
||||
* @Author: 森静若林
|
||||
* @Date: 2024/5/6 13:48
|
||||
*/
|
||||
public abstract class DataSetEngine implements Engine<DataSetProcessModel> {
|
||||
|
||||
@Override
|
||||
public DataSetProcessModel get (){
|
||||
return DataSetContextHolder.get();
|
||||
}
|
||||
|
||||
public DataSetModel getModel(){
|
||||
return get().getDataSetModel();
|
||||
}
|
||||
|
||||
public List<RecordModel> getRecordModels () {
|
||||
return getModel().getRecordModels();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package com.muyu.ruleEngine.engine.scope;
|
||||
|
||||
import com.muyu.ruleEngine.context.RecordContextHolder;
|
||||
import com.muyu.ruleEngine.engine.Engine;
|
||||
import com.muyu.ruleEngine.model.DataModel;
|
||||
import com.muyu.ruleEngine.model.RecordModel;
|
||||
import com.muyu.ruleEngine.model.process.RecordProcessModel;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 记录引擎
|
||||
* @ClassName RecordEngine
|
||||
* @Author: 森静若林
|
||||
* @Date: 2024/5/6 13:48
|
||||
*/
|
||||
public abstract class RecordEngine implements Engine<RecordProcessModel> {
|
||||
|
||||
@Override
|
||||
public RecordProcessModel get (){
|
||||
return RecordContextHolder.get();
|
||||
}
|
||||
|
||||
public List<String> getKeys(){
|
||||
return get().getKeys();
|
||||
}
|
||||
|
||||
public RecordModel getModel(){
|
||||
return get().getRecordModel();
|
||||
}
|
||||
|
||||
public List<DataModel> getDataModels () {
|
||||
return getModel().getDataModels();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package com.muyu.ruleEngine.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 数据模型
|
||||
* @ClassName DataModel
|
||||
* @Author 森静若林
|
||||
* @Date 2024/5/5 18:48
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DataModel {
|
||||
/**
|
||||
* 键
|
||||
*/
|
||||
private String key;
|
||||
|
||||
/**
|
||||
* 值
|
||||
*/
|
||||
private Object value;
|
||||
|
||||
/**
|
||||
* 原标准
|
||||
*/
|
||||
private String sourceType;
|
||||
|
||||
/**
|
||||
* 处理标准
|
||||
*/
|
||||
private String processType;
|
||||
|
||||
/**
|
||||
* 处理类型
|
||||
*/
|
||||
private Class<?> processClass;
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.muyu.ruleEngine.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 数据集模型
|
||||
* @ClassName DataSetModel
|
||||
* @Author 森静若林
|
||||
* @Date 2024/5/5 18:48
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DataSetModel {
|
||||
|
||||
private List<RecordModel> recordModels;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package com.muyu.ruleEngine.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 记录模型
|
||||
* @ClassName RecordModel
|
||||
* @Author 森静若林
|
||||
* @Date 2024/5/5 18:48
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class RecordModel {
|
||||
|
||||
private List<DataModel> dataModels;
|
||||
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package com.muyu.ruleEngine.model.process;
|
||||
|
||||
import com.muyu.ruleEngine.model.DataModel;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 数据模型处理模型
|
||||
* @ClassName DataModelProcessModel
|
||||
* @Author 森静若林
|
||||
* @Date 2024/5/5 18:37
|
||||
*/
|
||||
@Data
|
||||
public class DataModelProcessModel {
|
||||
private DataModel dataModel;
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package com.muyu.ruleEngine.model.process;
|
||||
|
||||
import com.muyu.ruleEngine.model.DataSetModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 数据集处理模型
|
||||
* @ClassName DataSetProcessModel
|
||||
* @Author 森静若林
|
||||
* @Date 2024/5/5 18:37
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DataSetProcessModel {
|
||||
private DataSetModel dataSetModel;
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package com.muyu.ruleEngine.model.process;
|
||||
|
||||
import com.muyu.ruleEngine.model.RecordModel;
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 记录处理模型
|
||||
* @ClassName RecordProcessModel
|
||||
* @Author 森静若林
|
||||
* @Date 2024/5/5 18:37
|
||||
*/
|
||||
@Data
|
||||
public class RecordProcessModel {
|
||||
private List<String> keys;
|
||||
private RecordModel recordModel;
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package com.muyu.ruleEngine.util;
|
||||
|
||||
import com.muyu.ruleEngine.context.DataSetContextHolder;
|
||||
import com.muyu.ruleEngine.model.DataModel;
|
||||
import com.muyu.ruleEngine.model.DataSetModel;
|
||||
import com.muyu.ruleEngine.model.RecordModel;
|
||||
import com.muyu.ruleEngine.model.process.DataSetProcessModel;
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 作用域上下文工具
|
||||
* @ClassName ScopeContextHolderUtil
|
||||
* @Author 森静若林
|
||||
* @Date 2024/5/6 20:51
|
||||
*/
|
||||
|
||||
public class ScopeContextHolderUtil {
|
||||
|
||||
public static void setDataSetContextHolder(Connection connection){
|
||||
try {
|
||||
PreparedStatement preparedStatement = connection.prepareStatement("select * from table_info limit 0,10");
|
||||
ResultSet resultSet = preparedStatement.executeQuery();
|
||||
List<RecordModel> recordModels=new ArrayList<>();
|
||||
while (resultSet.next()){
|
||||
int index=1;
|
||||
ResultSetMetaData data = resultSet.getMetaData();
|
||||
int columnCount = data.getColumnCount();
|
||||
List<DataModel> dataModels=new ArrayList<>();
|
||||
while (index<=columnCount){
|
||||
DataModel dataModel = DataModel.builder()
|
||||
.key(data.getColumnName(index))
|
||||
.value(resultSet.getString(index))
|
||||
.sourceType(data.getColumnTypeName(index))
|
||||
.processType(data.getColumnClassName(index))
|
||||
.processClass(Class.forName(data.getColumnClassName(index)))
|
||||
.build();
|
||||
dataModels.add(dataModel);
|
||||
index++;
|
||||
}
|
||||
RecordModel recordModel = new RecordModel(dataModels);
|
||||
recordModels.add(recordModel);
|
||||
}
|
||||
connection.close();
|
||||
DataSetModel dataSetModel = new DataSetModel(recordModels);
|
||||
DataSetProcessModel dataSetProcessModel = new DataSetProcessModel(dataSetModel);
|
||||
//存入本地线程
|
||||
DataSetContextHolder.set(dataSetProcessModel);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -11,7 +11,9 @@ import com.muyu.ruleEngine.domain.model.TestData;
|
|||
import com.muyu.ruleEngine.domain.req.EngineConfigEditReq;
|
||||
import com.muyu.ruleEngine.domain.req.EngineConfigQueryReq;
|
||||
import com.muyu.ruleEngine.domain.req.EngineConfigSaveReq;
|
||||
import com.muyu.ruleEngine.domain.req.VersionClassCreateReq;
|
||||
import com.muyu.ruleEngine.domain.resp.EngineConfigScopeResp;
|
||||
import com.muyu.ruleEngine.domain.resp.VersionClassCreateResp;
|
||||
import com.muyu.ruleEngine.service.EngineConfigService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
|
@ -115,4 +117,37 @@ public class EngineConfigController extends BaseController {
|
|||
return toAjax(engineConfigService.removeBatchByIds(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过引擎维护编号激活引擎
|
||||
*/
|
||||
@PutMapping("/activate/{id}")
|
||||
@RequiresPermissions("ruleEngine:config:activate")
|
||||
@Log(title = "激活引擎", businessType = BusinessType.UPDATE)
|
||||
public Result updateActivateStatus(@PathVariable Long id) {
|
||||
|
||||
engineConfigService.updateActivateStatus(id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过引擎维护编号关闭引擎
|
||||
*/
|
||||
@PutMapping("/close/{id}")
|
||||
@RequiresPermissions("ruleEngine:config:close")
|
||||
@Log(title = "关闭引擎" , businessType = BusinessType.UPDATE)
|
||||
public Result updateCloseStatus(@PathVariable Long id) {
|
||||
|
||||
engineConfigService.updateCloseStatus(id);
|
||||
return Result.success();
|
||||
}
|
||||
/**
|
||||
* 生成引擎版本类并返回规则模版
|
||||
*/
|
||||
@PostMapping("/createVersionClass")
|
||||
@RequiresPermissions("ruleEngine:config:createVersionClass")
|
||||
public Result<VersionClassCreateResp> createVersionClass(@RequestBody VersionClassCreateReq versionClassCreateReq) {
|
||||
return Result.success(engineConfigService.createVersionClass(versionClassCreateReq));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
package com.muyu.ruleEngine.scope;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 数据模型上下文
|
||||
* @ClassName DataModelContextHolder
|
||||
* @Author hufangming
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Data
|
||||
public class DataModelContextHolder {
|
||||
|
||||
private final RecordContextHolder recordContextHolder;
|
||||
|
||||
public static DataModelContextHolder build(RecordContextHolder recordContextHolder){
|
||||
return new DataModelContextHolder(recordContextHolder);
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package com.muyu.ruleEngine.scope;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 数据集上下文
|
||||
* @ClassName DataSetContextHolder
|
||||
* @Author hufangming
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Data
|
||||
public class DataSetContextHolder {
|
||||
|
||||
private final TaskContextHolder taskContextHolder;
|
||||
|
||||
public static DataSetContextHolder build(TaskContextHolder taskContextHolder){
|
||||
return new DataSetContextHolder(taskContextHolder);
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package com.muyu.ruleEngine.scope;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 记录上下文
|
||||
* @ClassName RecordContextHolder
|
||||
* @Author hufangming
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Data
|
||||
public class RecordContextHolder {
|
||||
|
||||
private final DataSetContextHolder dataSetContextHolder;
|
||||
|
||||
public static RecordContextHolder build(DataSetContextHolder dataSetContextHolder){
|
||||
return new RecordContextHolder(dataSetContextHolder);
|
||||
}
|
||||
}
|
|
@ -3,7 +3,9 @@ package com.muyu.ruleEngine.service;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.muyu.ruleEngine.domain.EngineConfig;
|
||||
import com.muyu.ruleEngine.domain.model.TestData;
|
||||
import com.muyu.ruleEngine.domain.req.VersionClassCreateReq;
|
||||
import com.muyu.ruleEngine.domain.resp.EngineConfigScopeResp;
|
||||
import com.muyu.ruleEngine.domain.resp.VersionClassCreateResp;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -40,4 +42,10 @@ public interface EngineConfigService extends IService<EngineConfig> {
|
|||
* @param testData 规则配置版本编号
|
||||
*/
|
||||
Object ruleTest(TestData testData);
|
||||
|
||||
void updateActivateStatus(Long id);
|
||||
|
||||
void updateCloseStatus(Long id);
|
||||
|
||||
VersionClassCreateResp createVersionClass(VersionClassCreateReq versionClassCreateReq);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.muyu.ruleEngine.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.muyu.common.core.exception.ServiceException;
|
||||
import com.muyu.common.core.utils.ObjUtils;
|
||||
|
@ -8,7 +10,9 @@ import com.muyu.ruleEngine.constant.ConfigCodeConstants;
|
|||
import com.muyu.ruleEngine.constant.RuleOperationConstants;
|
||||
import com.muyu.ruleEngine.domain.EngineConfig;
|
||||
import com.muyu.ruleEngine.domain.model.TestData;
|
||||
import com.muyu.ruleEngine.domain.req.VersionClassCreateReq;
|
||||
import com.muyu.ruleEngine.domain.resp.EngineConfigScopeResp;
|
||||
import com.muyu.ruleEngine.domain.resp.VersionClassCreateResp;
|
||||
import com.muyu.ruleEngine.dynamicLoad.DynamicLoader;
|
||||
import com.muyu.ruleEngine.mapper.EngineConfigMapper;
|
||||
import com.muyu.ruleEngine.service.EngineConfigService;
|
||||
|
@ -136,4 +140,27 @@ public class EngineConfigServiceImpl extends ServiceImpl<EngineConfigMapper, Eng
|
|||
return invoke;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateActivateStatus(Long id) {
|
||||
this.update(new UpdateWrapper<>(){{
|
||||
eq("engineMaintenanceId",id);
|
||||
set("isActivate", "Y");
|
||||
}});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCloseStatus(Long id) {
|
||||
this.update(new LambdaUpdateWrapper<>(){{
|
||||
eq(EngineConfig::getEngineMaintenanceId,id);
|
||||
set(EngineConfig::getIsActivate,"N");
|
||||
}});
|
||||
}
|
||||
|
||||
@Override
|
||||
public VersionClassCreateResp createVersionClass(VersionClassCreateReq versionClassCreateReq) {
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -79,8 +79,8 @@ public class EngineMaintenanceServiceImpl extends ServiceImpl<EngineMaintenanceM
|
|||
@Transactional
|
||||
public boolean saveEngineMaintenance(EngineMaintenance engineMaintenance) {
|
||||
boolean save = this.save(engineMaintenance);
|
||||
EngineConfigScopeResp scopeInfo = engineConfigService.getScopeInfoById(engineMaintenance.getScope());
|
||||
engineConfigService.save(EngineConfig.builder().versionCode("1.0").ruleContent(scopeInfo.getCode()).build());
|
||||
EngineConfigScopeResp scopeInfo = engineConfigService.getScopeInfoById(0);
|
||||
engineConfigService.save(EngineConfig.builder().versionCode("1.0").ruleContent(scopeInfo.getCode()).engineMaintenanceId(engineMaintenance.getId()).build());
|
||||
return save;
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
</appender>
|
||||
|
||||
<!-- 系统模块日志级别控制 -->
|
||||
<logger name="com.ruoyi" level="info"/>
|
||||
<logger name="com.muyu" level="info"/>
|
||||
<!-- Spring日志级别控制 -->
|
||||
<logger name="org.springframework" level="warn"/>
|
||||
|
||||
|
|
Loading…
Reference in New Issue