Skip to content

规范 03 · 状态机 ​

状态码为跨语言契约(枚举值对应表见 规范 07 · 元数据能力 的字典表)。

流程实例状态(wf_process_instance.state) ​

code名称说明生产路径
10进行中 (DOING)初始状态发起(start / startAndExecute)
20已完成 (FINISHED)正常走到 end末任务办结(complete)
30已撤回 (WITHDRAW)发起人撤回撤回(withdraw)
40强行终止 (INTERRUPT)管理员终止预留(当前无门面/引擎入口)
45已拒绝 (REJECT)驳回/拒绝驳回(reject)
50挂起 (PENDING)暂停预留(当前无门面/引擎入口)
99已废弃 (ABANDON)废弃预留(当前无门面/引擎入口)

40/50/99 为管理态预留值:当前八栈均无门面/引擎写入口(部分栈聚合根带方法但零生产调用者);它们作为读侧过滤值真实合法——processTask/doneList 状态集合含 30/40/99、stats 的 stateIn 缺省含 40/45/50(见规范 06)。事件码 9 INSTANCE_TERMINATED(实例写 40 后补发)当前同样只占号(见规范 11)。将来若开放管理入口(跨栈契约扩张,须 owner 批准),实现前须先落任务行映射(见下文状态转换规则)。

text
            start
              │
              ▼
         ┌───────┐    reject    ┌────────┐
         │  10   │─────────────▶│   45   │
         │ 进行中 │              │ 已拒绝  │
         └───┬───┘              └────────┘
             │ complete
             ▼
         ┌───────┐
         │  20   │
         │ 已完成 │
         └───────┘

图仅画主干迁移,全集见上表。

任务状态(wf_process_task.task_state) ​

code名称说明生产路径
10进行中 (DOING)初始状态任务创建(随办理生成)
20已完成 (FINISHED)完成办结(complete)
30已撤回 (WITHDRAW)随实例撤回随实例撤同级联
40强行终止 (INTERRUPT)随实例终止预留(当前无门面/引擎入口)
50挂起 (PENDING)随实例挂起预留(当前无门面/引擎入口)
99已废弃 (ABANDON)废弃(清理路径用语;驳回/跳转时对其余进行中任务的处置为可选实现,见 04 §驳回)会签废弃(一票否决)

废弃行的审计列不承诺统一(issues/209 §3.3 附带 → 队列 R87,2026-10-15 owner 拍 B):任务行被置 99 时 operator/update_user/update_time 三列写什么,八栈现读四形并存(逐栈细节见出处卡 C3-L2 L2-丙-5),spec 不出统一口径,跨栈门禁也没有能判这一面的格。集成方要"谁废的"就读引擎事件(废弃那条 fire 带 operator),别依赖这三列的跨栈一致性。将来若要钉档=跨栈契约扩张,须 owner 批准,且先补能把四形打红的判据格再动条文。

text
            create
              │
              ▼
         ┌───────┐   complete   ┌────────┐
         │  10   │─────────────▶│   20   │
         │ 进行中 │              │ 已完成  │
         └───┬───┘              └────────┘
             │ abandon
             ▼
         ┌───────┐
         │  99   │
         │ 已废弃 │
         └───────┘

图仅画主干迁移,全集见上表。

状态转换规则 ​

  • 任务状态转换是聚合根职责(ProcessTask.finish/abandon),引擎只做编排—— 设计论证见 设计原理 02 · 领域模型。
  • 任务状态随实例级命令级联落库:撤回/挂起/终止等聚合命令改完任务状态后, 随 updateInstance 同一连接持久化(v1.0.1 契约,见 规范 05 · SPI)。
  • 实例恢复时的任务行映射(预留路径,先约后行):实例从 40/50 恢复到 10 时, 任务级恢复守卫一律只认 INTERRUPT(40) → DOING(10);PENDING(50) 任务不还原、滞留 50(与八栈现行为一致)。 将来开放管理入口须按本条实现,"恢复即复活全部任务"不是合规变体。

jeeflow · 轻量级多语言工作流引擎