Files
ordo/docs/roadmap.md
T
0264408 77d1e5198b feat: Implement pagination and filtering for approval tasks and process instances
- Added query method to InMemoryApprovalTaskRepository for filtering and pagination of approval tasks.
- Enhanced InMemoryProcessInstanceRepository with query method for filtering and pagination of process instances.
- Introduced Page and PageRequest classes for handling paginated results.
- Updated JdbcApprovalTaskRepository and JdbcProcessInstanceRepository to support querying with pagination.
- Added tests for querying, filtering, and pagination in InMemory and JDBC repositories.
- Implemented dynamic WHERE clause building for SQL queries in PageSupport.
2026-09-15 08:56:05 +08:00

2.8 KiB
Raw Blame History

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 — 审计与扩展点

  1. 独立历史/审计事件模型:现在历史只能靠 ApprovalTask.action 字段拼凑,没有独立的流程事件表 (谁在何时对哪个实例做了什么)。建议新增 ProcessEvent/ProcessHistoryRepository。
  2. 状态变更事件监听器:OrdoEngine 目前没有任何 listener/hook,无法在任务创建、审批、实例完成时 被外部感知(做通知、写审计日志等)。可加 OrdoEventListener 扩展点,风格与 AssigneeResolver/ RoutingCondition 一致。
  3. ACTION 步骤执行记录持久化:目前 ActionHandler 执行结果只在宿主内存里记(如 rhizome 的 LeaveActionHandler),重启即丢失,且失败只打日志不影响流程状态,需要设计重试/失败处理策略。

P1 — 任务生命周期完善

  1. 任务委托/转派(delegate/reassign):任务创建后 assignee 不可变,无法转交他人处理。
  2. 超时/升级(SLA/escalation):无到期时间、定时器、自动升级机制。
  3. 流程实例取消 vs 撤回:目前只有 WITHDRAWN(仅发起人可操作),没有管理员/系统层面的 CANCELLED 语义。

P2 — 架构级演进(范围较大,放在后面)

  1. 流程定义版本化:目前同 id 直接整体替换(replace),建议演进为不可变多版本 + 运行中实例 锁定所用版本。
  2. 多租户支持:数据模型无 tenant 隔离字段。
  3. JDBC 多方言支持:目前 DDL/实现明显偏向 PostgreSQL(唯一键冲突处理等),无 MySQL/Testcontainers 测试,若要支持更多数据库需要抽象 dialect 层。
  4. 通用 REST Starter:现在 REST 层完全是 rhizome 自己写的 demo,可考虑提供一个可选的 ordo-spring-boot-starter-web 暴露标准 REST 接口。
  5. 表单/UI schema、子流程、并行 fork-join:属于更大的引擎能力扩展,优先级最低,等基础能力稳定后 再评估是否需要。