chore: target Java 17 and document usage plus roadmap

Lower the compiler baseline to 17, rename listDefinitions to queryDefinitions, and align README/usage/roadmap with planned vs out-of-scope work.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
0264408
2026-09-15 10:55:30 +08:00
co-authored by Cursor
parent f3220fd0a0
commit 5795778112
20 changed files with 604 additions and 110 deletions
+38 -33
View File
@@ -1,45 +1,50 @@
# Ordo Roadmap
记录当前已完成能力之后,后续要做的开发计划。按优先级分组,供后续排期/立项参考。
本文档是后续开发计划。「开发计划」中的项会做。「暂不在计划中」的项在另有决定前不做。除此之外仍可能立项其他新特性。
## 已完成(背景,非本文档重点)
对外行为落地后同步 [usage.md](usage.md)。
- ANY/ALL 多候选人会签/或签(见 `/memories/repo/any-all-multi-approval.md`)
- JDBC 存储模块 + Flyway 迁移(V1~V4)
## 已完成
- ANY/ALL 会签/或签
- JDBC 存储(PostgreSQL)+ Flyway V1–V5
- 条件路由 `StepTransition` + `RoutingCondition`
- ACTION 步骤 + `ActionHandler`
- 流程撤回(`WITHDRAWN`)
- **任务/实例/流程定义分页过滤查询 API**(2026-09-15 完成):`ApprovalTaskRepository.query`、
`ProcessInstanceRepository.query`、`ProcessDefinitionRepository.findAll` + `OrdoEngine` 对应的
`queryTasks`/`queryInstances`/`listDefinitions`,均支持 `PageRequest`/`Page` 分页与按
assignee/instanceId/definitionId/status/initiator/时间范围过滤,默认按时间降序(最新优先)。
- ACTION + `ActionHandler`;执行记录持久化
- 发起人撤回 `WITHDRAWN`
- 分页查询:任务 / 实例 / 定义
- 审计 `ProcessEvent` / `queryHistory`;`OrdoEventListener`
## P0 — 审计与扩展点
## 开发计划(确定要做)
- [x] **独立历史/审计事件模型**:现在历史只能靠 `ApprovalTask.action` 字段拼凑,没有独立的流程事件表
(谁在何时对哪个实例做了什么)。建议新增 `ProcessEvent`/`ProcessHistoryRepository`。
- [x] **状态变更事件监听器**:`OrdoEngine` 目前没有任何 listener/hook,无法在任务创建、审批、实例完成时
被外部感知(做通知、写审计日志等)。可加 `OrdoEventListener` 扩展点,风格与 `AssigneeResolver`/
`RoutingCondition` 一致。
- [x] **ACTION 步骤执行记录持久化**:目前 `ActionHandler` 执行结果只在宿主内存里记(如 rhizome 的
`LeaveActionHandler`),重启即丢失,且失败只打日志不影响流程状态,需要设计重试/失败处理策略。
下列能力已纳入计划,尚未实现。实现顺序可按依赖调整,但范围本身不从计划中拿掉。
## P1 — 任务生命周期完善
### 任务转派
- [ ] **任务委托/转派(delegate/reassign)**:任务创建后 assignee 不可变,无法转交他人处理。
- [ ] **超时/升级(SLA/escalation)**:无到期时间、定时器、自动升级机制。
- [ ] **流程实例取消 vs 撤回**:目前只有 `WITHDRAWN`(仅发起人可操作),没有管理员/系统层面的
`CANCELLED` 语义。
任务创建后当前 `assignee` 不可变。计划提供委托/转派(delegate/reassign),把待办转给他人办理,并写入审计。
## P2 — 架构级演进(范围较大,放在后面)
### 到期升级
- [ ] **流程定义版本化**:目前同 id 直接整体替换(`replace`),建议演进为不可变多版本 + 运行中实例
锁定所用版本。
- [ ] **多租户支持**:数据模型无 tenant 隔离字段。
- [ ] **JDBC 多方言支持**:目前 DDL/实现明显偏向 PostgreSQL(唯一键冲突处理等),无 MySQL/Testcontainers
测试,若要支持更多数据库需要抽象 dialect 层。
- [ ] **通用 REST Starter**:现在 REST 层完全是 rhizome 自己写的 demo,可考虑提供一个可选的
`ordo-spring-boot-starter-web` 暴露标准 REST 接口。
- [ ] **表单/UI schema、子流程、并行 fork-join**:属于更大的引擎能力扩展,优先级最低,等基础能力稳定后
再评估是否需要。
目前无到期时间与定时器。计划支持 SLA/超时:到期后升级(改办理人、通知或进入指定步骤),即「到期升级」。
### CANCELLED
目前终态只有 `APPROVED` / `REJECTED` / `WITHDRAWN`(撤回仅发起人)。计划增加管理员/系统取消语义 `CANCELLED`,与撤回区分。
### 定义不可变多版本
当前同 `id` 用 `replace` 整体替换;存在 `RUNNING` 实例时拒绝。计划改为定义不可变多版本:新版本不改写旧版本;运行中实例锁定发起时所用版本。
### MySQL 方言
当前 JDBC DDL/冲突处理面向 PostgreSQL。计划增加 MySQL 方言(及对应测试),通过 dialect 层扩展,而不是只支持一种库。
## 暂不在计划中
- **多租户**(数据模型无 tenant 隔离)
- **官方 REST Starter**(不提供 `ordo-spring-boot-starter-web`;REST 由宿主自建)
## 后续新特性
上表「确定要做」之外,仍可能立项其他能力(例如表单/UI schema、子流程、并行 fork-join)。**多租户与官方 REST 在另有明确决定前不进入计划。**
新特性立项时写入「开发计划」对应小节;完成后移到「已完成」,并更新 [usage.md](usage.md)。