Workflow Spec

表达 Workflow 工作流的定义语义。运行时通过 name 定位工作流,schema 描述由节点(nodes)与连线(edges)组成的执行图,并附带导出定义(exports)。

资源类型与自然键

资源类型自然键说明
WORKFLOW${name}工作流名称,作为自然键在定义资源内唯一

WorkflowSpecDTO

字段类型说明
namestring名称,作为工作流自然键
displayNamestring显示名称,对应 canonical metadata.displayName
categorystring分类,对应 canonical metadata.category
descriptionstring描述
schemaWorkflowSchemaDTO工作流 schema:节点、连线与导出定义

WorkflowSchemaDTO

字段类型说明
nodesList<WorkflowNodeDTO>节点列表
edgesList<WorkflowEdgeDTO>连线列表
exportsList<WorkflowExportDTO>导出定义列表;运行时可在实例完成后消费导出定义

协议约束:

  • WorkflowSchemaDTO 当前 canonical 主结构固定为 nodes / edges / exports
  • 当前不定义 variables / bindings / outputs / runtime / profile 等额外 workflow 顶层字段
  • workflow 级输入由 START 节点承担,workflow 级输出由 END 节点承担

WorkflowNodeDTO

所有节点的公共字段。type 决定 Jackson 多态反序列化的具体子类型与节点配置类型。

字段类型说明
idstring节点ID,必填
namestring节点名称,必填
typestring节点类型,必填;见下表
inputSchemaWorkflowVariableSchemaDTO输入 schema
outputSchemaWorkflowVariableSchemaDTO输出 schema

使用约定:

  • 节点 inputSchema / outputSchema 用于声明节点自己的输入输出契约
  • START 节点的 outputSchema 用于声明 workflow 可供后续节点消费的入口变量
  • END 节点的 outputSchema 用于声明 workflow 对外暴露的规范化输出
  • 节点间数据映射优先通过 edges + 节点配置中的模板引用表达,而不是新增 workflow 顶层绑定语义

节点类型映射

type对应 DTO配置 DTO说明
STARTStartWorkflowNodeDTOStartNodeConfigDTO开始节点
ENDEndWorkflowNodeDTOEndNodeConfigDTO结束节点
AGENT_TASKAgentWorkflowNodeDTOAgentNodeConfigDTOAgent 任务节点
ACTION_TASKLlmWorkflowNodeDTOLlmNodeConfigDTOLLM 动作节点
CODE_EXECUTIONFunctionWorkflowNodeDTOFunctionNodeConfigDTO函数执行节点
FUNCTIONFunctionWorkflowNodeDTOFunctionNodeConfigDTOCODE_EXECUTION 的历史别名,反序列化时映射到同一 DTO
WEBHOOKWebhookWorkflowNodeDTOWebhookNodeConfigDTOWebhook 调用节点
EXCLUSIVE_GATEWAYConditionWorkflowNodeDTOConditionNodeConfigDTO条件分支网关
LOOPLoopWorkflowNodeDTOLoopNodeConfigDTO循环节点
USER_TASKHumanApprovalWorkflowNodeDTOHumanApprovalNodeConfigDTO人工审批节点
SUB_WORKFLOWSubWorkflowWorkflowNodeDTOSubWorkflowNodeConfigDTO子工作流节点
ONTOLOGY_MUTATIONVariableSetWorkflowNodeDTOVariableSetNodeConfigDTO变量设置节点
WAIT_EVENTDelayWorkflowNodeDTODelayNodeConfigDTO延迟等待节点
PARALLEL_GATEWAYParallelWorkflowNodeDTOParallelNodeConfigDTO并行网关节点

未知类型会回退到 GenericWorkflowNodeDTO / GenericNodeConfigDTO。

_nodeConfigType 必须与节点 type 匹配;缺失或拼写错误会触发多态降级,导致 code / inputMapping 等具体配置字段被静默丢弃。历史上 FUNCTION 已并入 CODE_EXECUTION,但为兼容旧 spec 仍注册为别名。

