diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 2930fd0b0..6f2ccdc06 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -34,6 +34,7 @@
ruoyi-common-tenant
ruoyi-common-websocket
ruoyi-common-sse
+ ruoyi-common-workflow
ruoyi-common
diff --git a/ruoyi-common/ruoyi-common-bom/pom.xml b/ruoyi-common/ruoyi-common-bom/pom.xml
index dbc5f1c2b..eeadc7242 100644
--- a/ruoyi-common/ruoyi-common-bom/pom.xml
+++ b/ruoyi-common/ruoyi-common-bom/pom.xml
@@ -179,6 +179,13 @@
${revision}
+
+
+ org.dromara
+ ruoyi-common-workflow
+ ${revision}
+
+
diff --git a/ruoyi-common/ruoyi-common-workflow/pom.xml b/ruoyi-common/ruoyi-common-workflow/pom.xml
new file mode 100644
index 000000000..c1dc6717d
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-workflow/pom.xml
@@ -0,0 +1,47 @@
+
+
+
+ ruoyi-common
+ org.dromara
+ ${revision}
+
+ 4.0.0
+
+ ruoyi-common-workflow
+
+
+ ruoyi-common-workflow Warm-Flow国产工作流引擎
+
+
+
+ http://warm-flow.cn/
+
+
+
+
+
+ org.dromara
+ ruoyi-common-core
+
+
+
+
+ io.github.minliuhua
+ warm-flow-mybatis-plus-sb-starter
+
+
+
+ io.github.minliuhua
+ warm-flow-plugin-spel
+
+
+
+ io.github.minliuhua
+ warm-flow-plugin-ui-sb-web
+
+
+
+
+
diff --git a/ruoyi-common/ruoyi-common-workflow/src/main/java/org/dromara/common/workflow/config/WorkflowConfiguration.java b/ruoyi-common/ruoyi-common-workflow/src/main/java/org/dromara/common/workflow/config/WorkflowConfiguration.java
new file mode 100644
index 000000000..6812fcd71
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-workflow/src/main/java/org/dromara/common/workflow/config/WorkflowConfiguration.java
@@ -0,0 +1,28 @@
+package org.dromara.common.workflow.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.factory.YmlPropertySourceFactory;
+import org.dromara.common.workflow.handler.WorkflowExceptionHandler;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.PropertySource;
+
+/**
+ * workflow 配置属性
+ *
+ * @author AprilWind
+ */
+@Slf4j
+@AutoConfiguration
+@PropertySource(value = "classpath:common-workflow.yml", factory = YmlPropertySourceFactory.class)
+public class WorkflowConfiguration {
+
+ /**
+ * workflow 异常处理器
+ */
+ @Bean
+ public WorkflowExceptionHandler workflowExceptionHandler() {
+ return new WorkflowExceptionHandler();
+ }
+
+}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java b/ruoyi-common/ruoyi-common-workflow/src/main/java/org/dromara/common/workflow/enums/TaskAssigneeEnum.java
similarity index 96%
rename from ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java
rename to ruoyi-common/ruoyi-common-workflow/src/main/java/org/dromara/common/workflow/enums/TaskAssigneeEnum.java
index 42971c624..03a37b40f 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java
+++ b/ruoyi-common/ruoyi-common-workflow/src/main/java/org/dromara/common/workflow/enums/TaskAssigneeEnum.java
@@ -1,4 +1,4 @@
-package org.dromara.workflow.common.enums;
+package org.dromara.common.workflow.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -81,7 +81,7 @@ public enum TaskAssigneeEnum {
/**
* 获取所有办理人类型的描述列表
*
- * 获取当前枚举类所有项的描述字段列表,通常用于展示选择项。
+ * 获取当前枚举类所有项的描述字段列表,通常用于展示选择项
*
*
* @return List 返回所有办理人类型的描述列表
@@ -95,7 +95,7 @@ public enum TaskAssigneeEnum {
/**
* 获取所有办理人类型的代码列表
*
- * 获取当前枚举类所有项的代码字段列表,通常用于程序内部逻辑的判断。
+ * 获取当前枚举类所有项的代码字段列表,通常用于程序内部逻辑的判断
*
*
* @return List 返回所有办理人类型的代码列表
diff --git a/ruoyi-common/ruoyi-common-workflow/src/main/java/org/dromara/common/workflow/handler/WorkflowExceptionHandler.java b/ruoyi-common/ruoyi-common-workflow/src/main/java/org/dromara/common/workflow/handler/WorkflowExceptionHandler.java
new file mode 100644
index 000000000..2ef446d7b
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-workflow/src/main/java/org/dromara/common/workflow/handler/WorkflowExceptionHandler.java
@@ -0,0 +1,30 @@
+package org.dromara.common.workflow.handler;
+
+import cn.hutool.http.HttpStatus;
+import com.warm.flow.core.exception.FlowException;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.domain.R;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * Workflow 异常处理器
+ *
+ * @author AprilWind
+ */
+@Slf4j
+@RestControllerAdvice
+public class WorkflowExceptionHandler {
+
+ /**
+ * 流程异常
+ */
+ @ExceptionHandler(FlowException.class)
+ public R handleForestException(FlowException e, HttpServletRequest request) {
+ String requestURI = request.getRequestURI();
+ log.error("请求地址'{}',流程异常.{}", requestURI, e.getMessage());
+ return R.fail(HttpStatus.HTTP_UNAVAILABLE, e.getMessage());
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-workflow/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-workflow/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 000000000..a6da7ff44
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-workflow/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+org.dromara.common.workflow.config.WorkflowConfiguration
diff --git a/ruoyi-common/ruoyi-common-workflow/src/main/resources/common-workflow.yml b/ruoyi-common/ruoyi-common-workflow/src/main/resources/common-workflow.yml
new file mode 100644
index 000000000..dfeb7e9cf
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-workflow/src/main/resources/common-workflow.yml
@@ -0,0 +1,8 @@
+# warm-flow工作流配置
+warm-flow:
+ # 是否开启工作流,默认true
+ enabled: true
+ # 是否显示banner图,默认是
+ banner: true
+ # 是否开启设计器ui,默认true
+ ui: true
diff --git a/ruoyi-modules/ruoyi-workflow/pom.xml b/ruoyi-modules/ruoyi-workflow/pom.xml
index 6e18f8680..1dd4662ca 100644
--- a/ruoyi-modules/ruoyi-workflow/pom.xml
+++ b/ruoyi-modules/ruoyi-workflow/pom.xml
@@ -37,46 +37,45 @@
org.dromara
ruoyi-common-mybatis
+
org.dromara
ruoyi-common-web
+
org.dromara
ruoyi-common-log
+
org.dromara
ruoyi-common-idempotent
+
org.dromara
ruoyi-common-excel
+
org.dromara
ruoyi-common-translation
+
org.dromara
ruoyi-common-tenant
+
org.dromara
ruoyi-common-security
- io.github.minliuhua
- warm-flow-mybatis-plus-sb-starter
-
-
- io.github.minliuhua
- warm-flow-plugin-spel
-
-
- io.github.minliuhua
- warm-flow-plugin-ui-sb-web
+ org.dromara
+ ruoyi-common-workflow
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java
deleted file mode 100644
index a38c83e27..000000000
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.dromara.workflow.config;
-
-
-import org.springframework.context.annotation.Configuration;
-
-/**
- * warmFlow配置
- *
- * @author may
- */
-@Configuration
-public class WarmFlowConfig {
-
-}
-
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java
index f9d5e24a6..95af5891a 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskAssigneeServiceImpl.java
@@ -20,7 +20,7 @@ import org.dromara.common.core.service.RoleService;
import org.dromara.common.core.service.UserService;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.StringUtils;
-import org.dromara.workflow.common.enums.TaskAssigneeEnum;
+import org.dromara.common.workflow.enums.TaskAssigneeEnum;
import org.dromara.workflow.service.IWfTaskAssigneeService;
import org.springframework.stereotype.Service;
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
index 741f94e4f..26b22ff75 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
@@ -10,7 +10,7 @@ import org.dromara.common.core.domain.dto.UserDTO;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.workflow.common.enums.TaskAssigneeEnum;
+import org.dromara.common.workflow.enums.TaskAssigneeEnum;
import org.dromara.workflow.service.IWfTaskAssigneeService;
import java.util.HashSet;