Files
ordo/docs/roadmap.md
T
0264408andCursor f3220fd0a0 feat: persist process history events, listeners, and ACTION executions
Give hosts an append-only timeline, post-commit OrdoEventListener hooks, and durable ACTION results without blocking the approval flow.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 10:14:44 +08:00

46 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ordo Roadmap
记录当前已完成能力之后,后续要做的开发计划。按优先级分组,供后续排期/立项参考。
## 已完成(背景,非本文档重点)
- ANY/ALL 多候选人会签/或签(见 `/memories/repo/any-all-multi-approval.md`)
- JDBC 存储模块 + Flyway 迁移(V1~V4)
- 条件路由 `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/时间范围过滤,默认按时间降序(最新优先)。
## 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` 语义。
## 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**:属于更大的引擎能力扩展,优先级最低,等基础能力稳定后
再评估是否需要。