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 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 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
Click to show internal directories.
Click to hide internal directories.