Workflows 概览

Workflows 是一个全代管式编排平台,该平台会按照您定义的顺序执行服务(工作流)。这些工作流可以组合各种服务,包括 Cloud Run 或 Cloud Run 函数上托管的自定义服务、Google Cloud 服务(如 Cloud Vision AI 和 BigQuery)以及任何基于 HTTP 的 API。

通过将 Workflows 整合到解决方案中,您可以端到端地将服务依赖项设为显式且可观察。指定应用、运维或业务流程的工作流为流程提供了可靠来源或规范叙事。

Workflows 采用无服务器模式,可按需纵向扩容,空闲期间不会产生任何费用。由于工作流不包含代码或库依赖项,因此不需要安全补丁程序。部署工作流后,您可以可靠地执行工作流,而无需维护。工作流可以保留状态、重试、轮询或等待长达一年的时间。

Workflows 符合以下要求 认证和标准

下图展示了使用 Workflows 编排服务的示例:

使用 Workflows 编排服务

关键使用场景

Workflows 支持许多使用场景。以下是一些示例:

服务编排 通过组合服务来创建解决方案 - 跨多个系统执行一系列操作,并等待所有操作完成。可以由事件驱动。例如:
  • 将新上传的文件发送到 Cloud Vision AI,然后将标记写入 Firestore
  • 调用 Cloud Run 函数并将结果发送到 Cloud Run 服务
批处理作业 对多项执行操作 - 对一组项或批量数据执行操作。通常会安排。例如:
  • 每天发送客户电子邮件
  • 准备并运行 BigQuery 或机器学习作业
  • 生成报告
业务流程 自动执行业务线工作流 - 对业务流程中的步骤(包括条件、操作和人机协同事件)进行编码。例如:
  • 从请求到履单跟踪订单
  • 自动执行资源请求(含批准)
IT 流程自动化 代管式执行服务操作 - 轻松编写 Google Cloud 服务操作序列的脚本。例如:
  • 预配新的租户项目或基础架构
  • 按计划或通过事件触发器关停资源

核心概念

工作流由使用 Workflows 语法描述的一系列步骤组成,可以使用 YAML 或 JSON 编写。这是工作流的定义。如需详细了解 Workflows 语法,请参阅语法参考文档

工作流创建完毕后即会进行部署,这样工作流便可以执行。了解如何创建和更新工作流 或使用 Google Cloud CLI。您还可以使用首选的 IDE 或源代码编辑器,并设置自动补全和语法验证来创建工作流。

执行是指单次运行工作流定义中包含的逻辑。尚未执行的工作流不会产生费用。所有工作流都将独立执行,并且产品的快速扩缩允许执行大量并发执行。 如需执行工作流,您可以使用 Google Cloud 控制台中的客户端库、Google Cloud CLI,或使用 Workflows REST API 向工作流的调用网址发送 HTTP POST 请求。如需了解详情,请参阅执行工作流

主要功能

以下是工作流的一些关键功能。

执行控制

步骤
如需创建工作流,您需要使用 Workflows 语法每个工作流都必须至少有一个步骤。默认情况下,Workflows 将步骤视为处于 有序列表,然后一次执行一个,直到所有步骤都已运行完毕。有关详情,请参阅步骤
条件
您可以使用 switch 块作为选择机制,以允许表达式的值控制工作流的执行流。如需了解详情,请参阅条件
迭代
您可以使用 for 循环遍历一系列数字或一组数据(如列表或映射)。如需了解详情,请参阅迭代
并行步骤
您可以使用 parallel 步骤定义可并发执行的工作流部分(分支或循环)。如需了解详情,请参阅并行步骤
子工作流
子工作流的工作方式与编程语言的例程或函数类似,您可以封装工作流将会多次重复执行的一个步骤或一组步骤。 如需了解详情,请参阅子工作流

触发执行

手动
您可以使用 Google Cloud CLI,通过 Google Cloud 控制台或命令行管理工作流。您还可以在修改 Workflows 语法时通过 Google Cloud 控制台获得可视化支持。
程序化
Workflows API 的 Cloud 客户端库或 REST API 可用于管理工作流。如需了解详情,请参阅 Workflows API 和参考文档
定期
您可以使用 Cloud Scheduler 按特定时间表运行工作流,例如每个星期一上午 9 点或每 15 分钟运行一次工作流。如需了解详情,请参阅使用 Cloud Scheduler 安排工作流
运行时参数
可通过在主工作流中添加 params 字段(放置在 main 块中)访问在运行时传递的数据。main 块接受任何有效的 JSON 数据类型的单个参数。params 字段指定工作流用于存储您传入数据的变量。如需了解详情,请参阅运行时参数

