feat: 执行器runner基本搭建完成
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
package com.metis.domain.bo;
|
package com.metis.domain.bo;
|
||||||
|
|
||||||
import com.metis.enums.YesOrNoEnum;
|
import com.metis.enums.YesOrNoEnum;
|
||||||
import com.metis.flow.domain.entity.Graph;
|
import com.metis.flow.domain.bo.Graph;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package com.metis.facade;
|
|||||||
|
|
||||||
import com.metis.domain.bo.ProcessBo;
|
import com.metis.domain.bo.ProcessBo;
|
||||||
import com.metis.flow.domain.entity.App;
|
import com.metis.flow.domain.entity.App;
|
||||||
import com.metis.flow.domain.entity.CreateApp;
|
import com.metis.flow.domain.bo.CreateApp;
|
||||||
import com.metis.flow.domain.entity.UpdateApp;
|
import com.metis.flow.domain.bo.UpdateApp;
|
||||||
import com.metis.flow.engine.AppEngineService;
|
import com.metis.flow.engine.AppEngineService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package com.metis.flow.convert;
|
package com.metis.flow.convert;
|
||||||
|
|
||||||
import com.metis.flow.domain.entity.*;
|
import com.metis.flow.domain.entity.*;
|
||||||
|
import com.metis.flow.domain.bo.BuildApp;
|
||||||
|
import com.metis.flow.domain.bo.CreateApp;
|
||||||
|
import com.metis.flow.domain.bo.UpdateApp;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.Mapping;
|
import org.mapstruct.Mapping;
|
||||||
import org.mapstruct.Mappings;
|
import org.mapstruct.Mappings;
|
||||||
@@ -29,8 +32,8 @@ public interface BaseAppConvert {
|
|||||||
* @return {@link App }
|
* @return {@link App }
|
||||||
*/
|
*/
|
||||||
@Mappings({
|
@Mappings({
|
||||||
@Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.flow.domain.entity.Graph.class))"),
|
@Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.flow.domain.entity.bo.Graph.class))"),
|
||||||
@Mapping(target = "deploymentId", source = "id")
|
@Mapping(target = "workflowId", source = "id")
|
||||||
})
|
})
|
||||||
App toApp(BaseApp baseApp);
|
App toApp(BaseApp baseApp);
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.metis.flow.domain.entity;
|
package com.metis.flow.domain.bo;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.metis.flow.domain.entity;
|
package com.metis.flow.domain.bo;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.metis.flow.domain.entity;
|
package com.metis.flow.domain.bo;
|
||||||
|
|
||||||
import com.metis.flow.domain.entity.base.Edge;
|
import com.metis.flow.domain.entity.base.Edge;
|
||||||
import com.metis.flow.domain.entity.base.Node;
|
import com.metis.flow.domain.entity.base.Node;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.metis.flow.domain.entity;
|
package com.metis.flow.domain.bo;
|
||||||
|
|
||||||
import com.metis.enums.YesOrNoEnum;
|
import com.metis.enums.YesOrNoEnum;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.metis.flow.domain.context;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RunningContext {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统数据
|
||||||
|
*/
|
||||||
|
private SysContext sys;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义数据
|
||||||
|
*/
|
||||||
|
private JSONObject custom;
|
||||||
|
|
||||||
|
}
|
||||||
19
src/main/java/com/metis/flow/domain/context/SysContext.java
Normal file
19
src/main/java/com/metis/flow/domain/context/SysContext.java
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package com.metis.flow.domain.context;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SysContext {
|
||||||
|
|
||||||
|
private List<String> file;
|
||||||
|
|
||||||
|
private Long appId;
|
||||||
|
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
private Long workflowId;
|
||||||
|
|
||||||
|
private Long instanceId;
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ package com.metis.flow.domain.entity;
|
|||||||
|
|
||||||
|
|
||||||
import com.metis.enums.YesOrNoEnum;
|
import com.metis.enums.YesOrNoEnum;
|
||||||
|
import com.metis.flow.domain.bo.Graph;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -17,7 +18,7 @@ public class App {
|
|||||||
/**
|
/**
|
||||||
* 部署id
|
* 部署id
|
||||||
*/
|
*/
|
||||||
private Long deploymentId;
|
private Long workflowId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 名称
|
* 名称
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.metis.flow.domain.entity.base;
|
package com.metis.flow.domain.entity.base;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.metis.flow.enums.NodeType;
|
import com.metis.flow.enums.NodeType;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
@@ -8,9 +10,10 @@ import jakarta.validation.constraints.NotNull;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class Node<T> {
|
public class Node {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* id
|
* id
|
||||||
@@ -36,16 +39,23 @@ public class Node<T> {
|
|||||||
*/
|
*/
|
||||||
@Valid
|
@Valid
|
||||||
@NotNull(message = "节点业务数据不能为空")
|
@NotNull(message = "节点业务数据不能为空")
|
||||||
private NodeData<T> data;
|
private NodeData data;
|
||||||
|
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public Map<String, Handle> getHandleMap() {
|
public Map<String, Handle> getHandleMap() {
|
||||||
if (data == null || data.getHandles() == null) {
|
if (CollUtil.isEmpty(data.getHandles())) {
|
||||||
return Map.of();
|
return Map.of();
|
||||||
}
|
}
|
||||||
return data.getHandles().stream().collect(java.util.stream.Collectors.toMap(Handle::getId, handle -> handle));
|
return data.getHandles().stream().collect(Collectors.toMap(Handle::getId, handle -> handle));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public <T> T getConfig() {
|
||||||
|
if (ObjectUtil.isNull(data.getConfig())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return (T) data.getConfig().to(type.getConfigClass());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.metis.flow.domain.entity.base;
|
package com.metis.flow.domain.entity.base;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.metis.flow.enums.PositionType;
|
import com.metis.flow.enums.PositionType;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
@@ -9,7 +10,7 @@ import lombok.Data;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class NodeData<T> {
|
public class NodeData {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 标签
|
* 标签
|
||||||
@@ -29,7 +30,7 @@ public class NodeData<T> {
|
|||||||
/**
|
/**
|
||||||
* 配置
|
* 配置
|
||||||
*/
|
*/
|
||||||
private T config;
|
private JSONObject config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 句柄列表
|
* 句柄列表
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
package com.metis.flow.domain;
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.metis.flow.domain;
|
package com.metis.flow.domain.query;
|
||||||
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
package com.metis.flow.engine;
|
||||||
|
|
||||||
|
public interface AppEngineRunnerService {
|
||||||
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.metis.flow.engine;
|
package com.metis.flow.engine;
|
||||||
|
|
||||||
import com.metis.flow.domain.AppQuery;
|
import com.metis.flow.domain.query.AppQuery;
|
||||||
import com.metis.flow.domain.entity.App;
|
import com.metis.flow.domain.entity.App;
|
||||||
import com.metis.flow.domain.entity.CreateApp;
|
import com.metis.flow.domain.bo.CreateApp;
|
||||||
import com.metis.flow.domain.entity.UpdateApp;
|
import com.metis.flow.domain.bo.UpdateApp;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,10 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import com.metis.enums.YesOrNoEnum;
|
import com.metis.enums.YesOrNoEnum;
|
||||||
import com.metis.flow.constant.BaseConstant;
|
import com.metis.flow.constant.BaseConstant;
|
||||||
import com.metis.flow.convert.BaseAppConvert;
|
import com.metis.flow.convert.BaseAppConvert;
|
||||||
import com.metis.flow.domain.AppQuery;
|
import com.metis.flow.domain.bo.BuildApp;
|
||||||
|
import com.metis.flow.domain.bo.CreateApp;
|
||||||
|
import com.metis.flow.domain.bo.UpdateApp;
|
||||||
|
import com.metis.flow.domain.query.AppQuery;
|
||||||
import com.metis.flow.domain.entity.*;
|
import com.metis.flow.domain.entity.*;
|
||||||
import com.metis.flow.engine.AppEngineService;
|
import com.metis.flow.engine.AppEngineService;
|
||||||
import com.metis.flow.service.BaseAppService;
|
import com.metis.flow.service.BaseAppService;
|
||||||
@@ -109,7 +112,7 @@ public class AppEngineServiceImpl implements AppEngineService {
|
|||||||
private App creatApp(BaseApp baseApp, BuildApp buildApp) {
|
private App creatApp(BaseApp baseApp, BuildApp buildApp) {
|
||||||
App app = BaseAppConvert.INSTANCE.toApp(buildApp);
|
App app = BaseAppConvert.INSTANCE.toApp(buildApp);
|
||||||
app.setId(baseApp.getId());
|
app.setId(baseApp.getId());
|
||||||
app.setDeploymentId(baseApp.getId());
|
app.setWorkflowId(baseApp.getId());
|
||||||
app.setDefaultUse(baseApp.getDefaultUse());
|
app.setDefaultUse(baseApp.getDefaultUse());
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import java.util.Arrays;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum NodeType {
|
public enum NodeType {
|
||||||
|
|
||||||
START(1, "start", "开始"),
|
START(1, "start", "开始", Object.class),
|
||||||
END(2, "end", "结束"),
|
END(2, "end", "结束", Object.class),
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -24,6 +24,8 @@ public enum NodeType {
|
|||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
|
private final Class<?> configClass;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 枚举序列化器(前端传code时自动转换为对应枚举)
|
* 枚举序列化器(前端传code时自动转换为对应枚举)
|
||||||
|
|||||||
27
src/main/java/com/metis/flow/runner/NodeRunner.java
Normal file
27
src/main/java/com/metis/flow/runner/NodeRunner.java
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package com.metis.flow.runner;
|
||||||
|
|
||||||
|
import com.metis.flow.domain.context.RunningContext;
|
||||||
|
import com.metis.flow.domain.entity.base.Node;
|
||||||
|
import com.metis.flow.enums.NodeType;
|
||||||
|
|
||||||
|
public interface NodeRunner {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运行
|
||||||
|
*
|
||||||
|
* @param context 上下文
|
||||||
|
* @param node 节点配置信息
|
||||||
|
* @return {@link RunningContext }
|
||||||
|
*/
|
||||||
|
RunningContext run(RunningContext context, Node node);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取节点类型
|
||||||
|
*
|
||||||
|
* @return {@link NodeType }
|
||||||
|
*/
|
||||||
|
NodeType getType();
|
||||||
|
|
||||||
|
}
|
||||||
22
src/main/java/com/metis/flow/runner/RunnerInitialize.java
Normal file
22
src/main/java/com/metis/flow/runner/RunnerInitialize.java
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package com.metis.flow.runner;
|
||||||
|
|
||||||
|
import com.metis.flow.runner.factory.RunnerFactory;
|
||||||
|
import org.springframework.beans.BeansException;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.context.ApplicationContextAware;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class RunnerInitialize implements ApplicationContextAware {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||||
|
Map<String, NodeRunner> runnerMap = applicationContext.getBeansOfType(NodeRunner.class);
|
||||||
|
runnerMap.forEach((k, v) -> {
|
||||||
|
RunnerFactory.register(v);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package com.metis.flow.runner.factory;
|
||||||
|
|
||||||
|
import com.metis.flow.enums.NodeType;
|
||||||
|
import com.metis.flow.runner.NodeRunner;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
public class RunnerFactory {
|
||||||
|
|
||||||
|
private static final Map<NodeType, NodeRunner> MAP = new ConcurrentHashMap<>(8);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 注册
|
||||||
|
*
|
||||||
|
* @param runner 跑步者
|
||||||
|
*/
|
||||||
|
public static void register(NodeRunner runner) {
|
||||||
|
MAP.put(runner.getType(), runner);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到
|
||||||
|
*
|
||||||
|
* @param type 类型
|
||||||
|
* @return {@link NodeRunner }
|
||||||
|
*/
|
||||||
|
public static NodeRunner get(NodeType type) {
|
||||||
|
return MAP.get(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
25
src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java
Normal file
25
src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package com.metis.flow.runner.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import com.metis.flow.domain.context.RunningContext;
|
||||||
|
import com.metis.flow.domain.entity.base.Node;
|
||||||
|
import com.metis.flow.enums.NodeType;
|
||||||
|
import com.metis.flow.runner.NodeRunner;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class EndNodeRunner implements NodeRunner {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RunningContext run(RunningContext context, Node node) {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NodeType getType() {
|
||||||
|
return NodeType.END;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.metis.flow.runner.impl;
|
||||||
|
|
||||||
|
import com.metis.flow.domain.context.RunningContext;
|
||||||
|
import com.metis.flow.domain.entity.base.Node;
|
||||||
|
import com.metis.flow.enums.NodeType;
|
||||||
|
import com.metis.flow.runner.NodeRunner;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class StartNodeRunner implements NodeRunner {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RunningContext run(RunningContext context, Node node) {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NodeType getType() {
|
||||||
|
return NodeType.START;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.metis.flow.service;
|
package com.metis.flow.service;
|
||||||
|
|
||||||
import com.metis.enums.YesOrNoEnum;
|
import com.metis.enums.YesOrNoEnum;
|
||||||
import com.metis.flow.domain.AppQuery;
|
import com.metis.flow.domain.query.AppQuery;
|
||||||
import com.metis.flow.domain.entity.BaseApp;
|
import com.metis.flow.domain.entity.BaseApp;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.metis.enums.YesOrNoEnum;
|
import com.metis.enums.YesOrNoEnum;
|
||||||
import com.metis.flow.domain.AppQuery;
|
import com.metis.flow.domain.query.AppQuery;
|
||||||
import com.metis.flow.domain.entity.BaseApp;
|
import com.metis.flow.domain.entity.BaseApp;
|
||||||
import com.metis.flow.mapper.BaseAppMapper;
|
import com.metis.flow.mapper.BaseAppMapper;
|
||||||
import com.metis.flow.service.BaseAppService;
|
import com.metis.flow.service.BaseAppService;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package com.metis.flow.validator;
|
|||||||
import com.metis.flow.domain.entity.base.Node;
|
import com.metis.flow.domain.entity.base.Node;
|
||||||
import com.metis.flow.enums.NodeType;
|
import com.metis.flow.enums.NodeType;
|
||||||
|
|
||||||
public interface NodeValidator<T> {
|
public interface NodeValidator {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -12,7 +12,7 @@ public interface NodeValidator<T> {
|
|||||||
* @param node 节点
|
* @param node 节点
|
||||||
* @return {@link ValidatorResult }
|
* @return {@link ValidatorResult }
|
||||||
*/
|
*/
|
||||||
ValidatorResult validate(Node<T> node);
|
ValidatorResult validate(Node node);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.metis.flow.validator;
|
package com.metis.flow.validator;
|
||||||
|
|
||||||
import com.metis.flow.domain.entity.BuildApp;
|
import com.metis.flow.domain.bo.BuildApp;
|
||||||
|
|
||||||
public interface ValidatorService {
|
public interface ValidatorService {
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,11 @@ package com.metis.flow.validator.factory;
|
|||||||
|
|
||||||
import com.metis.flow.enums.EdgeType;
|
import com.metis.flow.enums.EdgeType;
|
||||||
import com.metis.flow.validator.EdgeValidator;
|
import com.metis.flow.validator.EdgeValidator;
|
||||||
import org.springframework.beans.BeansException;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.context.ApplicationContextAware;
|
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
public class EdgeValidatorFactory implements ApplicationContextAware {
|
public class EdgeValidatorFactory {
|
||||||
|
|
||||||
private static final Map<EdgeType, EdgeValidator> MAP = new ConcurrentHashMap<>(8);
|
private static final Map<EdgeType, EdgeValidator> MAP = new ConcurrentHashMap<>(8);
|
||||||
|
|
||||||
@@ -32,11 +29,4 @@ public class EdgeValidatorFactory implements ApplicationContextAware {
|
|||||||
return MAP.get(type);
|
return MAP.get(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
|
||||||
Map<String, EdgeValidator> validatorMap = applicationContext.getBeansOfType(EdgeValidator.class);
|
|
||||||
validatorMap.forEach((k, v) -> {
|
|
||||||
register(v);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package com.metis.flow.validator.impl;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.metis.flow.domain.entity.BuildApp;
|
import com.metis.flow.domain.bo.BuildApp;
|
||||||
import com.metis.flow.domain.entity.Graph;
|
import com.metis.flow.domain.bo.Graph;
|
||||||
import com.metis.flow.domain.entity.base.Edge;
|
import com.metis.flow.domain.entity.base.Edge;
|
||||||
import com.metis.flow.domain.entity.base.Node;
|
import com.metis.flow.domain.entity.base.Node;
|
||||||
import com.metis.flow.enums.EdgeType;
|
import com.metis.flow.enums.EdgeType;
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class EndNodeValidator implements NodeValidator<Object> {
|
public class EndNodeValidator implements NodeValidator {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ValidatorResult validate(Node<Object> node) {
|
public ValidatorResult validate(Node node) {
|
||||||
return ValidatorResult.valid();
|
return ValidatorResult.valid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class StartNodeValidator implements NodeValidator<Object> {
|
public class StartNodeValidator implements NodeValidator {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ValidatorResult validate(Node<Object> node) {
|
public ValidatorResult validate(Node node) {
|
||||||
return ValidatorResult.valid();
|
return ValidatorResult.valid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user