# 表单版本与流程选择 ## 发布模型 表单定义以 `tenant + formKey + version` 唯一标识,状态为 `DRAFT`、`PUBLISHED` 或 `RETIRED`。同一租户同一表单只能有一个已发布版本。 流程绑定将以下条件映射到 Flowable Process Definition Key: - 业务类型 - 表单 Key 和版本 - 可选业务枚举,例如请假类型 - 可选最小时长和最大时长 - 优先级 - ACTIVE / INACTIVE 状态 ## 运行时选择 Flutter 只能提交业务表单数据,不能提交流程定义 ID。Kotlin 后端按当前租户和权威业务数据查询绑定: 1. 只选择 ACTIVE 绑定。 2. 业务类型必须精确匹配。 3. 枚举和时长条件必须满足。 4. 优先级高的规则优先。 5. 精确枚举或范围规则优先于通配规则。 6. 无匹配绑定时拒绝提交,不启动默认或任意流程。 流程启动后保存实际 `processDefinitionId`,运行中实例不会因之后修改绑定而切换版本。 ## 安全边界 - 只有 OA 管理员拥有 `PROCESS_CONFIGURATION_MANAGE_TENANT`。 - 新表单版本先进入草稿,发布前执行 Schema 结构校验。 - 绑定只能引用数据库中存在的表单版本和 Flowable 已部署流程 Key。 - 创建、发布、启停均写入审计。