基本概念

本文汇总使用云工作流过程中涉及到的基本概念,方便您更好地查询和理解相关术语。

云工作流 (CloudFlow)

云工作流(CloudFlow)是一种用于协调、管理和执行多个分布式任务的服务。它允许用户以可视化的方式设计、编排工作流程,将不同的服务、API调用或者数据处理步骤组织成有序的工作流程,并通过调试各个步骤确保流程按照预期执行。云工作流的相关操作,请参见创建流程

标准工作流(Standard Workflow)

标准工作流支持定制流程的每一个步骤,适用于较复杂逻辑判断等场景,并适用于传统意义上的离线业务流程编排执行场景,具备执行步骤状态的持久化存储,支持运行长时间的工作流执行状态流转。更多信息,请参见标准工作流和快速工作流

快速工作流(Express Workflow)

快速工作流适用于结构简单、流程固化的场景,用户可以快速部署以提高效率。它同样适用于常见的在线业务流程编排和准实时业务流程编排场景,例如微服务API编排、胶水层API编排以及流式数据处理等低延迟和大负载业务场景。更多信息,请参见标准工作流和快速工作流

工作流集成

云工作流实现了阿里云绝大部分产品的API集成。下面介绍一下两种集成方式,普通集成和优化集成。

  • 普通集成

    普通集成是指允许云工作流直接调用云产品的OpenAPI服务接口,不对这些服务接口做任何包装处理和实现优化,共计可使用多达上万条API服务接口。更多信息,请参见普通集成

  • 优化集成

    优化集成是指对部分高频使用的云产品服务接口进行包装和优化处理,简化接口使用难度,方便用户集成。对于部分云服务或者工具,不支持云工作流直接通过OpenAPI服务接口与其集成,利用云产品的SDK或公共客户端进行优化集成,方便用户在流程中使用这些云产品或工具提供的能力。更多信息,请参见集成简介

流程定义语言FDL(Flow Definition Language)

一种基于 JSON 的结构化语言,用于定义状态机(一个状态集合),可以执行工作(Task状态),确定哪些状态转换为下一个状态,在出错的情况下停止执行(Fail状态)等等。

作用域(Scope)

状态间可以组合嵌套,如果一个状态包含另一个状态,则称外层状态为内部状态的作用域(Scope)。更多信息,请参见状态作用域

状态

状态是状态机中的一个关键元素,也是云工作流在执行过程中所处的特定阶段或情况,它反映了工作流当前的进展和所需的操作。下面介绍八种不同类型的状态。

任务(Task)

表示任务在云工作流执行过程中所处的具体阶段。主要用于调用其他集成服务API来完成特定任务,利用任务类型状态可以执行一个函数调用,调用阿里云服务API,也可以通过HTTP/HTTPS等通用协议发起第三方服务调用。更多信息,请参见任务(Task)

传递(Pass)

一个特定的流程节点,将其输入传递到其输出,不执行任何工作。可当作空白节点或者作为数据预处理节点将输入数据结构转换成期望的输出。更多信息,请参见传递(Pass)

选择(Choice)

一个特定的流程节点,让流程根据条件执行不同的状态。它包含多个条件选项(Choice)和一个默认选项(Default),每个条件选项带有一个条件表达式(Condition)和跳转指令(Next)。更多信息,请参见选择(Choice)

并行(Parallel)

一个特定的流程节点,用来并行执行多个状态。它定义了多个分支(Branches),每个分支包含一系列状态。更多信息,请参见并行(Parallel)

迭代(Map)

遍历输入中的某个数组类型参数,对于数组中的每个元素,并行执行其处理器(Processor)状态。更多信息,请参见迭代(Map)

等待(Wait)

一个特定的流程节点,用于暂停流程执行。可以将执行流程暂停一段时间,然后再继续执行。更多信息,请参见等待(Wait)

成功(Succeed)

一个特定的流程节点,用于提前结束一系列状态的执行。更多信息,请参见成功(Succeed)

失败(Fail)

一个特定的流程节点,用于处理异常情况。它提前结束一系列状态的执行。更多信息,请参见失败(Fail)

数据传递

流程(Flow)的多个状态(State)之间传递数据的过程。数据传递的基本概念包括:

  1. 流程数据:这包括流程的名称、地域,以及组成流程的各个状态的名称等。

  2. 执行数据:执行的名称、执行输入,以及执行过程中当前状态的输入、输出等信息。

更多信息,请参见数据传递

输入和输出

执行时会接收 JSON 文本作为输入,并将这些输入数据传递给工作流中的第一个状态。在每个状态中,数据以 JSON 的形式接收,通常以 JSON 的形式作为输出传递给下一个状态。更多信息,请参见输入和输出

  • 执行输入和输出:执行的输入输出通常指的是流程执行上下文中的数据,包括所有状态的输入输出数据。

  • 状态输入和输出:流程上下文中与该状态直接相关的数据,如状态的输入参数和输出结果。

内置函数

用于在流程定义语言中执行基本的数据处理操作,开发者通过直接调用内置函数,可以快速实现特定功能,减少编码工作量,缩短开发周期,更快的部署和迭代工作流。更多信息,请参见内置函数

错误处理

工作流执行过程中对可能出现的错误进行处理和管理的机制。工作流错误处理包含两部分内容:错误重试(Retry)和错误捕获(Catch)。

  • 错误重试(Retry):当某个步骤或任务在执行过程中报告错误并且有一个Retry字段时,通过设定重试策略,系统会自动重新尝试执行该步骤或任务,以期望通过几次尝试后成功完成任务。

  • 错误捕获(Catch):如果某个步骤在多次重试后仍然失败,工作流可以通过捕获错误来执行特定的错误处理逻辑,如发送通知或执行回滚操作,确保系统的稳定性和数据的完整性。

通过上述两种机制,开发者可以有效地管理和应对工作流中的各种错误情况,从而提升系统的健壮性和可靠性。更多信息,请参见错误处理

云工作流集成模式

使用云工作流集成其他云服务,您可以使用以下三种集成模式:

  • 请求响应(RequestComplete)

    当您在任务类型的状态中指定调用服务,默认集成模式为请求响应模式。更多信息,请参见请求响应(RequestComplete)

  • 等待系统回调(WaitForSystemCallback)

    通过指定等待系统回调(WaitForSystemCallback)任务模式,可以等待任务执行完成后再进入下一个状态。更多信息,请参见等待系统回调(WaitForSystemCallback)

  • 等待用户自定义回调(WaitForCustomCallback)

    又称为携带任务令牌的回调,提供一种暂停工作流,并根据集成服务内部自定义逻辑控制工作流执行的方式。更多信息,请参见等待用户自定义回调(WaitForCustomCallback)