# Ordo Roadmap 本文档是后续开发计划。「开发计划」中的项会做。「暂不在计划中」的项在另有决定前不做。除此之外仍可能立项其他新特性。 对外行为落地后同步 [usage.md](usage.md)。 ## 已完成 - ANY/ALL 会签/或签 - JDBC 存储(PostgreSQL)+ Flyway V1–V6 - 条件路由 `StepTransition` + `RoutingCondition` - ACTION + `ActionHandler`;执行记录持久化 - 发起人撤回 `WITHDRAWN` - 分页查询:任务 / 实例 / 定义 - 审计 `ProcessEvent` / `queryHistory`;`OrdoEventListener` - 任务转派 `reassign` / `TASK_REASSIGNED` - 到期升级 `processDue` / `TASK_ESCALATED` ## 开发计划(确定要做) 下列能力已纳入计划,尚未实现。实现顺序可按依赖调整,但范围本身不从计划中拿掉。 ### CANCELLED 目前终态只有 `APPROVED` / `REJECTED` / `WITHDRAWN`(撤回仅发起人)。计划增加管理员/系统取消语义 `CANCELLED`,与撤回区分。 ### 定义不可变多版本 当前同 `id` 用 `replace` 整体替换;存在 `RUNNING` 实例时拒绝。计划改为定义不可变多版本:新版本不改写旧版本;运行中实例锁定发起时所用版本。 ### MySQL 方言 当前 JDBC DDL/冲突处理面向 PostgreSQL。计划增加 MySQL 方言(及对应测试),通过 dialect 层扩展,而不是只支持一种库。 ### 可选 REST + 目录 SPI 引擎入口仍是 `OrdoEngine`。计划提供**可选、极薄**的 REST 适配(例如独立 starter),带 OpenAPI,覆盖定义读写/解析校验、实例与任务查询,不包含鉴权、RBAC、业务表单。 配套 **目录 SPI**:宿主登记可用的 `conditionKey` / `actionKey` / 候选人(或角色)项,供 REST 与外部设计器下拉,而不是在 JSON 里写引擎无法执行的表达式。 `RoutingCondition` / `ActionHandler` / `AssigneeResolver` 保持全局单例;流程隔离由宿主用 key 约定(建议前缀)+ 门面分发,引擎不按流程定义拆 bean。 ### 独立设计器(不进本仓库) 流程设计器是**单独产品**,消费上述 REST 与目录,不做成 ordo 模块。画布对齐引擎图(审批步、ACTION 步、边上的 `when`/`priority`,结束为 `to: null`),不引入 BPMN 网关/并行等引擎没有的语义。节点坐标等 layout 由设计器自存,不进入 `ProcessDefinition`。 启动时机:REST 契约、目录 SPI、定义不可变多版本落地之后。当前 `replace` + 无版本锁定不适合作为设计器保存/发布模型。 ## 暂不在计划中 - **多租户**(数据模型无 tenant 隔离) - **设计器 UI**(不进 ordo;见上节独立产品) ## 后续新特性 上表「确定要做」之外,仍可能立项其他能力(例如表单/UI schema、子流程、并行 fork-join)。**多租户在另有明确决定前不进入计划。** 新特性立项时写入「开发计划」对应小节;完成后移到「已完成」,并更新 [usage.md](usage.md)。