定时任务 Flowable 编排增量测试计划
status: complete
version: V9
created: 2026-07-21
completed: 2026-07-21
baseline: V8 Starter 47/47、Flow 12/12、Flow Reactor 32/32、Admin Reactor 43/43
1. 本轮差异
- Job 配置新增 SINGLE/FLOW 上层编排模式和固定 Flowable 定义快照。
- Flow 新增按 processDefinitionId 校验、技术身份注入和 businessKey 幂等启动能力。
- 独立 Flow 服务调用改走 SecureOutboundClient,不新增 X-Inner-Call 或直连客户端。
- 任务执行日志新增 processInstanceId 并提供现有流程历史入口。
2. P0 验证
| 编号 |
场景 |
预期 |
| P0-01 |
固定版本 |
发布新版本后旧任务仍按保存的 processDefinitionId 启动 |
| P0-02 |
绑定失败关闭 |
草稿、挂起、无部署、版本或定义不匹配均不能保存 FLOW 任务 |
| P0-03 |
精确启动 |
运行链路不查询 latestVersion,不自动部署草稿或缺失定义 |
| P0-04 |
技术身份 |
请求体不能提交 userId/tenantId/activeOrgId,Flow 端只用服务配置身份 |
| P0-05 |
远程安全 |
只走 SecureOutboundClient/FLOW_API,无 X-Inner-Call 或直连 HTTP 客户端 |
| P0-06 |
幂等恢复 |
相同 businessKey 重试返回同一 processInstanceId,不重复启动 |
| P0-07 |
日志关联 |
定时/手动/Open API FLOW 触发都保存唯一 processInstanceId |
| P0-08 |
结果边界 |
启动成功即任务成功;流程节点后续失败不回写任务状态 |
3. P1 验证
| 编号 |
场景 |
预期 |
| P1-01 |
SINGLE 兼容 |
V1-V8 任务默认 SINGLE,原 BEAN/HANDLER/RPC 路由无回归 |
| P1-02 |
参数安全 |
jobParam 必须是 JSON 对象并只作为 jobInput 嵌套变量 |
| P1-03 |
UI 绑定 |
只能选择已发布模型版本,部署快照只读且身份/节点配置不可编辑 |
| P1-04 |
历史跳转 |
有 processInstanceId 的日志详情可跳转现有流程监控 |
| P1-05 |
聚合装配 |
Job、Flow、Flow Client、Flow Server、Admin Server 和前端构建通过 |
4. 执行命令
cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-job \
-Penable-tests -Dforge.test.groups= \
-Dtest=JobFlowMigrationContractTest,JobSchedulerTest,JobConfigValidatorTest,JobFlowOrchestrationServiceTest,QuartzJobExecutorTest,JobExecutionLifecycleServiceTest test
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-flow \
-Penable-tests -Dforge.test.groups= \
-Dtest=JobFlowRuntimeServiceTest test
mvn -pl forge-flow/forge-flow-client \
-Penable-tests -Dforge.test.groups= \
-Dtest=RemoteJobFlowExecutorTest test
mvn -pl forge-flow/forge-flow-server \
-Penable-tests -Dforge.test.groups= \
-Dtest=JobFlowControllerSecurityContractTest test
mvn -pl forge-flow/forge-flow-server -am package -DskipTests
mvn -pl forge-admin-server -am package -DskipTests
cd forge-admin-ui
source ~/.nvm/nvm.sh
nvm use v20.19.0
pnpm exec vitest run \
src/views/system/job-config/__tests__/job-config-form.test.js \
src/views/system/job-config/__tests__/job-permission.test.js \
src/views/system/__tests__/job-log-query.test.js \
src/views/system/__tests__/job-api-token.test.js
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
5. 跳过项
- 不自动启动真实 MySQL、Admin、Flow 或外部 HTTP 服务;真实 Flyway、服务 Token、FLOW_API 私网白名单和流程实例 E2E 由用户侧环境验收。
- 不创建或修改 BPMN 节点配置,不新增技术节点库。
- 不修改或清理 V1-V8 未提交成果,不创建 Git 提交。
6. 执行结果
| 验证项 |
结果 |
| Job V9 专项 |
48/48 通过,Failures 0、Errors 0、Skipped 0 |
| Flow 运行时 |
7/7 通过,固定定义、挂起拒绝、快照失效和幂等恢复覆盖完整 |
| Remote Flow Client |
6/6 通过,FLOW_API、Bearer、无 X-Inner-Call 和响应丢失恢复覆盖完整 |
| Flow API 权限合约 |
1/1 通过,专用接口固定要求 system:jobConfig:trigger |
| 前端任务回归 |
25/25 通过,4 个测试文件全部成功 |
| Flow Server 装配 |
32/32 Reactor 模块成功,BUILD SUCCESS |
| Admin Server 装配 |
43/43 Reactor 模块成功,BUILD SUCCESS |
| 前端生产构建 |
成功,8721 modules transformed |
| 静态门禁 |
Flyway placeholder、tenant_id、Mapper XML、直连 HTTP、X-Inner-Call、latestVersion、脚本入口和 git diff --check 全部通过 |
自动化范围已完成;第 5 节所列真实环境项仍由用户侧验收,不计入自动化通过结论。