活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 出海产品促销专区 NEW 爆款云主机低至2折,高性价比,不限新老速来抢购!
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      函数计算

      函数计算

      • 函数计算

      无数据

        • 产品公告
        • 【产品变更】函数计算服务正式商业化公告
        • 产品动态
        • DeepSeek专题
        • DeepSeek专题导航
        • 图解:DeepSeek与公有云深度融合
        • 从基础设施到智能中枢:DeepSeek如何重塑公有云服务价值链
        • 高性能GPU云主机助力DeepSeek深度应用
        • 天翼云SD-WAN与DeepSeek超强联动,开启云上高效互联新时代
        • 实践指南:DeepSeek驱动高效能云生态
        • GPU云主机/弹性云主机:零基础搭建DeepSeek云端环境指南
        • GPU物理机:物理机搭建DeepSeek指南
        • SD-WAN跨境:SD-WAN助力DeepSeek模型定向加速
        • 智算容器:云容器引擎与DeepSeek融合实践
        • 函数计算:天翼云函数计算与DeepSeek大模型
        • 天翼云函数计算一键部署DeepSeek大模型
        • Q&A:典型问题解析与策略应对
        • 产品介绍
        • 什么是函数计算
        • 应用场景
        • 基本概念
        • 产品功能
        • 产品优势
        • 计费说明
        • 计费概述
        • 按量付费
        • 资源包
        • 试用资源包
        • 欠费说明
        • 计费FAQ
        • 快速入门
        • 新手入门
        • 用户指南
        • 应用管理
        • 应用中心简介
        • 管理应用
        • 管理环境
        • 管理流水线
        • 函数创建
        • 标准运行时函数创建
        • 自定义运行时函数创建
        • 容器镜像函数创建
        • 函数配置
        • 版本管理
        • 别名管理
        • 配置环境变量
        • 配置层
        • 配置网络
        • 配置固定公网IP地址
        • 配置存储
        • 配置ZOS对象存储
        • 配置NAS文件存储
        • 配置预留实例
        • 配置单实例并发度
        • 事件触发
        • 触发器简介
        • 触发器管理
        • 触发器事件消息格式
        • 定时触发器
        • HTTP触发器
        • 云原生网关触发器
        • Kafka触发器
        • RocketMQ触发器
        • 事件总线类触发器
        • 概述
        • 日志触发器
        • 对象存储触发器
        • RabbitMQ触发器
        • MQTT触发器
        • 代码开发
        • 代码开发概述
        • Node.js
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • Python
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • Java
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • Go
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • C#
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • PHP
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • 自定义运行时
        • 环境说明
        • 基本原理
        • Web函数
        • 上下文和日志格式
        • 容器镜像函数
        • 容器镜像函数介绍
        • 创建容器镜像函数
        • 上下文及日志格式
        • 函数调用
        • 访问函数
        • 同步调用
        • 异步调用
        • 功能概览
        • 重试策略
        • 结果回调
        • 异步任务
        • 函数实例
        • 实例类型及使用模式
        • 云工作流
        • 功能简介
        • 什么是云工作流(CloudFlow)
        • 功能特性
        • 基本概念
        • 快速入门
        • 创建流程
        • 执行流程
        • 流程定义
        • 工作流概述
        • 工作流简介
        • 快速工作流和标准工作流
        • 工作流定义
        • 流程定义介绍
        • 状态流转
        • 数据传递
        • 输入和输出
        • 内置函数
        • 错误处理
        • 控制台操作
        • 创建工作流
        • 执行角色
        • 工作流执行
        • 流程执行简介
        • 流程执行管理
        • 工作流设计器
        • 工作流调度
        • 工作流调度简介
        • 定时触发器
        • HTTP触发器
        • 云原生网关触发器
        • Kafka触发器
        • RocketMQ触发器
        • 指标监控
        • 工作流集成
        • 集成简介
        • 服务集成模式
        • 普通集成
        • HTTP集成
        • 函数计算集成
        • 云工作流集成
        • 可观测性
        • 监控指标
        • 实例指标
        • 函数指标
        • 日志
        • 配置日志
        • 打印函数日志
        • 高级功能
        • 域名管理
        • 配置自定义域名
        • 为自定义域名配置JWT认证鉴权
        • 层管理
        • 创建自定义层
        • 官方层使用示例
        • 自定义层使用示例
        • 弹性管理
        • 实例伸缩规则及限制
        • 并发实例上限配置
        • 审计事件
        • 安全与合规
        • IAM访问控制
        • 身份管理
        • 基于身份的权限策略
        • 服务内联委托
        • 权限访问管理
        • 授权函数计算访问其他云函数
        • 授权事件源访问函数计算
        • 常见问题
        • 开通类
        • 通用类
        • 应该什么时候使用函数计算,什么时候使用弹性云主机?
        • 是否可以访问运行函数的机器?
        • 代码开发
        • 可以使用什么语言编写函数?
        • 如何保证代码的安全?
        • 运行环境中所依赖的包如何自动安装?
        • 函数管理
        • 什么是VPC?
        • 如何监控函数执行?
        • 如何用函数访问VPC内的资源?
        • 函数可以访问多少个VPC?
        • 在VPC中的函数如何访问公网?
        • 函数运行时间超过函数最大Timeout时间怎么办?
        • 函数执行超时,报错Function time out after怎么办?
        • 函数实例
        • 如何弹性扩展函数的执行?
        • 如何让实例一直存活不销毁,消除冷启动延时的影响?
        • 如何通过ipv6网络访问函数?
        • 事件触发
        • 触发器不能正常触发函数执行怎么办?
        • 访问其他服务
        • 在函数中如何访问其他服务?
        • 最佳实践
        • 通过函数计算访问VPC内的MySQL实例
        • 函数计算Java冷启动优化最佳实践
        • 通过函数计算部署通义千问
        • 通过云工作流和函数计算对视频分片转码
        • API参考
        • API使用说明
        • 相关协议
        • 函数计算产品服务协议
        • 函数计算服务等级协议
          无相关产品

          本页目录

          帮助中心函数计算用户指南云工作流流程定义工作流定义状态流转
          状态流转
          更新时间 2025-07-28 09:07:34
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2025-07-28 09:07:34
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接

          本文为您提供工作流中状态类型的整体介绍,包括暂停(Sleep)、操作(Operation)、传递(Noop)、条件分支(Switch)、迭代(Foreach)和并行(Parallel)状态,帮助您理解其功能和应用,助力复杂流程的构建与管理。

          整体介绍

          工作流状态是流程定义的核心组件,用于实现特定的逻辑、控制和执行操作。以下六种状态类型各具特色,满足从延迟执行、API调用到条件判断、并行处理的多样化需求:

          • 暂停(Sleep)状态:在工作流中引入时间延迟,支持相对时长或绝对时间点暂停,适用于定时任务或等待场景。

          • 操作(Operation)状态:执行具体功能,如调用云服务API、函数或第三方HTTP请求,是工作流中任务执行的基础。

          • 传递(Noop)状态:作为占位符或数据转换工具,传递输入数据,常用于流程设计初期的调试和规划。

          • 条件分支(Switch)状态:根据条件表达式选择执行路径,类似编程中的switch-case,灵活控制流程方向。

          • 迭代(Foreach)状态:并行遍历输入数组,对每个元素执行处理器逻辑,类似foreach循环,高效处理批量数据。

          • 并行(Parallel)状态:并行执行多个分支,合并各分支结果,适用于需要同时处理多项任务的场景。

          这些状态通过组合使用,支持动态、健壮且高效的工作流设计。

          状态介绍

          暂停(Sleep)状态

          本节将为您详细介绍暂停状态(Sleep)的功能及其应用示例,帮助您在工作流中实现流程的暂停与延续。

          基本概念

          暂停状态(Sleep)用于在工作流中暂停执行一段指定时间,之后继续后续流程。
          您可以设置一个相对时长(如暂停10秒)或一个绝对时间点(如某年8月11日08:00)来控制流程的延迟,适用于需要定时等待的场景。

          状态属性

          暂停状态包含以下关键属性,用于定义其行为和延迟时长:

          字段类型是否必选描述示例值
          namestring是状态的名称,用于唯一标识。sleep-state
          typestring是状态类型,固定为“Sleep”。Sleep
          durationstring否sleep相对事件,和until互斥,ms/s/m/h10s
          untilstring否sleep绝对时间,遵循RFC3339格式,和duration互斥2024-11-22T17:40:40+08:00
          endbool否表示该状态是否为当前分支的终点。true
          stateDataFilterStateDataFilter否输入/输出构造器,参考流程定义介绍中StateDataFilter字段说明 
          transitionTransition否参考流程定义介绍中Transition字段说明 

          注意事项:

          • duration和until必须且只能选择一个进行配置。

          使用示例1

          以下示例展示如何定义一个暂停状态,暂停流程10秒:

          specVersion: '0.8'
          version: '1.0'
          name: test
          start: SleepDuration
          states:
            - name: SleepDuration
              type: Sleep
              duration: 10s
              transition:
                nextState: Final
          

          示例说明

          • name: 状态类型为 Sleep,表示暂停状态。

          • type: 状态命名为 SleepDuration,便于识别。

          • duration: 设置暂停时长为10秒。

          • transition: sleep完成后跳转至Final状态。

          使用示例2

          以下示例展示如何定义一个暂停状态,在指定时间点继续执行:

          specVersion: '0.8'
          version: '1.0'
          name: test
          start: SleepUntil
          states:
            - name: SleepUntil
              type: Sleep
              until: 2024-11-22T17:40:40+08:00
              transition:
                nextState: Final
          

          示例说明

          • type: 状态类型为 Sleep,表示暂停状态。

          • name: 状态命名为 SleepUntil,便于识别。

          • until: 在2024-11-22日17:40继续执行。

          • transition: sleep完成后跳转至Final状态。

          操作(Operation)状态

          本节为您介绍操作状态(Operation)的核心概念及实用示例,指导您如何通过操作状态调用集成服务API,构建复杂的工作流程。

          基本概念

          操作状态(Operation)用于在工作流中调用集成服务API以执行特定功能。
          您可以通过操作状态发起函数调用、请求天翼云服务API,或通过HTTP/HTTPS等协议访问第三方服务。在流程定义中,将状态类型指定为“Operation”即可标记为操作状态。

          状态属性

          操作状态包含以下关键属性,用于定义其行为和调用方式:

          字段类型是否必选描述示例值
          namestring是状态的名称,用于唯一标识。op_example
          typestring是状态类型,固定为“Operation”。Operation
          actions[]Action是参考Action属性,当前只支持单一Action 
          endbool否表示该状态是否为当前分支的终点。true
          stateDataFilterStateDataFilter否输入/输出构造器,参考流程定义介绍中StateDataFilter字段说明 
          transitionTransition否参考流程定义介绍中Transition字段说明 

          Action属性

          定义操作状态的具体行为,支持调用函数或服务API:

          字段类型是否必选描述示例值
          functionRefFunctionRef是引用具体的函数或操作,详见FunctionRef定义。 
          retryRefRetryRef是引用具体的重试策略,参考错误处理章节。 
          catchRefCatchRef是引用具体的错误捕获策略,参考错误处理章节。 
          actionExecuteModestring否执行模式,详细说明请参考服务集成模式,仅标准工作流下可配置。默认为RequestComplete。
          • RequestComplete
          • WaitForTaskToken

          • WaitForSystemCallback

          FunctionRef属性

          定义操作状态的具体行为,支持调用函数或服务API:

          字段类型是否必选描述示例值
          typestring是类型CF:invokeFunction
          argumentsmap[string]any否调用参数,具体内容依动作类型而定。 

          调用示例

          示例1:调用函数计算

          通过操作状态调用函数计算服务,Parameters字段定义调用参数,具体规范参考配置参数文档。支持优化集成调用或直接使用天翼云OpenAPI。

          specVersion: '0.8'
          version: '1.0'
          name: test
          start: InvokeFunction
          states:
            - name: InvokeFunction
              type: Operation
              actions:
                - functionRef:
                    type: CF:invokeFunction
                    arguments:
                      functionName: test-function
                      qualifier: LATEST
                      region: b342b77ef26b11ecb0ac0242ac110002
              transition:
                nextState: Final
          

          示例2:调用ctyun api列出pg数据库

          specVersion: '0.8'
          version: '1.0'
          name: test
          start: listPgDataBases
          states:
            - name: listPgDataBases
              type: Operation
              metadata: {}
              stateDataFilter: {}
              actions:
                - retryRef: []
                  catchRef: []
                  functionRef:
                    type: ctapi
                    arguments:
                      statusType: pgsql:listPgDataBases
                      ctapictrn: pgsql:hbbd1-a:listPgDataBases:3776
                      capacityId: 3776
                      method: GET
                      path: /v1/database/list
                      headers:
                        regionId: bb9fdb42056f11eda1610242ac110002
                      uriParameters: {}
                      queryParameters:
                        prodInstId: ''
                      body: {}
                  actionExecuteMode: RequestComplete
              end: true
          

          补充说明

          • 应用场景:操作状态适用于调用云服务API、函数计算或第三方服务,助力复杂流程的自动化。

          • 错误处理:通过Retry和Catch配置,可实现重试和异常捕获,提升流程健壮性。

          传递(Noop)状态

          本节将为您详细介绍传递状态(Noop)的功能及其应用示例,帮助您了解其在工作流设计中的作用。

          基本概念

          传递状态是一种灵活的工作流组件,可作为占位符或数据转换工具使用。它能够将输入数据调整为所需的输出格式,特别适合在流程设计的初期使用。
          例如,当您尚未定义具体的集成任务状态时,可以通过控制状态和传递状态来搭建和验证流程逻辑。待逻辑完善后,您可以将传递状态逐步替换为实际的任务状态。

          Noop实际是一种特殊的Operation,noop状态与operation状态结构一致,但部分参数不可用。

          状态属性

          操作状态包含以下关键属性,用于定义其行为和调用方式:

          字段类型是否必选描述示例值
          namestring是状态的名称,用于唯一标识。op_example
          typestring是状态类型,固定为“Operation”。Operation
          actions[]Action是参考Action属性,当前只支持单一Action 
          endbool否表示该状态是否为当前分支的终点。true
          stateDataFilterStateDataFilter否输入/输出构造器,参考流程定义介绍中StateDataFilter字段说明 
          transitionTransition否参考流程定义介绍中Transition字段说明 

          Action属性

          定义操作状态的具体行为,支持调用函数或服务API:

          字段类型是否必选描述示例值
          functionRefFunctionRef是引用具体的函数或操作,详见FunctionRef定义。 

          FunctionRef属性

          定义操作状态的具体行为,支持调用函数或服务API:

          字段类型是否必选描述示例值
          typestring是操作类型,固定为“Noop”Noop

          使用示例

          以下是一个传递状态的定义示例,该状态在执行后输出一个包含字段 FieldA 的 JSON 对象,值为 123:

          specVersion: '0.8'
          version: '1.0'
          name: test
          start: noop1
          states:
            - name: noop1
              type: Operation
              actions:
                - functionRef:
                    type: Noop
              end: true
              stateDataFilter:
                input: '{ $Context.Input.data }'
                output: '{ $.fieldA }'
          
          

          示例解析:

          • type:指定状态类型为 Noop,表明这是一个传递状态。

          • name:状态命名为 noop1,便于在流程中识别。

          • End:设置为 true,表示该状态是工作流的终点,无需指定后续状态。

          • stateDataFilter:定义输入输出构造器。

          失败(Fail)状态

          本节将为您详细介绍传递失败(Fail)的功能及其应用示例,帮助您了解其在工作流设计中的作用。

          基本概念

          Fail状态会返回失败结果,可用于提前结束工作流执行并将执行结果置为失败。

          Fail实际是一种特殊的Operation,noop状态与operation状态结构一致,但部分参数不可用。

          状态属性

          操作状态包含以下关键属性,用于定义其行为和调用方式:

          字段类型是否必选描述示例值
          namestring是状态的名称,用于唯一标识。op_example
          typestring是状态类型,固定为“Operation”。Operation
          actions[]Action是参考Action属性,当前只支持单一Action 
          endbool否表示该状态是否为当前分支的终点,固定为truetrue

          Action属性

          定义操作状态的具体行为,支持调用函数或服务API:

          字段类型是否必选描述示例值
          functionRefFunctionRef是引用具体的函数或操作,详见FunctionRef定义。 

          FunctionRef属性

          定义操作状态的具体行为,支持调用函数或服务API:

          字段类型是否必选描述示例值
          typestring是操作类型,固定为“Fail”Fail
          argumentsmap[string]string是

          调用参数:

          • errorType,必选

          • errorMessage,可选

           

          使用示例

          以下是一个失败状态的定义示例:

          specVersion: '0.8'
          version: '1.0'
          name: test
          start: Fail
          
          states:
            - name: fail
              type: Operation
              actions:
                - functionRef:
                    type: Fail
                    arguments:
                      errorType: customError
                      errorMessage: "User called fail"
              end: true

          示例解析:

          • type:指定状态类型为 Fail,表明这是一个传递状态。

          • name:状态命名为 fail,便于在流程中识别。

          • End:设置为 true,表示该状态是工作流的终点,无需指定后续状态。

          • errorType:错误类型为customError。

          • errorMessage:错误消息为User called fail。

          条件分支(Switch)状态

          本节将为您详细讲解条件分支状态(Switch)的基本概念、使用场景示例以及条件表达式的应用,帮助您更好地在工作流中运用此状态。

          基本概念

          条件分支状态(Switch)是工作流中的条件选择工具,允许流程根据预设条件执行不同的路径。其功能类似于编程中的 switch-case 语句。
          它由若干条件(dataConditions)和一个默认条件(defaultCondition)组成,每个分支包含一个条件表达式和一个跳转目标。

          状态属性

          条件分支状态的属性定义了其逻辑和行为:

          字段类型是否必选描述示例值
          namestring是状态的名称,用于唯一标识。my switch
          typestring是状态类型,固定为“Switch”。Switch
          dataConditions[]DataCondition是条件列表,详见DataCondition属性 
          defaultConditionDefaultCondition是默认情况,详见DefaultCondition属性 
          stateDataFilterStateDataFilter否输入/输出构造器,参考流程定义介绍中StateDataFilter字段说明 
          DataCondition属性
          字段类型是否必选描述示例值
          conditionstring是条件表达式{ $.Value > 10 }
          transitionTransition否参考流程定义介绍中Transition字段说明 
          DefaultCondition属性
          字段类型是否必选描述示例值
          transitionTransition否参考流程定义介绍中Transition字段说明 

          注意事项:

          • 条件(DataCondition)不支持直接使用 End 或 Transition 属性。默认分支(DefaultCondition)起到类似 Transition 的作用,指定条件不满足时的路径。

          • 条件(DataCondition)中,每个分支通过 transition 字段指定条件满足时的跳转目标。

          系统会按顺序检查每个条件的表达式:

          • 如果某个条件被满足,则跳转至该条件指定的状态继续执行。

          • 如果所有条件均不满足,则执行默认条件指定的状态和后续流程。

          使用示例

          以下是一个条件分支状态的实际应用案例:

          specVersion: '0.8'
          version: '1.0'
          name: test
          start: Switch1
            - name: Switch1
              type: Switch
              dataConditions:
                - condition: "{ $Context.Input.value > 20 }"
                  transition: Over20
                - condition: "{ $Context.Input.value > 10 }"
                  transition: Over10
              defaultCondition:
                transition: Fail
          

          示例说明

          • type: 状态类型为 Switch,表示条件分支。

          • name: 状态名为 Switch1。

          • 第一个condition: 条件{ $Context.Input.value > 20 },代表如果value的值大于20,则跳转到Over20状态继续执行。

          • 第二个condition: 条件{ $Context.Input.value > 10 },代表第一个condition未被满足,如果10 < value <=20,则跳转到Over10状态继续执行。

          • defaultCondition: 上诉两个condition都不满足时,跳转到Fail状态继续执行。

          该条件分支状态执行示例如下:

          输入与条件结果样例

          假设输入数据 $Input 为:

          {
            "x": 50,
            "y": {
              "y1": false,
              "y2": "active"
            },
            "z": [10, 20, 30]
          }
          

          以下是条件表达式的执行结果:

          条件表达式执行结果
          $Input.x == 50true
          $Input.x < 100true
          $Input.x > 60false
          $Input.y.y1false
          $Input.y.y2 == “active”true
          $Input.z[1] == 20true

          提示:

          • 表达式中可使用 $. 和 $Context 获取变量,具体用法请参考相关数据传递文档。

          条件分支状态(Switch)通过分支和默认路径,为工作流提供了灵活的逻辑控制能力。掌握其属性配置和条件表达式的编写,您可以轻松实现动态流程设计。如需更多帮助,请联系支持团队。

          迭代(Foreach)状态

          本节为您介绍迭代状态(Foreach)的核心概念及应用示例,指导您如何在工作流中遍历数组并并行处理元素。

          基本概念

          迭代状态(Foreach)用于遍历输入中的数组类型参数,对每个元素并行执行指定的处理器(Processor)状态。其功能类似于编程语言中的foreach循环,但区别在于迭代状态采用并行方式处理所有元素。

          在执行过程中,系统并发运行输入数组中每个元素的处理器状态。所有分支完成后,默认生成一个包含各分支结果的map[string]any结构,并可通过数据过滤器或后续逻辑进一步处理结果。

          状态属性

          迭代状态(Foreach)包含以下关键属性,用于定义其行为和处理逻辑:

          字段类型是否必选描述示例值
          namestring是状态的名称,用于唯一标识。ForeachTest
          typestring是状态类型,固定为“Foreach”。Foreach
          processorobject是迭代处理器,定义元素处理逻辑。见processor说明
          endbool否表示是否为当前流程的终点。true
          stateDataFilterStateDataFilter否输入/输出构造器,参考流程定义介绍中StateDataFilter字段说明 
          transitionTransition否参考流程定义介绍中Transition字段说明 
          retryRefRetryRef是引用具体的重试策略,参考错误处理章节。 
          catchRefCatchRef是引用具体的错误捕获策略,参考错误处理章节。 
          processor 属性

          迭代处理器,定义如何处理数组中的每个元素,每个processor定义的states组成一个子流程,从startAt指定的状态开始执行,states中必须存在一个end状态:

          字段类型是否必选描述示例值
          startAtstring是嵌套状态数组的执行起点。ForeachNoop
          statesarray是嵌套的状态数组,定义处理逻辑。 

          使用示例

          以下示例定义一个迭代状态,遍历输入数组,处理器包含操作和休眠状态:

          specVersion: '0.8'
          version: '1.0'
          name: test
          start: ForeachTest
          states:
            - name: ForeachTest
              type: Foreach
              processor:
                startAt: ForeachNoop
                states:
                  - name: ForeachNoop
                    type: Operation
                    actions:
                      - functionRef:
                          type: Noop
                    transition:
                      nextState: Sleep
                    stateDataFilter:
                      output:
                        ft: "{ $.from + '|' + $.to }"
                  - name: Sleep
                    type: Sleep
                    duration: 30s
                    end: true
              end: true
              metadata:
                description: ''
          
          示例说明
          • name: 状态名为“ForeachTest”。

          • type: 状态类型为“Foreach”。

          • processor: 定义处理逻辑,起始于“ForeachNoop”。

            • startAt: 子流程从“ForeachNoop”开始执行

            • states: 包含“ForeachNoop”操作状态(执行Noop动作)和“Sleep”状态(休眠30秒)。

            • end: Sleep设置end为true,说明子流程在该状态结束。

          补充说明

          • 并行处理:迭代状态并行处理数组元素,提升效率。

          • 数据过滤:通过stateDataFilter自定义输出格式。

          • 灵活性:子流程支持嵌套多种状态类型,如操作或休眠。

          并行(Parallel)状态

          本节为您介绍并行状态(Parallel)的核心概念及应用示例,指导您如何在工作流中实现多分支并行执行。

          基本概念

          并行状态(Parallel)用于同时执行多个独立的分支(branches),每个分支通过processor定义一个子流程。
          执行时,系统并发运行所有分支内的状态。待所有分支完成后,默认生成一个map[string]any结构,包含各分支的执行结果,并可通过后续状态或过渡逻辑进一步处理。

          状态属性

          并行状态包含以下关键属性,用于定义其行为和执行逻辑:

          字段类型是否必选描述示例值
          namestring是状态的名称,用于唯一标识。ParallelTest
          typestring是状态类型,固定为“Parallel”。Parallel
          branches[]Branch是并行分支的定义。见Branch说明
          endbool否表示该状态是否为当前分支的终点。true
          stateDataFilterStateDataFilter否输入/输出构造器,参考流程定义介绍中StateDataFilter字段说明 
          transitionTransition否参考流程定义介绍中Transition字段说明 
          retryRefRetryRef是引用具体的重试策略,参考错误处理章节。 
          catchRefCatchRef是引用具体的错误捕获策略,参考错误处理章节。 

          Branch 属性

          定义并行分支的具体内容,每个分支包含一个处理器:

          字段类型是否必选描述示例值
          processorProcessor是处理器,定义分支的执行逻辑。见Processor说明

          Processor 属性

          定义分支内的处理逻辑:

          字段类型是否必选描述示例值
          startAtstring是嵌套状态数组的执行起点。ParallelTestBranch1
          statesarray是嵌套的状态数组,定义处理逻辑。 

          使用示例

          以下示例定义一个并行状态,包含三个分支,每个分支执行HTTP请求,随后跳转至最终状态:

          specVersion: '0.8'
          version: '1.0'
          name: test
          start: ParallelTest
          states:
            - name: ParallelTest
              type: Parallel
              branches:
                - processor:
                    startAt: ParallelTestBranch1
                    states:
                      - name: ParallelTestBranch1
                        type: Operation
                        actions:
                          - functionRef:
                              type: Http
                              arguments:
                                url: https://www.baidu.com/home/feed/feedwater
                                query:
                                  bsToken: "8e0f5a9e604a945b0a3cada1b0f1b159"
                                  id: "2"
                                  offset: "1"
                                  req_type: "1"
                                headers:
                                  User-Agent: "apifox"
                - processor:
                    startAt: ParallelTestBranch2
                    states:
                      - name: ParallelTestBranch2
                        type: Operation
                        actions:
                          - functionRef:
                              type: Http
                              arguments:
                                url: https://www.baidu.com/home/feed/feedwater
                                query:
                                  bsToken: "8e0f5a9e604a945b0a3cada1b0f1b159"
                                  id: "2"
                                  offset: "1"
                                  req_type: "1"
                                headers:
                                  User-Agent: "apifox"
                - processor:
                    startAt: ParallelTestBranch3
                    states:
                      - name: ParallelTestBranch3
                        type: Operation
                        actions:
                          - functionRef:
                              type: Http
                              arguments:
                                url: https://www.baidu.com/home/feed/feedwater
                                query:
                                  bsToken: "8e0f5a9e604a945b0a3cada1b0f1b159"
                                  id: "2"
                                  offset: "1"
                                  req_type: "1"
                                headers:
                                  User-Agent: "apifox"
              transition:
                nextState: Final
          

          示例说明

          • name: 状态名为“ParallelTest”。

          • type: 状态类型为“Parallel”。

          • branches: 包含三个分支,每个分支的处理器执行HTTP请求。

          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  流程定义介绍
          下一篇 :  数据传递
          搜索 关闭
          ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2025天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明