状态的两种承载形态与迁移
状态可以留在会话历史里,由模型自己归纳;也可以外置为任务对象,由程序维护。前者换会话即丢,后者换执行者不丢,但需要额外的读写与同步成本。
WHERE THE STATE LIVES
FORM A · IN SESSION
状态留在会话历史里
阶段、待办、已改文件都靠消息承载
谁执行,谁就拥有这份状态
换会话 → 状态断;压缩 → 状态可能被摘掉
FORM B · IN TASK OBJECT
状态外置为任务对象
阶段、待办、授权、产物登记在独立对象里
执行者只是可替换的资源
换执行者 → 重新绑定;崩溃 → 重新拉起
迁移
MIGRATION COST
迁移要做三件事:把会话里已被归纳的结论抽出来、给它定字段、让执行者每轮从对象读而不是从历史推。
THE PARTIAL MIGRATION THAT FAILS
只迁移一半比不迁移更糟
状态写进了对象,但执行者仍从会话历史推断当前阶段——两份状态会分叉,且没人知道哪份是真的。