From 34bfeedadf8ff9a4e02beb412391afc1a6068146 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Tue, 8 Sep 2026 16:40:47 +0800 Subject: [PATCH] =?UTF-8?q?refactor(workflow):=20=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E6=A8=A1=E5=9D=97=E6=94=B9=E7=94=B1=20ConditionalOnWo?= =?UTF-8?q?rkflowEnabled=20=E6=9D=A1=E4=BB=B6=E8=A3=85=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除启动类手工 ComponentScan 排除与 WorkflowModuleConfig、 WorkflowEnvironmentPostProcessor、spring.factories 自动装配配置 - 新增 @ConditionalOnWorkflowEnabled 注解,按 flowable.enabled 决定工作流模块是否生效 - 启动类回归 @SpringBootApplication,各配置属性类改用 @Component 显式注册 --- README.md | 30 +++++++-- pom.xml | 2 +- .../youlai/boot/YouLaiBootApplication.java | 21 +----- .../password/config/CaptchaProperties.java | 2 + .../boot/auth/wxma/config/WxMaProperties.java | 2 + .../codegen/property/CodegenProperties.java | 2 + .../youlai/boot/config/RedisCacheConfig.java | 2 +- .../security/config/SecurityProperties.java | 2 + .../web/ratelimit/RateLimitProperties.java | 2 + .../WorkflowEnvironmentPostProcessor.java | 64 ------------------- .../module/config/WorkflowModuleConfig.java | 19 ------ .../module/form/service/FormDataService.java | 3 - .../service/impl/FormDataServiceImpl.java | 3 - .../impl/FormDefinitionServiceImpl.java | 10 +-- .../config/ConditionalOnWorkflowEnabled.java | 24 +++++++ .../workflow/config/WorkflowEngineConfig.java | 1 + .../WorkflowDefinitionController.java | 4 +- .../WorkflowInstanceController.java | 2 + .../controller/WorkflowModelController.java | 2 + .../controller/WorkflowTaskController.java | 2 + .../handler/ProcessCompletedHandler.java | 3 +- .../ExpenseProcessCompletedHandler.java | 2 + .../PurchaseProcessCompletedHandler.java | 2 + .../listener/ProcessCompletedListener.java | 2 + .../runner/WorkflowDemoInitializer.java | 6 +- .../impl/WorkflowDefinitionServiceImpl.java | 2 + .../service/impl/WorkflowDemoServiceImpl.java | 10 ++- .../impl/WorkflowInstanceServiceImpl.java | 6 +- .../impl/WorkflowModelServiceImpl.java | 2 + .../service/impl/WorkflowTaskServiceImpl.java | 5 +- .../workflow/util/ApprovalHistoryHelper.java | 2 + .../module/workflow/util/BpmnModelHelper.java | 6 +- .../file/property/StorageProperties.java | 2 + .../boot/support/mail/MailProperties.java | 2 + .../boot/support/sms/AliyunSmsProperties.java | 2 + src/main/resources/META-INF/spring.factories | 2 - src/main/resources/application-dev.yml | 19 ++++-- src/main/resources/application-prod.yml | 17 +++-- 38 files changed, 142 insertions(+), 149 deletions(-) delete mode 100644 src/main/java/com/youlai/boot/module/config/WorkflowEnvironmentPostProcessor.java delete mode 100644 src/main/java/com/youlai/boot/module/config/WorkflowModuleConfig.java create mode 100644 src/main/java/com/youlai/boot/module/workflow/config/ConditionalOnWorkflowEnabled.java delete mode 100644 src/main/resources/META-INF/spring.factories diff --git a/README.md b/README.md index 303fdff7..35e635f6 100644 --- a/README.md +++ b/README.md @@ -149,9 +149,8 @@ youlai-boot/ │ │ │ └── util/ # 安全工具类 │ │ └── web/ # Web 层(全局异常/跨域/限流) │ ├── module/ # 业务扩展模块 -│ │ ├── config/ # 模块装配(工作流按 flowable.enabled 开关) │ │ ├── form/ # 动态表单 -│ │ └── workflow/ # 工作流(Flowable 审批流) +│ │ └── workflow/ # 工作流 │ ├── support/ # 能力服务 │ │ ├── file/ # 文件存储(RustFS/阿里云OSS/本地) │ │ ├── mail/ # 邮件服务 @@ -215,10 +214,14 @@ youlai-boot/ 2. 在 `application-{profile}.yml` 中开启: ```yaml - flowable: + workflow: enabled: true ``` + Flowable 引擎开关(process / idm / eventregistry)在同一 `application-{profile}.yml` 中以占位符跟随 `workflow.enabled`,无需单独维护。 + + 演示流程的启动自动部署由同文件 `workflow.demo.enabled` 控制(dev/youlai 默认 `true`、prod 默认 `false`,仅在模块开启后生效)。 + **多租户** 需要租户隔离与租户配置,使用独立仓库 [youlai-boot-tenant](https://gitee.com/youlaiorg/youlai-boot-tenant)。 @@ -229,8 +232,23 @@ youlai-boot/ 如需技术支持、商务合作、二次开发、项目定制或私有化部署,可联系作者微信(见下方二维码)。 -| 公众号「有来技术」 | | 小程序「有来技术」 | | 添加作者微信 | -| --------- | ------ | --------- | ------ | ------ | -| | | | | | +
技术交流 · 问题反馈 · 商务合作
等价于 @SpringBootApplication,但显式声明 @ComponentScan 以排除工作流包, - * 改由 {@link com.youlai.boot.module.config.WorkflowModuleConfig} 按 flowable.enabled 决定是否扫描
仅当 flowable.enabled 为 true 时扫描工作流包,未配置视为关闭
跨模块窄接口:formKey 到 formId 的解析与删除条件封装在 form 模块内部, - * 调用方(workflow)不感知表单实体与查询条件
formKey 到 formId 的解析与删除条件封装在本模块内部,跨模块调用方不感知表单实体与查询条件
workflow.enabled 显式为 true 时生效,未配置视为关闭
定义的发布入口在模型接口(deploy),删除随模型级联,本层不再提供独立分页与删除
定义的发布在模型接口(deploy),删除随模型级联
一个流程定义 Key 对应一个处理器,由 ProcessCompletedListener 统一路由; - * 新增"审批通过后处理"(如报销入账、采购入库、离职禁用账号)只需实现本接口并注册为 Spring Bean, - * 无需改动审批与引擎代码
委托 {@link WorkflowDemoService} 幂等初始化,重置能力由管理端接口提供。 - * 由 flowable.demo.enabled 控制(默认开启),生产环境置 false 后本组件不注册,启动零开销
初始化按 key 幂等双写:部署流程定义(可发起)+ 创建模型草稿(流程模型页可见),两者各自查重互不依赖。 * 引擎表(ACT_*)不走 SQL 预置:流程定义跨三表且主键由引擎生成,直接写库绕过解析校验,重置同理依赖引擎级联删除
重置为工作流数据全量恢复出厂:清空所有流程定义、模型、实例、历史(含用户自建)及关联表单提交数据后重建演示流程, - * 供演示环境定期复原,等价于业务脚本"DROP 重建"的数据效果而不动引擎表结构
重置供演示环境定期复原,数据效果等价业务脚本"DROP 重建",不动引擎表结构
formKey 到删除条件的解析封装在 form 模块(removeByFormKey 窄接口),本模块不感知表单实体