refactor(metis): 重构项目目录结构和包名, stater可以作为单独的包进行独立开发

This commit is contained in:
2025-04-21 23:49:20 +08:00
parent 7f4476ffd5
commit 65e6f9f650
80 changed files with 431 additions and 361 deletions

View File

@@ -23,8 +23,13 @@
<artifactId>metis-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
</dependencies>
<build>
<!-- 默认生效的插件 -->
@@ -39,39 +44,49 @@
</goals>
</execution>
</executions>
<!-- 排除静态编译类的插件,为打包的 jar 瘦身 -->
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
<exclude>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<!-- 编译插件 -->
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-compiler-plugin</artifactId>-->
<!-- <configuration>-->
<!-- <source>17</source>-->
<!-- <target>17</target>-->
<!-- <encoding>UTF-8</encoding>-->
<!-- <compilerArgs>-->
<!-- <arg>-parameters</arg>-->
<!-- </compilerArgs>-->
<!-- &lt;!&ndash; 注解静态编译功能 注:仅支持 maven-compiler-plugin 的 version 在3.6.0 以上才生效 &ndash;&gt;-->
<!-- <annotationProcessorPaths>-->
<!-- &lt;!&ndash; 必须配置 lombok 的注解编译,否则会因为配置了(mapstruct-processor)启动了导致 lombok 对内部类的静态编译失效 &ndash;&gt;-->
<!-- <path>-->
<!-- <groupId>org.mapstruct</groupId>-->
<!-- <artifactId>mapstruct-processor</artifactId>-->
<!-- <version>1.6.2</version>-->
<!-- </path>-->
<!-- <path>-->
<!-- <groupId>org.projectlombok</groupId>-->
<!-- <artifactId>lombok</artifactId>-->
<!-- <version>1.18.34</version>-->
<!-- </path>-->
<!-- <path>-->
<!-- <groupId>org.projectlombok</groupId>-->
<!-- <artifactId>lombok-mapstruct-binding</artifactId>-->
<!-- <version>0.2.0</version>-->
<!-- </path>-->
<!-- </annotationProcessorPaths>-->
<!-- </configuration>-->
<!-- </plugin>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
<compilerArgs>
<arg>-parameters</arg>
<arg>--add-opens</arg>
<arg>java.base/java.lang=ALL-UNNAMED</arg>
</compilerArgs>
<!-- 注解静态编译功能 注:仅支持 maven-compiler-plugin 的 version 在3.6.0 以上才生效 -->
<annotationProcessorPaths>
<!-- 必须配置 lombok 的注解编译,否则会因为配置了(mapstruct-processor)启动了导致 lombok 对内部类的静态编译失效 -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>

View File

@@ -1,10 +1,10 @@
package com.metisapp.controller;
import com.metis.flow.domain.bo.BuildApp;
import com.metis.flow.engine.AppFlowEngineRunnerService;
import com.metis.flow.runner.FlowRunningContext;
import com.metis.flow.runner.RunnerResult;
import com.metis.flow.validator.ValidatorService;
import com.metis.domain.bo.BuildApp;
import com.metis.engine.AppFlowEngineRunnerService;
import com.metis.runner.FlowRunningContext;
import com.metis.runner.RunnerResult;
import com.metis.validator.ValidatorService;
import com.metis.result.Result;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;

View File

@@ -34,10 +34,6 @@ springdoc:
swagger-ui:
tags-sorter: alpha
group-configs:
- group: bis
display-name: "业务接口文档"
paths-to-match: '/**'
packages-to-scan: org.shi9.module.bis
- group: system
display-name: "系统接口文档"
paths-to-match: '/**'

View File

@@ -11,13 +11,62 @@
<artifactId>metis-starter</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-mcp</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.52</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.mikesamuel</groupId>
<artifactId>json-sanitizer</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<!-- 类转换 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
</dependency>
</dependencies>
<build>
<!-- 默认生效的插件 -->
@@ -36,20 +85,15 @@
<!-- 注解静态编译功能 注:仅支持 maven-compiler-plugin 的 version 在3.6.0 以上才生效 -->
<annotationProcessorPaths>
<!-- 必须配置 lombok 的注解编译,否则会因为配置了(mapstruct-processor)启动了导致 lombok 对内部类的静态编译失效 -->
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.6.2</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>

