Chapter 4 Official Docs Note

第 4 章 Temporal 文档

第 4 章把 Workflow 看成可接收消息的有状态服务:Signal 改变运行中流程,Query 读取状态,Update 提供同步且可跟踪的写入请求。

官方锚点

本章必须带走的事实

Workflow 可以接收消息

Temporal 文档把 Workflow 类比为可接收消息的有状态服务。

Query 是读取请求

Query 读取当前 Workflow 状态,不应改变 Workflow,也不会写入 Event History。

Signal 是异步写请求

Signal 会改变运行中 Workflow 的状态,但发送方不能等待处理结果或错误。

Update 是同步可跟踪写请求

Update 允许发送方等待完成结果或失败错误,适合同步读写交互。

长等待不是睡眠线程

长运行 Workflow 通过历史、事件和状态恢复继续推进,而不是依赖常驻线程内存。

读取方式要匹配目标

只读通常用 Query;需要在状态达到某条件时读到结果,可考虑 Update 或 Query 轮询。

本章对应的执行链

  1. 救援流程进入等待外部审批的阶段。
  2. 家属或柜台发送 Signal,把新决定写入运行中的 Workflow。
  3. 柜台通过 Query 读取当前阶段和等待点。
  4. Workflow 将可改变状态的消息纳入自己的持久状态转移。
  5. Event History 记录会影响后续恢复的事实。
  6. 流程跨过多天等待后仍能按已记录状态继续推进。

结尾自检

  1. Signal 和 Query 最大区别是什么?
  2. 为什么 Query 不适合改变 Workflow 状态?
  3. 什么时候 Update 比 Signal 更合适?
  4. 为什么长运行 Workflow 不是一个一直睡着的线程?