feat: expose workflow state events and persist signal transitions

This commit is contained in:
2026-09-18 09:27:45 +08:00
parent 082898e705
commit a4d9900e2c
34 changed files with 1499 additions and 27 deletions

View File

@@ -12,7 +12,7 @@
- [完整命令、输入输出与失败处理](workflow.md)、[独立SDK源码](../../sdk/go/examples/workflow/main.go)。
- 两个任务并行处理并汇合,计时等待后接收显式目标代次的信号,再执行后续任务;最终三个任务完成并有界排空。
- 启动及信号原键重复不会建立新的实例或信号。
- 启动及信号原键重复不会建立新的实例或信号;分页查看原状态事件,核对信号消费及赢家等待。
## 已可运行:业务事务与任务提交Outbox

View File

@@ -13,7 +13,7 @@ chmod 700 .local
go run ./cmd/orbit-admin bootstrap \
--application workflow-example --namespace default --environment development \
--queue workflows --workflow-access --workflow-run-access \
--workflow-signal-access --worker-access \
--workflow-signal-access --workflow-audit-access --worker-access \
--output .local/workflow.credentials.json
go run ./cmd/orbit
```
@@ -31,7 +31,7 @@ go run ./examples/workflow
## 2. 调用链与输出
CreateWorkflowDefinition → PublishWorkflowVersion(v1) → StartWorkflow → 原键再次StartWorkflow → 自动Worker并行执行 → GetWorkflowStep读取当前信号契约与代次 → SendWorkflowSignal → 原键再次发送 → 后继任务完成 → GetWorkflow → GetWorkflowSteps和GetTaskSource核对三个任务的固定来源 → Worker有界排空。
CreateWorkflowDefinition → PublishWorkflowVersion(v1) → StartWorkflow → 原键再次StartWorkflow → 自动Worker并行执行 → GetWorkflowStep读取当前信号契约与代次 → SendWorkflowSignal → 原键再次发送 → 后继任务完成 → GetWorkflow → GetWorkflowSteps和GetTaskSource核对三个任务的固定来源 → 读取历史激活与信号 → 分页读取状态事件并核对消费记录 → Worker有界排空。
预期输出中的ID每次运行不同:
@@ -39,6 +39,7 @@ CreateWorkflowDefinition → PublishWorkflowVersion(v1) → StartWorkflow →
workflow=<32位实例ID> state=SUCCEEDED result={"text":"HELLO ORBIT"} start_deduplicated=true signal_deduplicated=true
workflow_sources_verified=3 fixed_version=v1
workflow_history_verified=true signal_state=CONSUMED
workflow_timeline_verified=true events=<事件数> signal_transition=PENDING->CONSUMED
worker_drained=true started=3 confirmed=3
```
@@ -56,4 +57,8 @@ worker_drained=true started=3 confirmed=3
[公共SDK集成测试](../../sdk/go/workflow_instances_integration_test.go)还实际运行:启动响应丢失的原键恢复;暂停/继续、定时等待、信号消费和取消;UNKNOWN执行核查、步骤结论及解除核查;剩余尝试内TASK重试与SIGNAL换代;确认PENDING后沿原查询预算继续。使用`make integration`在一次性环境复现。
历史激活和信号列表已接入,示例核对指定历史等待的winner与信号CONSUMED状态。实例筛选分页、更多独立业务示例及生产验收仍按[计划](../08-development-plan.md)推进。
历史激活和信号列表已接入,示例核对指定历史等待的winner与信号CONSUMED状态。[实例筛选分页](workflow-query.md)已接入;更多独立轮询/恢复示例及生产验收仍按[计划](../08-development-plan.md)推进。
## 5. 状态事件审计
例子使用显式审计权限,按每页5条调用ListWorkflowEvents,再用GetWorkflowEvent展开已消费信号,核对原状态PENDING和历史等待ID。当前成功流程的事件仍保留早先WAITING等状态。事件数量可能随实际推进次数变化,不将数量写死为业务契约;示例会确认必要消费事件存在。字段、分页限制和旧版本历史缺口见[时间线手册](../api/workflow-events.md)。