定时任务 Flowable 编排
status: complete
created: 2026-07-19
complexity: 🟡中等
parent: code-copilot/changes/定时任务优化/spec.md
version: V9
dependency: 定时任务可靠性加固、定时任务出站安全
ui-baseline: code-copilot/changes/定时任务优化/ui-reference.md
1. 目标
允许定时任务启动一个真实、已发布、固定版本的 Flowable 流程,并把任务执行记录与 processInstanceId 关联。本版本不建设第二套流程设计器,也不新增任意脚本或业务节点库。
2. 功能范围
3. 明确不做
- 不创建 mes_flow、mes_flow_node 或第二套流程画布。
- 不自动部署草稿或启动最新未绑定版本。
- 不开放任意 Script、Java、Shell、SQL 或不受控 SpEL。
- 不新增采集、转换、校验、API 调用等专用节点;API 节点另立变更并复用 V7。
- 不把审批待办结果回写成任务执行状态。
4. 数据变更
| 表 |
字段 |
说明 |
| sys_job_config |
invoke_mode |
SINGLE/FLOW |
| sys_job_config |
flow_model_key |
已发布模型 Key |
| sys_job_config |
flow_model_version |
保存时固定版本 |
| sys_job_config |
flow_deployment_id |
保存时固定部署 |
| sys_job_config |
flow_process_definition_id |
Flowable 精确定义 ID |
| sys_job_log |
process_instance_id |
真实流程实例关联 |
5. SPI 契约
- JobFlowBindingVO validateBinding(String modelKey, Integer version)
- JobFlowExecutionResult start(JobFlowExecutionRequest request)
- JobFlowExecutionResult findByBusinessKey(String businessKey)
JobFlowExecutionRequest 只包含可信任务 ID、执行 ID、绑定快照和受控业务参数;身份上下文由适配器服务端注入。
任务流程 businessKey 固定为 job:<jobConfigId>:<executionId>。任务参数统一放入 jobInput 变量,不允许覆盖 initiator、businessKey、tenantId、activeOrgId 等可信变量。
6. 验收标准
- 草稿、挂起、无部署或版本不匹配的模型无法绑定。
- 发布新流程版本后,旧任务仍启动原绑定版本。
- 定时和手动触发都能关联唯一 processInstanceId。
- FLOW 服务不可用时任务启动失败并记录安全错误,不降级为其它版本或本地草稿。
- 远程响应丢失时按 businessKey 查询并恢复原 processInstanceId,不重复启动流程。
- 代码扫描不存在任意脚本执行入口。
7. 确认门禁
8. 实施决策
invoke_mode 是 SINGLE/FLOW 上层编排模式,既有 execute_mode 只在 SINGLE 模式下解释为 BEAN/HANDLER/RPC。
- JobFlowExecutor 契约放入中立的 forge-starter-job,job 插件不依赖 forge-plugin-flow,避免业务插件循环依赖。
- 绑定保存时由 Flow 端返回可信快照;前端提交的 deploymentId/processDefinitionId 不直接入库。
- 独立部署使用 RemoteJobFlowExecutor,通过 SecureOutboundClient 调用专用 Job Flow API;目标必须命中 FLOW_API 白名单。
- Flow 端从服务配置注入技术身份,远程请求体不接受 userId、tenantId、activeOrgId 或任意扁平流程变量。
- Flow 端按 tenantId + businessKey 幂等;启动成功即完成任务日志,后续流程结果不回写任务状态。
- 专用 Job Flow API 复用
system:jobConfig:trigger 权限;远程 Token 必须属于拥有该权限的服务账号。
9. 完成结论
- V9 代码、权限复核、目标测试、Flow/Admin 聚合装配、前端构建和静态门禁均已通过。
- Job 专项
48/48、Flow 运行时 7/7、远程适配 6/6、Flow Controller 权限合约 1/1、前端任务回归 25/25 通过。
- Flow Server
32/32、Admin Server 43/43 Reactor 模块构建成功;前端生产构建成功,处理 8721 个模块。
- 真实 MySQL Flyway、Flow 技术身份、FLOW_API 私网白名单、服务账号 Token 和真实流程 E2E 未在本轮启动,保留为用户侧环境验收项。