扩展节点配置类型

以下 _nodeConfigType 没有对应的 WorkflowNodeDTO 子类,节点本体回退为 GenericWorkflowNodeDTO,但 config 仍按类型反序列化为专用配置 DTO:

_nodeConfigType配置 DTO说明
ONTOLOGY_QUERYOntologyQueryNodeConfigDTO本体查询
CONDITIONConditionEvalNodeConfigDTO条件求值
ONTOLOGY_TRAVERSEOntologyTraverseNodeConfigDTO本体遍历
ANALYSIS_OPERATORAnalysisOperatorNodeConfigDTO分析算子
DATASET_WRITEDatasetWriteNodeConfigDTO数据集写入
DATASET_QUERYDatasetQueryNodeConfigDTO数据集查询
RAW_SINKRawSinkNodeConfigDTO原始结果输出

节点配置

公共配置 WorkflowNodeConfigDTO

字段类型说明
_nodeConfigTypestring节点配置类型标识,用于 Jackson 多态反序列化;运行态不消费
labelstring未使用。节点标签,仅作为前端展示占位。
descriptionstring未使用。节点描述,仅作为前端展示占位。

StartNodeConfigDTO

字段类型说明
inputParamsList<StartInputParamDTO>开始节点的输入参数列表

约定:

  • START.config.inputParams 用于定义 workflow 运行入口表单与参数说明
  • 如需声明入口变量契约,需与 START.outputSchema 保持一致

EndNodeConfigDTO

字段类型说明
outputMappingsList<EndOutputMappingDTO>输出映射列表

约定:

  • END.config.outputMappings 用于将执行图中的中间结果收口为 workflow 最终输出
  • 如需对外暴露稳定结果契约,需与 END.outputSchema 保持一致
  • 运行时会执行 outputMappings,并将结果作为 workflow 的规范化输出

AgentNodeConfigDTO

字段类型说明
agentIdstringAgent ID
systemPromptstring系统提示词
toolsList<string>工具列表
modelstring模型
temperatureDouble温度
maxTokensInteger最大 Token 数
memoryBoolean是否开启记忆
outputSchemaMap<String, Object>输出 schema

LlmNodeConfigDTO

字段类型说明
modelstring模型
promptstring提示词
systemPromptstring系统提示词
temperatureDouble温度
maxTokensInteger最大 Token 数
responseFormatstring响应格式
jsonSchemaMap<String, Object>JSON schema
streamBoolean是否流式输出

FunctionNodeConfigDTO

字段类型说明
runtimestring运行时
codestring代码
entryPointstring入口函数
modestring函数执行模式:INLINE(默认)或 REFERENCE
executionModestring已废弃。历史执行模式字段,工作流不再调度推理算法
algorithmRefstring已废弃。历史算法引用字段
paramsMap<String, Object>参数映射
inputMappingMap<String, Object>输入映射:目标变量 → 表达式(支持 {{nodeId.field}} 插值)
dependenciesList<string>依赖列表
timeoutInteger超时时间(毫秒)
memoryInteger内存限制(MB)

约定:

  • CODE_EXECUTION 仍是函数节点的统一承载类型
  • 新配置优先使用 mode=INLINE + code,或 mode=REFERENCE + entryPoint / runtime
  • executionMode / algorithmRef 仅为历史兼容,不应在新 spec 中使用

WebhookNodeConfigDTO

字段类型说明
urlstring请求地址
methodstring请求方法
queryParamsMap<String, String>查询参数
headersMap<String, String>请求头
bodyObject请求体
timeoutObject超时时间
retryRetryPolicyDTO重试策略
outputMappingMap<String, String>输出映射
authTypestring认证类型
authUsernamestring认证用户名
authPasswordstring认证密码
authTokenstring认证 Token
authApiKeystringAPI Key
authApiKeyHeaderstringAPI Key 请求头名
outputSchemastring输出 schema 范围
responseMappingMap<String, String>响应提取映射(key → JSON path,如 $.data.total_count)
timeoutSecondsInteger请求超时秒数
allowPrivateBoolean是否允许访问内网/本地地址(默认拒绝)

