Documentation
¶
Overview ¶
Package runtime 执行 planner 生成的 plan,并驱动 node 完成节点运行。
runtime 负责串行、并行、条件、输入输出映射、节点策略、事件和 trace 收集等执行期行为。
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrRunnerRequired = errors.New("workflow runner is required")
ErrRunnerRequired 表示生成执行报告时没有传入 runner。
var ErrTraceExportFailed = errors.New("trace export failed")
ErrTraceExportFailed 表示 workflow 已执行结束,但至少一个 trace exporter 写出失败。
对外只返回稳定的通用错误,exporter 的底层连接错误不得进入执行响应或 trace。
Functions ¶
This section is empty.
Types ¶
type ExecutionReport ¶
type ExecutionReport struct {
Result *core.WorkflowResult `json:"result,omitempty"`
Plan *core.Plan `json:"plan,omitempty"`
Events []*event.Event `json:"events,omitempty"`
Stats *ExecutionStats `json:"stats,omitempty"`
}
ExecutionReport 汇总一次调试执行的结果、执行计划和 trace 事件。
它比 WorkflowResult 更重,主要用于控制面试跑、研发排障和本地工具。 高吞吐业务路径应返回 WorkflowResult,避免把 plan 和事件列表放进每次响应。
func ExecuteReport ¶
func ExecuteReport(ctx context.Context, runner Runner, workflow *core.Workflow, envelope *core.Envelope) (*ExecutionReport, error)
ExecuteReport 运行 workflow 并尽量收集 result、plan 和 events。
如果 runner 同时支持 plan 构建和 plan 执行,报告会包含完整 Plan; 否则只返回 result 和 events。即使执行失败,也会尽量返回已经收集到的 plan 和 events。
type ExecutionStats ¶
type ExecutionStats struct {
EventCount int `json:"eventCount"`
NodeCount int `json:"nodeCount"`
SucceededNodeCount int `json:"succeededNodeCount"`
FailedNodeCount int `json:"failedNodeCount"`
SkippedNodeCount int `json:"skippedNodeCount"`
RetryCount int `json:"retryCount"`
LogCount int `json:"logCount"`
DurationMs int64 `json:"durationMs"`
}
ExecutionStats 是一次 workflow 执行的追踪统计摘要。
func SummarizeEvents ¶
func SummarizeEvents(events []*event.Event) *ExecutionStats
SummarizeEvents 汇总一次运行已经产生的追踪事件。
type NodeRejectedError ¶
NodeRejectedError 表示节点主动返回了业务拒绝结果。
它和 Go error 一样会进入 retry/onError 策略,但来源更明确:节点执行成功, 只是业务判断不通过。
func (*NodeRejectedError) Error ¶
func (e *NodeRejectedError) Error() string
type PlanRunner ¶
type PlanRunner interface {
RunPlan(ctx context.Context, plan *core.Plan, envelope *core.Envelope) (*core.WorkflowResult, error)
}
PlanRunner 执行 planner 已经生成好的 plan。
支持该接口的执行器可以缓存 plan,或在报告中暴露 planner 生成的结构坐标。
type ReportRunner ¶
type ReportRunner interface {
RunReport(ctx context.Context, workflow *core.Workflow, envelope *core.Envelope) (*ExecutionReport, error)
}
ReportRunner 表示 runner 自身可以直接返回 ExecutionReport。
如果 runner 实现了该接口,控制面可以使用 runner 的原生报告能力,而不需要通过 ExecuteReport 做降级组合。
type Runner ¶
type Runner interface {
Run(ctx context.Context, workflow *core.Workflow, envelope *core.Envelope) (*core.WorkflowResult, error)
}
Runner 执行完整 workflow 定义。
这是 runtime 调试和 plan 入口之间的最小接口,便于不同执行器复用 ExecuteReport。
type Runtime ¶
type Runtime struct {
// contains filtered or unexported fields
}
Runtime 是 FlowLink 的默认执行器。
它只负责执行期行为:根据 node.Registry 找到节点实现,解释 serial/parallel/condition 等结构节点,按节点策略处理超时、重试和失败,并把执行事件写入 event.Sink。 workflow 校验和 planner 不在 Runtime 内完成,调用方应在进入 Runtime 前处理。
func NewRuntime ¶
NewRuntime 创建 Runtime。
registry 为空时使用新的空注册中心;sink 为空时使用 NopSink。 这使得 Runtime 在测试和纯内存执行场景下可以安全运行,不会因为未配置外部事件系统而失败。