definition

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Jul 7, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// NodeStart 开始节点
	NodeStart = "start"
	// NodeEnd 结束节点
	NodeEnd = "end"
	// NodeTool 工具节点
	NodeTool = "tool"
	// NodeSubWorkflow 子工作流节点
	//  子工作流共享 TaskID
	//	子节点写入父 Context
	//  SubWorkflow 是 Sync Node
	//	支持 InputMapping
	//  定义方式:
	// {
	//  "name": "frame_pipeline",
	//  "type": "subworkflow",
	//  "depends_on": ["loop_images"],
	//  "config": {
	//     "workflow": "frame_generation_workflow"
	//  },
	//  "input_mapping": {
	//     "image": "loop_images.image",
	//     "prompt": "prompt_enhance.prompt"
	//  }
	// }
	NodeSubWorkflow = "subworkflow"
	// NodeMap
	// {
	//  "name": "map_generate_video",
	//  "nodes": [
	//    {
	//      "name": "map_images",
	//      "type": "map",
	//      "config": {
	//        "items": "input.images",
	//        "iterator": "image",
	//        "workflow": "image_to_video_generate",
	//        "parallel": 4
	//      }
	//    }
	//  ]
	// }
	NodeMap = "map" // 并行生产

	NodeLoop = "loop" // 连续叙事能力的节点

	// NodeAwait 等待外部事件/输入的节点
	// 该节点的核心语义不是执行一个长任务,而是在运行到当前节点时:
	// 1. 创建等待订阅(AwaitBinding)
	// 2. 将任务挂起
	// 3. 等待 webhook / signal / poll 等外部来源唤醒
	NodeAwait = "await"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type EdgeDefinition

type EdgeDefinition struct {
	From string   `json:"from"` // 源节点Name
	To   string   `json:"to"`   // 目标节点Name
	Type EdgeType // edge类型
	// 分支条件(核心)
	Condition string `json:"condition,omitempty"` // 条件表达式 expr 表达式(可选)(如:"hit == true")
	// switch case(可选)
	CaseKey  string `json:"case_key,omitempty"` // 分支枚举值(如:"true"/"false")
	Label    string // UI 显示
	Priority int    // 多分支优先级
}

EdgeDefinition 工作流中边的定义,也是工作流中的控制流(Condition / Case)

type EdgeType

type EdgeType string

EdgeType 描述拓扑关系,工作流定义中边的类型

const (
	EdgeNormal EdgeType = "normal"

	EdgeCondition EdgeType = "condition"
)

type NodeDefinition

type NodeDefinition struct {
	Name         string            `json:"name"`
	Label        string            `json:"label,omitempty"` // 面向客户端的展示名,不影响执行语义和版本
	Type         NodeType          `json:"type"`
	Weight       float64           `json:"weight"` // Weight 0~1 节点权重,关系到节点进度的计算
	Version      string            `json:"version"`
	InputMapping map[string]string `json:"input_mapping"` // 表达式输入
	Config       map[string]any    `json:"config"`        // 静态配置
}

NodeDefinition 描述工作流中一个节点的定义,也是工作流中的数据流

type NodeType

type NodeType string

type OutputDefinition

type OutputDefinition struct {
	ResultType     string `json:"result_type"`      // 固定值,如 "video"
	PrimaryFileUrl string `json:"primary_file_url"` // 表达式,如 "nodes.upload_result.output.url"
	CoverUrl       string `json:"cover_url"`        // 表达式
	PreviewUrl     string `json:"preview_url"`      // 表达式
	Width          string `json:"width"`            // 表达式
	Height         string `json:"height"`           // 表达式
	Duration       string `json:"duration"`         // 表达式

	// 允许通过表达式注入一些业务自定义字段
	Extras map[string]string `json:"extras"` // Value 也是表达式
}

OutputDefinition 定义了如何从节点中提取数据来填充最终的 WorkflowOutput

type OutputSliceDefinition

type OutputSliceDefinition struct {
	Tool         string            `json:"tool"`
	Config       map[string]any    `json:"config,omitempty"`
	InputMapping map[string]string `json:"input_mapping,omitempty"`
	Version      string            `json:"version,omitempty"`
}

OutputSliceDefinition 定义工作流产出的一个「切片/视图」构建器。

每个切片代表一种业务视角的输出再加工——它们不参与 DAG 执行, 只由各自的业务 Service 从已完成的 task_nodes 动态再生数据:

  • creative_detail → 创意详情(CreativeDetailService)
  • timeline → 视频时间轴(VideoTimelineService)
  • 将来可扩展:subtitles(字幕轨道)、thumbnail_strip(缩略图故事板)等

OutputSlice 是工作流定义对"输出还能怎么被消费"的开放式扩展点—— 新增切片只需在 output_slices map 中添加一个 key,无需修改 WorkflowDefinition 结构体。

type WorkflowDefinition

type WorkflowDefinition struct {
	Name         string                            `json:"name"`
	Nodes        []NodeDefinition                  `json:"nodes"`
	Edges        []EdgeDefinition                  `json:"edges"`
	Output       OutputDefinition                  `json:"output"`
	OutputSlices map[string]*OutputSliceDefinition `json:"output_slices,omitempty"`
	Desc         string                            `json:"description"`
}

func (*WorkflowDefinition) Hash

func (def *WorkflowDefinition) Hash() string

Jump to

Keyboard shortcuts

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