runtime

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2026 License: MIT Imports: 12 Imported by: 3

Documentation

Overview

Package runtime 执行 planner 生成的 plan,并驱动 node 完成节点运行。

runtime 负责串行、并行、条件、输入输出映射、节点策略、事件和 trace 收集等执行期行为。

Index

Constants

This section is empty.

Variables

View Source
var ErrRunnerRequired = errors.New("workflow runner is required")

ErrRunnerRequired 表示生成执行报告时没有传入 runner。

View Source
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

type NodeRejectedError struct {
	Message string
	Output  map[string]interface{}
}

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

func NewRuntime(registry *node.Registry, sink event.Sink) *Runtime

NewRuntime 创建 Runtime。

registry 为空时使用新的空注册中心;sink 为空时使用 NopSink。 这使得 Runtime 在测试和纯内存执行场景下可以安全运行,不会因为未配置外部事件系统而失败。

func (*Runtime) Run

func (r *Runtime) Run(wf *core.Workflow, fc *core.FlowContext) (*core.WorkflowResult, error)

Run 直接执行 workflow 原始定义。

该入口适合跳过 planner 的简单场景或测试。生产路径通常应优先使用 plan.Assembly.Build 生成 Plan 后再执行,这样 trace 和调试视图能拿到 planner 生成的节点坐标。

func (*Runtime) RunPlan

func (r *Runtime) RunPlan(plan *core.Plan, fc *core.FlowContext) (*core.WorkflowResult, error)

RunPlan 执行 planner 生成的 Plan。

Plan 中包含父子关系、深度、索引和路径等 runtime 坐标;执行已发布 workflow 时, worker 可以缓存 Plan 并重复调用该入口,避免每次请求重新规划。

type WorkflowLoader

type WorkflowLoader interface {
	Load(ctx context.Context, workspace string, workflowID string, version string) (*core.Workflow, error)
}

WorkflowLoader 按发布坐标加载 workflow 定义。

该接口保留给 runtime 级别的窄集成;业务 worker 通常通过 plan 的 workflow 来源接入。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL