Skip to main content

BLOGE 0.9.8-RC1 在线版 · 事实校验 2026-09-15 · English

附录 B —— Session 速查表

请先读第 14 章。编写或排查多轮 session 时再回到这里。

选择边界

需求使用不要使用
一次外部挂起与恢复Graph await只有一轮的伪 session
外部反复交互,每轮处理相似session手工包住 HTTP 请求的循环
命名业务状态与回退迁移state_machine用 phase 名伪装 state

Phase 卡片

项目必须回答的问题
ONCEROUND该 phase 只运行一次,还是每个 signal 都运行一次?
max_rounds什么有限预算能终止失控对话?
until哪个可观察结果结束 phase?
signal schema这个边界允许什么 payload?
timeout / idle timeout没有 signal 时,等待如何结束?
owner哪个外层运行时拥有身份、恢复与终止?

运行时动作

动作含义应保留的证据
start创建一个稳定 session identityDefinition version 与初始 context
signal交付一次经过校验的 round payloadSignal type、correlation identity、接受/拒绝结果
restore从最后一个持久快照恢复Snapshot version 与原始 deadline
terminate因策略而非正常 until 结束稳定 reason 与最终 status

失败扫描

  • 无效 signal 必须在修改 round state 前被拒绝。
  • Phase 与 session 轮数上限必须有限。
  • 测试迟到、重复与并发 signal。
  • 声称崩溃恢复时使用 bloge-session-durable;内存 session 不构成持久性证据。
  • 嵌套编排中的外部 signal 必须先进入声明的外层 owner。

主线请看第 14 章第 16 章。精确契约请查 BLOGE 源码树中的 docs/session-phase-round-specification.mdbloge-session-extbloge-session-durable