View File

@@ -7,7 +7,13 @@ import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
@MapperScan(basePackages = {"com.metis.flow.mapper"})
@MapperScan(basePackages = {"com.metis.mapper"})
@ComponentScan("com.metis.*")
public class MetisStarterAutoConfiguration {
static {
}
}

View File

@@ -1,4 +1,4 @@
package com.metis.flow.constant;
package com.metis.constant;
public interface BaseConstant {

View File

@@ -1,8 +1,8 @@
package com.metisapp.controller;
package com.metis.controller;
import com.metis.domain.bo.ProcessBo;
import com.metis.facade.ProcessDefinitionFacade;
import com.metis.flow.domain.entity.App;
import com.metis.domain.entity.App;
import com.metis.result.Result;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

View File

@@ -1,9 +1,10 @@
package com.metis.flow.convert;
package com.metis.convert;
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 com.metis.domain.bo.BuildApp;
import com.metis.domain.bo.CreateApp;
import com.metis.domain.bo.UpdateApp;
import com.metis.domain.entity.App;
import com.metis.domain.entity.BaseApp;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
@@ -23,6 +24,13 @@ public interface BaseAppConvert {
* @param buildApp 基础应用
* @return {@link App }
*/
@Mappings({
@Mapping(target = "id", ignore = true),
@Mapping(target = "workflowId", ignore = true),
@Mapping(target = "createTime", ignore = true),
@Mapping(target = "version", ignore = true),
@Mapping(target = "defaultUse", ignore = true),
})
App toApp(BuildApp buildApp);
/**
@@ -32,7 +40,7 @@ public interface BaseAppConvert {
* @return {@link App }
*/
@Mappings({
@Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.flow.domain.entity.base.Graph.class))"),
@Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.domain.entity.base.Graph.class))"),
@Mapping(target = "workflowId", source = "id")
})
App toApp(BaseApp baseApp);
@@ -45,6 +53,12 @@ public interface BaseAppConvert {
*/
@Mappings({
@Mapping(target = "graphJson", expression = "java(com.alibaba.fastjson2.JSON.toJSONString(buildApp.getGraph()))"),
@Mapping(target = "createTime", ignore = true),
@Mapping(target = "updateTime", ignore = true),
@Mapping(target = "isDeleted", ignore = true),
@Mapping(target = "id", ignore = true),
@Mapping(target = "createUserId", ignore = true),
@Mapping(target = "defaultUse", ignore = true)
})
BaseApp toBaseApp(BuildApp buildApp);
@@ -63,7 +77,9 @@ public interface BaseAppConvert {
* @param createApp 创建应用程序
* @return {@link BuildApp }
*/
@Mappings({
@Mapping(target = "appId", ignore = true)
})
BuildApp toBuildApp(CreateApp createApp);
/**
@@ -72,6 +88,9 @@ public interface BaseAppConvert {
* @param updateApp 更新应用程序
* @return {@link BuildApp }
*/
@Mappings({
@Mapping(target = "userId", ignore = true)
})
BuildApp toBuildApp(UpdateApp updateApp);
}

View File

@@ -1,8 +1,8 @@
package com.metis.flow.convert;
package com.metis.convert;
import com.metis.flow.domain.bo.GraphBO;
import com.metis.flow.domain.entity.base.Graph;
import com.metis.domain.bo.GraphBO;
import com.metis.domain.entity.base.Graph;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

View File

@@ -1,6 +1,6 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import com.metis.flow.domain.entity.base.Graph;
import com.metis.domain.entity.base.Graph;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

View File

@@ -1,6 +1,6 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import com.metis.flow.domain.entity.base.Graph;
import com.metis.domain.entity.base.Graph;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

View File

@@ -1,6 +1,6 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import com.metis.flow.enums.EdgeType;
import com.metis.enums.EdgeType;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import com.metis.flow.enums.HandleType;
import com.metis.flow.enums.PositionType;
import com.metis.enums.HandleType;
import com.metis.enums.PositionType;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

View File

@@ -1,6 +1,6 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import com.metis.flow.enums.NodeType;
import com.metis.enums.NodeType;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import com.alibaba.fastjson2.JSONObject;
import com.metis.flow.enums.PositionType;
import com.metis.enums.PositionType;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.metis.domain.bo;
import com.metis.enums.YesOrNoEnum;
import com.metis.flow.domain.bo.GraphBO;
import com.metis.domain.bo.GraphBO;
import lombok.Data;
@Data

View File

@@ -1,7 +1,7 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import com.metis.enums.YesOrNoEnum;
import com.metis.flow.domain.entity.base.Graph;
import com.metis.domain.entity.base.Graph;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.bo;
package com.metis.domain.bo;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.domain.context;
package com.metis.domain.context;
import com.alibaba.fastjson2.JSONObject;
import com.metis.flow.runner.FlowRunningContext;
import com.metis.runner.FlowRunningContext;
import lombok.Builder;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.context;
package com.metis.domain.context;
import com.alibaba.fastjson2.JSONObject;
import lombok.Builder;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.context;
package com.metis.domain.context;
import lombok.Builder;
import lombok.Data;

View File

@@ -1,8 +1,8 @@
package com.metis.flow.domain.entity;
package com.metis.domain.entity;
import com.metis.enums.YesOrNoEnum;
import com.metis.flow.domain.entity.base.Graph;
import com.metis.domain.entity.base.Graph;
import lombok.Data;
import java.time.LocalDateTime;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.entity;
package com.metis.domain.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.domain.entity;
package com.metis.domain.entity;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Node;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Node;
import java.util.*;

View File

@@ -1,6 +1,6 @@
package com.metis.flow.domain.entity.base;
package com.metis.domain.entity.base;
import com.metis.flow.enums.EdgeType;
import com.metis.enums.EdgeType;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

View File

@@ -1,12 +1,16 @@
package com.metis.flow.domain.entity.base;
package com.metis.domain.entity.base;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Graph {
/**

View File

@@ -1,7 +1,7 @@
package com.metis.flow.domain.entity.base;
package com.metis.domain.entity.base;
import com.metis.flow.enums.HandleType;
import com.metis.flow.enums.PositionType;
import com.metis.enums.HandleType;
import com.metis.enums.PositionType;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.domain.entity.base;
package com.metis.domain.entity.base;
import cn.hutool.core.util.ObjectUtil;
import com.metis.flow.enums.NodeType;
import com.metis.enums.NodeType;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -54,8 +54,7 @@ public class Node {
*/
private Boolean selected;
private Class<?> configClass;
private transient Class<?> configClass;
/**

View File

@@ -0,0 +1,4 @@
package com.metis.domain.entity.base;
public abstract class NodeConfig {
}

View File

@@ -1,7 +1,7 @@
package com.metis.flow.domain.entity.base;
package com.metis.domain.entity.base;
import com.alibaba.fastjson2.JSONObject;
import com.metis.flow.enums.PositionType;
import com.metis.enums.PositionType;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;

View File

@@ -1,11 +1,11 @@
package com.metis.flow.domain.entity.base;
package com.metis.domain.entity.base;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.metis.flow.enums.FileUploadType;
import com.metis.flow.enums.NodeVariableType;
import com.metis.enums.FileUploadType;
import com.metis.enums.NodeVariableType;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.entity.base;
package com.metis.domain.entity.base;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.entity.base;
package com.metis.domain.entity.base;
import jakarta.validation.constraints.NotNull;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.entity.base;
package com.metis.domain.entity.base;
import lombok.Data;

View File

@@ -1,6 +1,6 @@
package com.metis.flow.domain.entity.config.node;
package com.metis.domain.entity.config.node;
import com.metis.flow.domain.entity.base.NodeConfig;
import com.metis.domain.entity.base.NodeConfig;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;

View File

@@ -1,6 +1,6 @@
package com.metis.flow.domain.entity.config.node;
package com.metis.domain.entity.config.node;
import com.metis.flow.domain.entity.base.NodeConfig;
import com.metis.domain.entity.base.NodeConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.domain.entity.config.node;
package com.metis.domain.entity.config.node;
import com.metis.flow.domain.entity.base.NodeConfig;
import com.metis.flow.domain.entity.base.NodeVariable;
import com.metis.domain.entity.base.NodeConfig;
import com.metis.domain.entity.base.NodeVariable;
import jakarta.validation.Valid;
import lombok.Data;
import lombok.EqualsAndHashCode;

View File

@@ -0,0 +1 @@
package com.metis.domain.entity.config;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.domain.query;
package com.metis.domain.query;
import lombok.Builder;
import lombok.Data;

View File

@@ -1,9 +1,10 @@
package com.metis.flow.engine;
package com.metis.engine;
import com.metis.flow.domain.query.AppQuery;
import com.metis.flow.domain.entity.App;
import com.metis.flow.domain.bo.CreateApp;
import com.metis.flow.domain.bo.UpdateApp;
import com.metis.domain.bo.CreateApp;
import com.metis.domain.bo.UpdateApp;
import com.metis.domain.entity.App;
import com.metis.domain.query.AppQuery;
import java.util.List;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.engine;
package com.metis.engine;
import com.metis.flow.runner.FlowRunningContext;
import com.metis.flow.runner.RunnerResult;
import com.metis.runner.FlowRunningContext;
import com.metis.runner.RunnerResult;
/**
* 应用引擎运行器服务

View File

@@ -1,19 +1,20 @@
package com.metis.flow.engine.impl;
package com.metis.engine.impl;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.metis.constant.BaseConstant;
import com.metis.convert.BaseAppConvert;
import com.metis.domain.bo.BuildApp;
import com.metis.domain.bo.CreateApp;
import com.metis.domain.bo.UpdateApp;
import com.metis.domain.entity.App;
import com.metis.domain.entity.BaseApp;
import com.metis.domain.query.AppQuery;
import com.metis.engine.AppEngineService;
import com.metis.enums.YesOrNoEnum;
import com.metis.flow.constant.BaseConstant;
import com.metis.flow.convert.BaseAppConvert;
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.engine.AppEngineService;
import com.metis.flow.service.BaseAppService;
import com.metis.flow.validator.ValidatorService;
import com.metis.service.BaseAppService;
import com.metis.validator.ValidatorService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

View File

@@ -1,24 +1,24 @@
package com.metis.flow.engine.impl;
package com.metis.engine.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.metis.flow.domain.context.RunningContext;
import com.metis.flow.domain.context.RunningResult;
import com.metis.flow.domain.context.SysContext;
import com.metis.flow.domain.entity.App;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Graph;
import com.metis.flow.domain.entity.base.Node;
import com.metis.flow.engine.AppEngineService;
import com.metis.flow.engine.AppFlowEngineRunnerService;
import com.metis.flow.enums.NodeType;
import com.metis.flow.runner.FlowRunningContext;
import com.metis.flow.runner.NodeRunner;
import com.metis.flow.runner.RunnerResult;
import com.metis.flow.runner.factory.NodeRunnerFactory;
import com.metis.domain.context.RunningContext;
import com.metis.domain.context.RunningResult;
import com.metis.domain.context.SysContext;
import com.metis.domain.entity.App;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Graph;
import com.metis.domain.entity.base.Node;
import com.metis.engine.AppEngineService;
import com.metis.engine.AppFlowEngineRunnerService;
import com.metis.enums.NodeType;
import com.metis.runner.FlowRunningContext;
import com.metis.runner.NodeRunner;
import com.metis.runner.RunnerResult;
import com.metis.runner.factory.NodeRunnerFactory;
import com.metis.utils.GenericInterfacesUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -39,6 +39,7 @@ public class AppFlowEngineRunnerServiceImpl implements AppFlowEngineRunnerServic
@Override
public RunnerResult running(FlowRunningContext context) {
App app = getApp(context);
Assert.isTrue(ObjectUtil.isNotNull(app), "app为空");
// todo 构建运行实例, 并将运行实例放入上下文
Long instanceId = IdUtil.getSnowflakeNextId();
// 构建系统上下文信息

View File

@@ -1,4 +1,4 @@
package com.metis.flow.enums;
package com.metis.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.enums;
package com.metis.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.enums;
package com.metis.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.enums;
package com.metis.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.enums;
package com.metis.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.enums;
package com.metis.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

View File

@@ -1,12 +1,12 @@
package com.metis.facade;
import com.metis.domain.bo.ProcessBo;
import com.metis.flow.convert.GraphConvert;
import com.metis.flow.domain.bo.CreateApp;
import com.metis.flow.domain.bo.UpdateApp;
import com.metis.flow.domain.entity.App;
import com.metis.flow.domain.entity.base.Graph;
import com.metis.flow.engine.AppEngineService;
import com.metis.convert.GraphConvert;
import com.metis.domain.bo.CreateApp;
import com.metis.domain.bo.UpdateApp;
import com.metis.domain.entity.App;
import com.metis.domain.entity.base.Graph;
import com.metis.engine.AppEngineService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +0,0 @@
package com.metis.flow.domain.entity.base;
public abstract class NodeConfig {
}

View File

@@ -1 +0,0 @@
package com.metis.flow.domain.entity.config;

View File

@@ -1,6 +1,6 @@
package com.metis.flow.mapper;
package com.metis.mapper;
import com.metis.flow.domain.entity.BaseApp;
import com.metis.domain.entity.BaseApp;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.runner;
package com.metis.runner;
import com.metis.flow.domain.entity.base.NodeConfig;
import com.metis.flow.enums.NodeType;
import com.metis.domain.entity.base.NodeConfig;
import com.metis.enums.NodeType;
/**
* 自定义节点运行器

View File

@@ -1,4 +1,4 @@
package com.metis.flow.runner;
package com.metis.runner;
import com.alibaba.fastjson2.JSONObject;
import lombok.AllArgsConstructor;

View File

@@ -1,11 +1,11 @@
package com.metis.flow.runner;
package com.metis.runner;
import com.metis.flow.domain.context.RunningContext;
import com.metis.flow.domain.context.RunningResult;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Node;
import com.metis.flow.domain.entity.base.NodeConfig;
import com.metis.flow.enums.NodeType;
import com.metis.domain.context.RunningContext;
import com.metis.domain.context.RunningResult;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Node;
import com.metis.domain.entity.base.NodeConfig;
import com.metis.enums.NodeType;
import java.util.List;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.runner;
package com.metis.runner;
import com.metis.flow.domain.context.SysContext;
import com.metis.domain.context.SysContext;
import lombok.Builder;
import lombok.Data;

View File

@@ -1,9 +1,9 @@
package com.metis.flow.runner.factory;
package com.metis.runner.factory;
import cn.hutool.core.lang.Assert;
import com.metis.flow.enums.NodeType;
import com.metis.flow.runner.CustomNodeRunner;
import com.metis.flow.runner.NodeRunner;
import com.metis.enums.NodeType;
import com.metis.runner.CustomNodeRunner;
import com.metis.runner.NodeRunner;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

View File

@@ -1,9 +1,9 @@
package com.metis.flow.runner.factory;
package com.metis.runner.factory;
import cn.hutool.core.lang.Assert;
import com.metis.flow.enums.NodeType;
import com.metis.flow.runner.CustomNodeRunner;
import com.metis.flow.runner.NodeRunner;
import com.metis.enums.NodeType;
import com.metis.runner.CustomNodeRunner;
import com.metis.runner.NodeRunner;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

View File

@@ -1,13 +1,13 @@
package com.metis.flow.runner.impl;
package com.metis.runner.impl;
import com.metis.flow.domain.context.RunningContext;
import com.metis.flow.domain.context.RunningResult;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Node;
import com.metis.flow.domain.entity.config.node.EndNodeConfig;
import com.metis.flow.enums.NodeType;
import com.metis.flow.runner.NodeRunner;
import com.metis.domain.context.RunningContext;
import com.metis.domain.context.RunningResult;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Node;
import com.metis.domain.entity.config.node.EndNodeConfig;
import com.metis.enums.NodeType;
import com.metis.runner.NodeRunner;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

View File

@@ -1,15 +1,15 @@
package com.metis.flow.runner.impl;
package com.metis.runner.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson2.JSONObject;
import com.metis.flow.domain.context.RunningContext;
import com.metis.flow.domain.context.RunningResult;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Node;
import com.metis.flow.domain.entity.base.NodeVariable;
import com.metis.flow.domain.entity.config.node.StartNodeConfig;
import com.metis.flow.enums.NodeType;
import com.metis.flow.runner.NodeRunner;
import com.metis.domain.context.RunningContext;
import com.metis.domain.context.RunningResult;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Node;
import com.metis.domain.entity.base.NodeVariable;
import com.metis.domain.entity.config.node.StartNodeConfig;
import com.metis.enums.NodeType;
import com.metis.runner.NodeRunner;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

View File

@@ -1,8 +1,8 @@
package com.metis.flow.service;
package com.metis.service;
import com.metis.enums.YesOrNoEnum;
import com.metis.flow.domain.query.AppQuery;
import com.metis.flow.domain.entity.BaseApp;
import com.metis.domain.query.AppQuery;
import com.metis.domain.entity.BaseApp;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.service.impl;
package com.metis.service.impl;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@@ -6,10 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.metis.enums.YesOrNoEnum;
import com.metis.flow.domain.query.AppQuery;
import com.metis.flow.domain.entity.BaseApp;
import com.metis.flow.mapper.BaseAppMapper;
import com.metis.flow.service.BaseAppService;
import com.metis.domain.query.AppQuery;
import com.metis.domain.entity.BaseApp;
import com.metis.mapper.BaseAppMapper;
import com.metis.service.BaseAppService;
import com.metis.utils.PageConditionUtil;
import org.springframework.stereotype.Service;

View File

@@ -1,7 +1,7 @@
package com.metis.flow.validator;
package com.metis.validator;
import com.metis.flow.domain.entity.base.NodeConfig;
import com.metis.flow.enums.NodeType;
import com.metis.domain.entity.base.NodeConfig;
import com.metis.enums.NodeType;
/**
* 自定义节点验证器

View File

@@ -1,7 +1,7 @@
package com.metis.flow.validator;
package com.metis.validator;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.enums.EdgeType;
import com.metis.domain.entity.base.Edge;
import com.metis.enums.EdgeType;
public interface EdgeValidator {

View File

@@ -1,9 +1,9 @@
package com.metis.flow.validator;
package com.metis.validator;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Node;
import com.metis.flow.domain.entity.base.NodeConfig;
import com.metis.flow.enums.NodeType;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Node;
import com.metis.domain.entity.base.NodeConfig;
import com.metis.enums.NodeType;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.validator;
package com.metis.validator;
import cn.hutool.core.collection.CollUtil;
import jakarta.validation.ConstraintViolation;

View File

@@ -1,4 +1,4 @@
package com.metis.flow.validator;
package com.metis.validator;
import lombok.Data;

View File

@@ -1,6 +1,6 @@
package com.metis.flow.validator;
package com.metis.validator;
import com.metis.flow.domain.bo.BuildApp;
import com.metis.domain.bo.BuildApp;
public interface ValidatorService {

View File

@@ -1,7 +1,7 @@
package com.metis.flow.validator.factory;
package com.metis.validator.factory;
import com.metis.flow.enums.EdgeType;
import com.metis.flow.validator.EdgeValidator;
import com.metis.enums.EdgeType;
import com.metis.validator.EdgeValidator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

View File

@@ -1,9 +1,9 @@
package com.metis.flow.validator.factory;
package com.metis.validator.factory;
import cn.hutool.core.lang.Assert;
import com.metis.flow.enums.NodeType;
import com.metis.flow.validator.CustomNodeValidator;
import com.metis.flow.validator.NodeValidator;
import com.metis.enums.NodeType;
import com.metis.validator.CustomNodeValidator;
import com.metis.validator.NodeValidator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

View File

@@ -1,11 +1,11 @@
package com.metis.flow.validator.factory;
package com.metis.validator.factory;
import cn.hutool.core.lang.Assert;
import com.metis.flow.enums.NodeType;
import com.metis.flow.validator.CustomNodeValidator;
import com.metis.flow.validator.EdgeValidator;
import com.metis.flow.validator.NodeValidator;
import com.metis.enums.NodeType;
import com.metis.validator.CustomNodeValidator;
import com.metis.validator.EdgeValidator;
import com.metis.validator.NodeValidator;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;

View File

@@ -1,18 +1,18 @@
package com.metis.flow.validator.impl;
package com.metis.validator.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.metis.flow.domain.bo.BuildApp;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Graph;
import com.metis.flow.domain.entity.base.Node;
import com.metis.flow.enums.EdgeType;
import com.metis.flow.enums.NodeType;
import com.metis.flow.validator.*;
import com.metis.flow.validator.factory.EdgeValidatorFactory;
import com.metis.flow.validator.factory.NodeValidatorFactory;
import com.metis.domain.bo.BuildApp;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Graph;
import com.metis.domain.entity.base.Node;
import com.metis.enums.EdgeType;
import com.metis.enums.NodeType;
import com.metis.validator.*;
import com.metis.validator.factory.EdgeValidatorFactory;
import com.metis.validator.factory.NodeValidatorFactory;
import com.metis.utils.GenericInterfacesUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

View File

@@ -1,9 +1,9 @@
package com.metis.flow.validator.impl.edge;
package com.metis.validator.impl.edge;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.enums.EdgeType;
import com.metis.flow.validator.EdgeValidator;
import com.metis.flow.validator.ValidatorResult;
import com.metis.domain.entity.base.Edge;
import com.metis.enums.EdgeType;
import com.metis.validator.EdgeValidator;
import com.metis.validator.ValidatorResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

View File

@@ -1,13 +1,13 @@
package com.metis.flow.validator.impl.node;
package com.metis.validator.impl.node;
import cn.hutool.core.lang.Assert;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Node;
import com.metis.flow.domain.entity.config.node.DocumentExtractorNodeConfig;
import com.metis.flow.enums.NodeType;
import com.metis.flow.validator.NodeValidator;
import com.metis.flow.validator.ValidatorCodeService;
import com.metis.flow.validator.ValidatorResult;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Node;
import com.metis.domain.entity.config.node.DocumentExtractorNodeConfig;
import com.metis.enums.NodeType;
import com.metis.validator.NodeValidator;
import com.metis.validator.ValidatorCodeService;
import com.metis.validator.ValidatorResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

View File

@@ -1,12 +1,12 @@
package com.metis.flow.validator.impl.node;
package com.metis.validator.impl.node;
import cn.hutool.core.lang.Assert;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Node;
import com.metis.flow.domain.entity.config.node.EndNodeConfig;
import com.metis.flow.enums.NodeType;
import com.metis.flow.validator.NodeValidator;
import com.metis.flow.validator.ValidatorResult;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Node;
import com.metis.domain.entity.config.node.EndNodeConfig;
import com.metis.enums.NodeType;
import com.metis.validator.NodeValidator;
import com.metis.validator.ValidatorResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

View File

@@ -1,16 +1,16 @@
package com.metis.flow.validator.impl.node;
package com.metis.validator.impl.node;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import com.metis.flow.domain.entity.base.Edge;
import com.metis.flow.domain.entity.base.Node;
import com.metis.flow.domain.entity.base.NodeVariable;
import com.metis.flow.domain.entity.config.node.StartNodeConfig;
import com.metis.flow.enums.NodeType;
import com.metis.flow.validator.NodeValidator;
import com.metis.flow.validator.ValidatorCodeService;
import com.metis.flow.validator.ValidatorResult;
import com.metis.domain.entity.base.Edge;
import com.metis.domain.entity.base.Node;
import com.metis.domain.entity.base.NodeVariable;
import com.metis.domain.entity.config.node.StartNodeConfig;
import com.metis.enums.NodeType;
import com.metis.validator.NodeValidator;
import com.metis.validator.ValidatorCodeService;
import com.metis.validator.ValidatorResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

124
pom.xml
View File

@@ -24,8 +24,9 @@
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-boot.vserion>3.3.4</spring-boot.vserion>
<fastjson.version>2.0.45</fastjson.version>
<fastjson.version>2.0.56</fastjson.version>
<lombok.version>1.18.34</lombok.version>
<org.mapstruct.version>1.6.2</org.mapstruct.version>
<sanitizer.version>1.2.3</sanitizer.version>
<langchain4j.version>1.0.0-beta2</langchain4j.version>
<mybatis-plus.version>3.5.8</mybatis-plus.version>
@@ -41,77 +42,60 @@
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-mcp</artifactId>
<version>1.0.0-beta2</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>com.mikesamuel</groupId>
<artifactId>json-sanitizer</artifactId>
<version>${sanitizer.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.24</version>
</dependency>
<!-- 类转换 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>${langchain4j.version}</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-mcp</artifactId>
<version>1.0.0-beta2</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.mikesamuel</groupId>
<artifactId>json-sanitizer</artifactId>
<version>${sanitizer.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.24</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
</dependencies>
</project>