ConditionNodeConfigDTO

字段类型说明
branchesList<ConditionBranchDTO>条件分支列表
defaultBranchIdstring默认分支ID

ConditionBranchDTO

字段类型说明
idstring分支ID
labelstring分支标签
modestring条件模式
fieldstring字段
operatorstring操作符
valueSourcestring值来源
valueTypestring值类型
valueObject常量值
valueExprstring值表达式
expressionstring完整表达式
conditionstring条件文本

LoopNodeConfigDTO

字段类型说明
modestring循环模式
iterateOverstring迭代变量表达式
conditionstring循环条件表达式
countObject循环次数
maxIterationsInteger最大迭代次数
parallelBoolean是否并行迭代
concurrencyInteger子流程并发度(1-8,默认 4)
continueOnErrorBoolean单迭代失败是否继续(默认 true)
perItemTimeoutSecondsInteger单子实例超时(秒,默认 120)
subWorkflowMap<String, Object>每迭代执行的子工作流(definitionKey / inputMapping)
inlineMap<String, Object>每迭代执行的内嵌子图(nodes / edges),与 subWorkflow 二选一

HumanApprovalNodeConfigDTO

字段类型说明
assigneestring审批人
approvalTypestring审批类型
timeoutInteger超时时间(毫秒)
timeoutActionstring超时动作
formSchemaMap<String, Object>表单 schema
messagestring审批消息

SubWorkflowNodeConfigDTO

字段类型说明
workflowIdstring子工作流ID
versionstring版本
inputsMap<String, String>输入映射(兼容字段)
outputsMap<String, String>输出映射(兼容字段)
asyncBoolean是否异步执行(兼容字段)
definitionKeystring子工作流 definition key
inputMappingMap<String, String>输入映射(变量求值)
outputMappingMap<String, String>输出映射(子实例上下文求值)
syncModestring执行模式:SYNC / ASYNC

VariableSetNodeConfigDTO

字段类型说明
variableNamestring变量名
valuestring变量值表达式

DelayNodeConfigDTO

字段类型说明
durationObject延迟时长
unitstring时间单位

ParallelNodeConfigDTO

字段类型说明
parallelTasksList<string>并行任务节点ID列表
failFastBoolean是否快速失败
concurrencyInteger并发数

GenericNodeConfigDTO

未知/未识别节点类型的回退配置。

字段类型说明
extraMap<String, Object>未使用。扩展属性占位字段。

WorkflowEdgeDTO

字段类型说明
idstring连线ID,必填
sourceNodeIdstring源节点ID,必填
targetNodeIdstring目标节点ID,必填
conditionExpressionstring条件表达式;条件网关出线必填
priorityInteger优先级,默认 0

变量结构

WorkflowVariableSchemaDTO

用于节点的 inputSchema / outputSchema。

字段类型说明
requiredList<string>必填字段名列表
propertiesMap<String, WorkflowVariablePropertyDTO>变量属性定义

WorkflowVariablePropertyDTO

字段类型说明
typestring变量类型
descriptionstring变量描述

开始节点输入参数

StartInputParamDTO

字段类型说明
namestring参数名
displayNamestring显示名称
typestring参数类型
requiredBoolean是否必填
defaultValueObject默认值
descriptionstring描述
itemTypestring数组元素类型
objectFieldsList<ObjectFieldDTO>对象字段
enumValuesList<string>枚举值
minNumber最小值
maxNumber最大值

ObjectFieldDTO

