本文主要介绍云工作流的一些基本概念, 方便在在云工作流使用过程中能够理解对应的术语。
一、云工作流
云工作流(CloudFlow)是一种用于协调、管理和执行多个分布式任务的服务。在使用时, 可以基于Workflow Studio进行可视化的方式设计、编排工作流程,将不同的服务、API调用或者数据处理步骤组织成有序的工作流程。
二、标准工作流
标准(Standard)工作流具备执行步骤状态的持久化存储,支持运行长时间的工作流执行状态流转,适用于传统意义上的离线业务流程编排执行场景。更多信息,请参见标准工作流和快速工作流。
三、快速工作流
快速(Express)工作流适用于流程结构简单、需要低延迟执行的工作流场景, 适用于常见的在线业务流程编排和准实时业务流程编排场景,例如微服务API编排、流式数据处理等低延迟和大负载业务场景。 更多信息,请参见标准工作流和快速工作流。
四、工作流集成
云工作流实现了天翼云在OpenAPI门户的几乎所有产品的API集成。在云工作流中编排使用天翼云产品OpenAPI主要有两种集成方式:普通集成和优化集成。
普通集成
普通集成是指允许云工作流直接调用云产品的OpenAPI服务接口,不对这些服务接口做任何包装处理和实现优化,共计可使用多达上万条API服务接口。更多信息,请参见普通集成。
优化集成
优化集成是指对部分高频使用的云产品服务接口进行包装和优化处理,简化接口使用难度,方便用户在云工作流中编排使用。更多信息,请参见集成简介。
在云工作流下可以按照三种集成模式去进行调用集成其他云服务,只有在标准工作流下可以选择不同的集成模式去调用云服务, 快速工作流只能是请求响应模式去调用其他云服务:
请求响应模式(RequestComplete)
调用其他云服务后, 同步等待响应返回后方可进行下一个执行状态。
等待系统回调(WaitForSystemCallback)
指定等待系统回调后, 工作流会进入到TaskSubmitted状态, 工作流系统自身会查询到目标调用集成服务的执行状态(成功或者失败)从而将工作流从TaskSubmitted等待状态转换为TaskSuccess状态或者TaskFailed状态, 继续工作流执行执行下一个状态。
等待任务令牌(WaitForTaskToken)
指定等待任务令牌后, 工作流会进入到TaskSubmitted状态。用户可通过OpenAPI在用户自定义的业务逻辑中回调通知工作流当前任务的执行结果(成功或者失败)从而工作流从TaskSubmitted等待状态转换为TaskSuccess状态或者TaskFailed状态, 继续工作流执行下一个状态。可以理解的一个场景是业务审批场景, 在业务审批节点通过或者拒绝后, 审批流程继续执行或者终止执行。
五、流程定义语言
天翼云云工作流流程定义基于CNCF ServerlessWorkflow Specification 0.8版本进行适配优化的。其主要特征是一种基于YAML的声明式工作流规范,用于定义由事件驱动的无服务器应用编排逻辑。它通过状态(State)组织任务流,支持顺序/并行执行(Parallel状态)、条件分支(Switch状态)、延时触发(Sleep状态)等控制逻辑,并能通过错误捕获(Catch状态)和重试机制(Retry策略)实现容错处理。其核心特点包括与云服务事件源的无缝集成、状态间数据传递(Data Input/Output)等。所有状态(State)共享基础属性:名称(name)、类型(type)、输入输出(Data Input/output)。通过组合这些状态类型,可以构建出复杂的业务流程。
状态(State)是工作流的基本执行单元,每个状态代表流程中的一个步骤,包含输入处理、业务逻辑执行和输出传递功能。状态之间通过转换(transition)形成有向关系,共同构成完整的工作流。状态可以大致分类为两种:执行类(Operation、 Noop、 Fail、Sleep)以及流程控制类(Switch | Parallel | Foreach)。
5.1 Operation
Operation类型状态主要是用于调用集成服务API来完成特定任务, 利用任务类型状态可以执行一个函数调用,调用天翼云云服务API,也可以通过HTTP/HTTPS等通用协议发起第三方服务调用。
5.2 Noop
Noop类型状态是一种特殊的Operation类型状态, 不执行任何操作。 它主要利用场景是用于在流程编排过程中的一种占位符作用的存在。可当作空白节点或者作为数据预处理节点将输入数据结构转换成期望的输出。
5.3 Fail
Fail类型状态是一种特殊的Operation类型状态。Fail状态会返回失败结果,可用于提前结束工作流执行并将执行结果置为失败。
5.4 Sleep
用于暂停工作流执行, 可将工作流按照指定时长等待或者暂停至特定时间点后继续执行。
5.5 Switch
可用于流程根据条件执行不同的状态。 包含多个条件(Case)执行分支以及默认(Default)执行分支。每个条件(Case)执行分支需要包含一个条件表达式以及命中条件后跳转(transition)的状态。
5.6 Parallel
可用于并行执行多个状态。 Parallel流程控制状态定义了多个并行分支(Branches), 分支里的定义了Processor字段用于定义并行子任务, 可以是简单的Operation等执行类节点,亦或是嵌套一个流程控制类节点(Foreach | Parallel | Switch),更复杂的场景是由Operation等执行类节点和流程控制类节点(Foreach | Parallel | Switch)组成的子工作流。
5.7 Foreach
可用于按照输入的数组,按照迭代遍历执行Foreach下定义Processor的子任务。 对于数组中的每个元素, 按照并行逻辑执行Foreach定义的子任务。Foreach下定义Processor的子任务 , 可以是简单的Operation等执行类节点,亦或是嵌套一个流程控制类节点(Foreach | Parallel | Switch),更复杂的场景是由Operation等执行类节点和流程控制类节点(Foreach | Parallel | Switch)组成的子工作流。
六、数据传递
在工作流执行过程中,数据传递(Data Passing) 指状态(State)之间通过结构化数据(JSON格式)实现上下文信息共享的机制。每个状态通过输入(Input)接收上游数据,经处理后将结果通过输出(Output)传递给下游状态,形成数据驱动的执行链。
七、输入输出
执行时会接收 JSON 文本作为输入,并将这些输入数据传递给工作流中的第一个状态。在每个状态中,数据以 JSON 的形式接收,通常以 JSON 的形式作为输出传递给下一个状态。
工作流第一个状态的输入是工作流的执行输入
工作流下一个状态(除第一个状态)的输入是上一个状态的执行输出
数据的输入输出可按照过滤方式或者直接传递的方式对数据进行处理
在处理输入输出的数据的过程中, 可直接调用云工作流提供的内置函数从而快速实现特定功能, 减少在状态节点的编码工作流。请参见内置函数。
八、错误处理
工作流执行过程中对可能出现的错误进行处理和管理的机制, 从而增强工作流执行的容错性。工作流错误处理包含两部分内容:错误重试(Retry)和错误捕获(Catch)。
错误重试(Retry):当某个步骤或任务在执行过程中报告错误并且有一个Retry字段时,通过设定重试策略,系统会自动重新尝试执行该步骤或任务,以期望通过几次尝试后成功完成任务。同时可以设置回避因子等参数避免重试造成避免惊群效应。
错误捕获(Catch):如果某个流程步骤,即某个状态节点在多次重试后仍然失败,工作流可以通过捕获错误来执行特定的错误处理逻辑, 回退到指定节点重新执行工作流, 从而确保工作流执行的稳定性。