连接服务

HTTP API
您可以定义执行 HTTP 调用的工作流步骤,并将调用的响应分配给变量。例如,您可以调用 Google Cloud 服务,例如 Cloud Run 函数或 Cloud Run(通过 HTTP) 请求。HTTP 和 HTTPS 请求均受支持。有关详情,请参阅 发出 HTTP 请求调用 Cloud Run 函数或 Cloud Run
您可以调用专用本地部署、Compute Engine、 Google Kubernetes Engine (GKE) 或其他 Google Cloud 端点,具体方法是启用 Identity-Aware Proxy (IAP)。IAP,你可以建立一个 授权层,让您可以使用 应用级访问权限控制模型,而不是依赖于网络级访问权限控制 防火墙。如需了解详情,请参阅调用专用本地、Compute Engine、GKE 或其他端点
或者,您也可以将 Service Directory 的服务注册表与 Workflows 搭配使用,以便从工作流执行中定位到用于 HTTP 调用的私有端点。通过在 Google Cloud 上的 虚拟私有云 (VPC) 网络, 符合 VPC Service Controls 规范。如需了解详情,请参阅 调用与 VPC Service Controls 兼容的专用端点
连接器
Workflows 发布连接器,这些连接器可用于连接到工作流内的其他 Google Cloud API,以及将工作流与这些 Google Cloud 产品集成。它们会为您处理请求的格式,从而为您处理请求的格式设置并提供方法和参数,这样您就无需了解 Google Cloud API 的详细信息。如需了解详情,请参阅了解连接器
标准库和环境变量
Workflows 标准库、内置环境变量 和用户定义的环境变量, 服务和进程响应的参数。
标准库包含模块和常用函数,例如 用于数据类型和格式转换无需在工作流中导入或加载库 - 库函数可以立即使用。如需了解详情,请参阅标准库概览
您可以使用内置的环境变量访问工作流的环境信息(例如其位置或项目标识符)。内置环境变量不需要声明,并且每次执行工作流时都可以使用。如需了解详情,请参阅内置环境变量
在部署工作流时,您可以将任意键值对字符串设置为用户定义的环境变量,以便工作流在运行时访问这些变量。例如,您可以创建动态配置的工作流 具体取决于其部署到的环境。有关详情,请参阅 使用环境变量

错误处理

您可以透过使用 Workflows 的异常处理(包括采用指数退避算法进行的自动 HTTP 调用重试、自定义错误处理程序及其他高级功能),使工作流具有弹性并自定义其发生故障时的行为。如需了解详情,请参阅工作流错误

等待中

回调允许工作流执行操作等待其他服务向回调端点发出请求;该请求将继续执行工作流。借助回调,您可以告知工作流指定事件已发生,然后等待该事件而不进行轮询。如需了解详情,请参阅等待使用回调

您可以通过向工作流的定义添加休眠步骤来暂停工作流的执行。然后,您可以使用 sys.sleep 来轮询给定时间间隔内的数据。如需了解详情,请参阅等待使用轮询

身份验证和访问控制

由于每个工作流执行都需要进行经过身份验证的调用,因此您可以使用 Workflows 来降低意外或恶意调用的风险。您还可以使用 基于 IAM 的服务账号、 而且您可以安全地存储密钥和密码,以便向外部用户进行身份验证 使用 Secret Manager 连接器。对于 详细了解身份验证访问权限控制

可观测性

Workflows 会自动为 Cloud Logging 中的工作流执行生成执行日志。通过调用日志记录和自定义日志,您还可以控制在工作流执行期间将日志发送到 Logging 的时间。如需了解详情,请参阅将日志发送到 Cloud Logging

审核日志记录信息可通过 Cloud Audit Logs 获取。如需了解详情,请参阅工作流工作流执行的审核日志记录信息。

您可以以步骤条目列表的形式检索指定工作流执行的历史记录。每个条目表示 中的一个步骤或指令块 工作流执行。步骤条目可帮助您确定 优化工作流的性能。

代码示例

您可以在示例页面中找到许多有用的 Workflows 代码示例。

后续步骤