feat: dispatch NamedAction and NamedCondition by key

Hosts register one bean per action/condition; Spring wires the dispatcher when no facade is defined, and REST catalog projects from those beans.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
0264408
2026-09-20 11:07:57 +08:00
co-authored by Cursor
parent e4e2c6ed9b
commit d743939964
16 changed files with 570 additions and 26 deletions
+5 -4
View File
@@ -21,14 +21,14 @@
- 线性或多步图:`StepTransition` + 内置谓词 / 宿主 `RoutingCondition`
- 会签/或签:`ApprovalPolicy.ALL` / `ANY`(多候选人)
- 结构化并行:`kind: PARALLEL` 块(一层、join ALL)
- ACTION 步骤:事务提交后调用宿主 `ActionHandler`
- ACTION 步骤:事务提交后调用宿主 `ActionHandler`(可经 `NamedAction` 分发)
- 发起人撤回:`WITHDRAWN`,待办任务 `SKIPPED`
- 管理员/系统取消:`cancel` → `CANCELLED`,待办任务 `SKIPPED`(引擎不鉴权角色)
- 任务转派:当前办理人 `reassign`,审计 `TASK_REASSIGNED`
- 到期升级:步骤 `due` + `processDue`,审计 `TASK_ESCALATED`
- 分页查询:任务 / 实例 / 流程定义
- 审计时间线:`ProcessEvent` + `queryHistory`
- 扩展点:`AssigneeResolver`、`RoutingCondition`、`ActionHandler`、`OrdoEventListener`
- 扩展点:`AssigneeResolver`、`RoutingCondition`、`ActionHandler`、`NamedCondition`、`NamedAction`、`OrdoEventListener`
开发计划:可选 REST + 目录 SPI。设计器为独立产品(不进本仓库),待 REST 与目录之后。多租户 **暂不在计划中**。见 [docs/roadmap.md](docs/roadmap.md)。
@@ -112,8 +112,9 @@ ordo:
| Bean | 默认 |
|---|---|
| `AssigneeResolver` | 候选人即办理人 |
| `RoutingCondition` | 始终匹配(`ref` 边;宿主可按 key+args 分发) |
| `ActionHandler` | 空操作 |
| `NamedCondition` / `NamedAction` | 可多个;无对应门面时按 key 分发 |
| `RoutingCondition` | 无具名 condition 时始终匹配;有则未知 `ref` 为 false |
| `ActionHandler` | 无具名 action 时空操作;有则未知 key 抛错 |
| `OrdoEventListener` | 可注册多个,提交后按顺序调用 |
## 运行时约定