Documentation
¶
Overview ¶
Package node 定义节点执行接口、注册中心和配置校验扩展点。
节点实现按名称注册,运行时只负责消费 node.config 和 FlowContext, 前端配置表单由前端自己的 JSON Schema 或组件约定维护。 该包不关心 workflow 编排,也不关心 HTTP、gRPC 等具体节点的业务语义; 具体节点实现应放在业务项目或 flowlink-ext 这类扩展包中。
Index ¶
- Variables
- func DecodeConfig(config core.RawConfig, out interface{}) error
- type ConfigValidator
- type Definition
- type Func
- type Metadata
- type Node
- type Registry
- func (r *Registry) Get(name string) (Node, bool)
- func (r *Registry) Metadata(name string) (Metadata, bool)
- func (r *Registry) MetadataList() []Metadata
- func (r *Registry) Names() []string
- func (r *Registry) Register(name string, ex Node)
- func (r *Registry) RegisterDefinition(def Definition)
- func (r *Registry) RegisterNodeFunc(name string, fn Func)
- func (r *Registry) RegisterWithMetadata(metadata Metadata, ex Node)
- func (r *Registry) TryRegister(name string, ex Node) error
- func (r *Registry) TryRegisterDefinition(def Definition) error
- func (r *Registry) TryRegisterWithMetadata(metadata Metadata, ex Node) error
Constants ¶
This section is empty.
Variables ¶
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 ¶
Definition 是一个可注册节点的完整定义。 Metadata 描述编排时如何展示和配置,Executor 负责运行时执行。
type Func ¶
type Func func(fc *core.FlowContext, node *core.NodeDefine) (interface{}, error)
Func 将普通函数适配为 Node。
它主要用于业务代码快速注册轻量节点;复杂节点仍建议使用结构体实现 Node, 便于持有客户端、连接池或其他依赖。
type Metadata ¶
type Metadata struct {
Type string `json:"type"`
Name string `json:"name"`
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 一致。
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 (*Registry) MetadataList ¶
MetadataList 返回按 node type 稳定排序的节点编排元信息。
func (*Registry) Register ¶
Register 注册 node,失败时 panic。
它适合进程启动期的固定注册:注册失败代表程序配置错误,应尽早暴露。 运行时动态注册或测试断言应使用 TryRegister。
func (*Registry) RegisterDefinition ¶
func (r *Registry) RegisterDefinition(def Definition)
RegisterDefinition 注册完整节点定义,失败时 panic。
func (*Registry) RegisterNodeFunc ¶
RegisterNodeFunc 将函数注册为 node。
name 必须与前端保存到 workflow JSON 的 node.type 一致。
func (*Registry) RegisterWithMetadata ¶
RegisterWithMetadata 注册节点实现及其编排元信息,失败时 panic。
func (*Registry) TryRegister ¶
TryRegister 注册 node 并返回可处理的错误。
当前实现允许后注册的同名节点覆盖旧实现,方便测试或宿主按环境替换节点。 如果某个项目需要禁止覆盖,应在更上层的安装流程里做约束。
func (*Registry) TryRegisterDefinition ¶
func (r *Registry) TryRegisterDefinition(def Definition) error
TryRegisterDefinition 注册完整节点定义。