字段类型说明
namestring字段名
displayNamestring显示名称
typestring字段类型
requiredBoolean是否必填
descriptionstring描述
itemTypestring数组元素类型
objectFieldsList<ObjectFieldDTO>嵌套对象字段

结束节点输出映射

EndOutputMappingDTO

字段类型说明
keystring输出键
sourceObject变量来源表达式或结构化来源对象
typestring输出映射类型,例如 AGENT_VIEW
paramsMap<String, Object>结构化映射参数,用于复杂输出装配

重试策略

RetryPolicyDTO

字段类型说明
maxRetriesInteger最大重试次数
backoffstring退避策略
delayInteger退避延迟(毫秒)

导出定义

WorkflowExportDTO

字段类型说明
typestring导出类型
exportNamestring导出名称
displayNamestring显示名称
inputSchemaMap<String, Object>输入 schema
outputSchemaMap<String, Object>输出 schema
executionModestring执行模式
constraintsMap<String, Object>约束条件

使用约定:

  • exports 负责将 workflow 最终结果导出给外部消费者
  • 分析型 workflow 可使用 type=AGENT_VIEW_RESULT,由运行时将 END 节点输出投影为统一 AgentViewResultVO
  • constraints 可用于补充导出来源、投影方式等运行时约束

触发器

当前 WorkflowSpecDTO 与 WorkflowSchemaDTO 未定义独立的触发器(trigger)字段。工作流的入口由类型为 START 的开始节点唯一标识,运行时通过 name 发起工作流实例。

示例

apiVersion: foundry.loambase.ai/v1alpha1
kind: Workflow
metadata:
  name: reviewOrder
spec:
  name: reviewOrder
  description: 订单审批工作流
  schema:
    nodes:
      - id: start
        name: 开始
        type: START
        outputSchema:
          required: [orderId]
          properties:
            orderId:
              type: string
              description: 订单主键
        config:
          _nodeConfigType: START
          inputParams:
            - name: orderId
              displayName: 订单ID
              type: STRING
              required: true
      - id: llm_summary
        name: LLM 摘要
        type: ACTION_TASK
        config:
          _nodeConfigType: ACTION_TASK
          model: gpt-4o
          prompt: "请总结订单 {{orderId}} 的内容"
          temperature: 0.7
      - id: approve
        name: 人工审批
        type: USER_TASK
        config:
          _nodeConfigType: USER_TASK
          assignee: manager
          approvalType: SINGLE
          message: 请审批订单摘要
      - id: end
        name: 结束
        type: END
        outputSchema:
          properties:
            result:
              type: boolean
              description: 审批结果
        config:
          _nodeConfigType: END
          outputMappings:
            - key: result
              source: "{{approve.approved}}"
    edges:
      - id: e1
        sourceNodeId: start
        targetNodeId: llm_summary
      - id: e2
        sourceNodeId: llm_summary
        targetNodeId: approve
      - id: e3
        sourceNodeId: approve
        targetNodeId: end
    exports:
      - type: AGENT_VIEW_RESULT
        exportName: defaultView
        displayName: 默认视图
        executionMode: SYNC
        constraints:
          sourceNodeId: end

消费位置

  • foundry-workflow-biz / WorkflowDomainProjectionAdapter:保留为 DomainProjectionHandler 注册空实现,不执行写库投影。
  • foundry-workflow-biz / WorkflowDefinitionService:运行时从 fd_definition_resource_version 读取 WorkflowSpecDTO。
    • name、description 投影到 WorkflowDefinitionEntity。
    • schema 经 WorkflowSpecMapper 转换为 WorkflowDefinitionSchemaDTO 后供运行态引擎使用。
  • foundry-workflow-biz / WorkflowSpecMapper:将 nodes、edges、exports 及节点 inputSchema / outputSchema 全量映射到运行态;不引入额外 workflow 顶层字段。

相关文档

  • 核心概念 — CanonicalSpec、ResourceRef 与投影框架
  • Bundle API — 定义资源 Bundle 的导入/导出契约