node

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: 9 Imported by: 0

Documentation

Overview

Package node 定义节点执行接口、注册中心和配置校验扩展点。

节点实现按名称注册,运行时只负责消费 node.config 和 FlowContext, 前端配置表单由前端自己的 JSON Schema 或组件约定维护。 该包不关心 workflow 编排,也不关心 HTTP、gRPC 等具体节点的业务语义; 具体节点实现应放在业务项目或 flowlink-ext 这类扩展包中。

Index

Constants

View Source
const (
	// DefaultVersion 是未显式声明版本的节点使用的实现版本。
	DefaultVersion = "1.0.0"
	// DefaultSchemaVersion 是未显式声明版本的节点配置协议版本。
	DefaultSchemaVersion = 1
)

Variables

View Source
var (
	// ErrNodeNameRequired 表示注册 node 时缺少注册名。
	ErrNodeNameRequired = errors.New("node name is required")
	// ErrNodeRequired 表示注册 node 时缺少实现。
	ErrNodeRequired = errors.New("node implementation is required")
	// ErrNodeDisplayNameRequired 表示完整节点定义缺少展示名称。
	ErrNodeDisplayNameRequired = errors.New("node display name is required")
	// ErrNodeDefaultConfigRequired 表示完整节点定义缺少默认配置对象。
	ErrNodeDefaultConfigRequired = errors.New("node default config is required")
	// ErrNodeConfigSchemaRequired 表示完整节点定义缺少配置 Schema。
	ErrNodeConfigSchemaRequired = errors.New("node config schema is required")
)

Functions

func DecodeConfig

func DecodeConfig(config core.RawConfig, out interface{}) error

DecodeConfig 将节点 RawConfig 填充到强类型配置结构中。

它使用 JSON 编解码作为结构转换边界,保证 map、数组和基础类型的行为 与前端提交的 JSON 配置保持一致。out 必须是可写入的指针。

Types

type ConfigValidator

type ConfigValidator interface {
	ValidateConfig(ctx context.Context, node *core.NodeDefine) []*schema.ValidationError
}

ConfigValidator 是 node 可选实现的自定义配置校验接口。

type Definition

type Definition struct {
	Metadata Metadata
	Executor Node
}

Definition 是一个可注册节点的完整定义。 Metadata 描述编排时如何展示和配置,Executor 负责运行时执行。

type Func

type Func func(fc *core.FlowContext, node *core.NodeDefine) (interface{}, error)

Func 将普通函数适配为 Node。

它主要用于业务代码快速注册轻量节点;复杂节点仍建议使用结构体实现 Node, 便于持有客户端、连接池或其他依赖。

func (Func) Execute

func (fn Func) Execute(fc *core.FlowContext, node *core.NodeDefine) (interface{}, error)

Execute 调用底层函数实现节点执行。

type Metadata

type Metadata struct {
	Type          string                 `json:"type"`
	Name          string                 `json:"name"`
	Version       string                 `json:"version"`
	SchemaVersion int                    `json:"schemaVersion"`
	Deprecated    bool                   `json:"deprecated"`
	Description   string                 `json:"description,omitempty"`
	Category      string                 `json:"category,omitempty"`
	Icon          string                 `json:"icon,omitempty"`
	Tags          []string               `json:"tags,omitempty"`
	UI            map[string]interface{} `json:"ui,omitempty"`
	DefaultConfig core.RawConfig         `json:"defaultConfig,omitempty"`
	ConfigSchema  *schema.Schema         `json:"configSchema,omitempty"`
}

Metadata 描述一个可执行节点在编排器中的展示和配置约束。 Type 必须与 workflow JSON 中的 node.type 一致。

func NormalizeMetadata added in v0.2.0

func NormalizeMetadata(metadata Metadata) Metadata

NormalizeMetadata 补齐节点能力协议需要的稳定版本信息。

type Node

type Node interface {
	Execute(fc *core.FlowContext, node *core.NodeDefine) (interface{}, error)
}

Node 是节点业务逻辑的最小执行接口。

实现方读取 node.config 和 FlowContext,返回任意结果或 error 给 runtime。 FlowContext 本身携带取消和超时信号,节点无需再接收单独的 context.Context。 实现方必须把它传给阻塞 I/O,或在长时间计算中检查 Done/Err;runtime 不会强制终止 不响应 context 的 Go 调用。 节点返回普通值表示执行成功;如需表达“业务拒绝但非 Go error”,可以返回 core.NodeResult。

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

Registry 保存 node type 到节点实现的映射。

workflow JSON 中的 node.type 会通过 Registry 查找实际执行对象。 Registry 只负责注册和查找,不负责节点配置校验、生命周期管理或依赖注入。

func NewRegistry

func NewRegistry() *Registry

NewRegistry 创建一个空 node 注册中心。

func (*Registry) Get

func (r *Registry) Get(name string) (Node, bool)

Get 按 node type 读取节点实现。

func (*Registry) Metadata

func (r *Registry) Metadata(name string) (Metadata, bool)

Metadata 返回指定节点的编排元信息。

func (*Registry) MetadataList

func (r *Registry) MetadataList() []Metadata

MetadataList 返回按 node type 稳定排序的节点编排元信息。

func (*Registry) Names

func (r *Registry) Names() []string

Names 返回已注册 node type 的稳定排序列表。

稳定排序便于控制面展示、测试快照和诊断输出。

func (*Registry) Register

func (r *Registry) Register(name string, ex Node)

Register 注册 node,失败时 panic。

它适合进程启动期的固定注册:注册失败代表程序配置错误,应尽早暴露。 运行时动态注册或测试断言应使用 TryRegister。

func (*Registry) RegisterDefinition

func (r *Registry) RegisterDefinition(def Definition)

RegisterDefinition 注册完整节点定义,失败时 panic。

func (*Registry) RegisterNodeFunc

func (r *Registry) RegisterNodeFunc(name string, fn Func)

RegisterNodeFunc 将函数注册为 node。

name 必须与前端保存到 workflow JSON 的 node.type 一致。

func (*Registry) RegisterWithMetadata

func (r *Registry) RegisterWithMetadata(metadata Metadata, ex Node)

RegisterWithMetadata 注册节点实现及其编排元信息,失败时 panic。

func (*Registry) TryRegister

func (r *Registry) TryRegister(name string, ex Node) error

TryRegister 注册 node 并返回可处理的错误。

当前实现允许后注册的同名节点覆盖旧实现,方便测试或宿主按环境替换节点。 如果某个项目需要禁止覆盖,应在更上层的安装流程里做约束。

func (*Registry) TryRegisterDefinition

func (r *Registry) TryRegisterDefinition(def Definition) error

TryRegisterDefinition 注册完整节点定义。

func (*Registry) TryRegisterWithMetadata

func (r *Registry) TryRegisterWithMetadata(metadata Metadata, ex Node) error

TryRegisterWithMetadata 注册节点实现及其编排元信息。

Jump to

Keyboard shortcuts

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