Workflows 是一个全代管式编排平台,该平台会按照您定义的顺序执行服务:工作流。这些工作流可以组合各种服务,包括 Cloud Run 或 Cloud Run functions 上托管的自定义服务、 Google Cloud Vision AI 和 BigQuery 等服务,以及任何基于 HTTP 的 API。
通过将 Workflows 整合到解决方案中,您可以端到端地将服务依赖项设为显式且可观察。指定应用、运维或业务流程的工作流为流程提供了可靠来源或规范叙事。
Workflows 采用无服务器模式,可按需纵向扩容,空闲期间不会产生任何费用。由于工作流不包含代码或库依赖项,因此不需要安全补丁程序。部署工作流后,您可以可靠地执行工作流,而无需维护。工作流可以保留状态、重试、轮询或等待长达一年的时间。
Workflows 符合这些认证和标准。
下图展示了使用 Workflows 编排服务的示例:
关键使用场景
Workflows 支持许多使用场景。以下是一些示例:
| 服务编排 | 通过组合服务来创建解决方案 - 跨多个系统执行一系列操作,并等待所有操作完成。可以由事件驱动。例如:
|
| 批量作业 | 对多项执行操作 - 对一组项或批量数据执行操作。通常会安排。例如:
|
| 业务流程 | 自动执行业务线工作流 - 对业务流程中的步骤(包括条件、操作和人机协同事件)进行编码。例如:
|
| IT 流程自动化 | 代管式执行服务操作 - 轻松编写 Google Cloud 服务操作序列的脚本。例如:
|
核心概念
工作流由使用 Workflows 语法描述的一系列步骤组成,可以使用 YAML 或 JSON 编写。这是工作流的定义。如需详细了解 Workflows 语法,请参阅语法参考文档。
工作流创建完毕后即会进行部署,这样工作流便可以执行。了解如何在 Google Cloud 控制台中或使用 Google Cloud CLI 创建和更新工作流。您还可以使用首选的 IDE 或源代码编辑器创建工作流,并设置自动补全和语法验证。
执行是指单次运行工作流定义中包含的逻辑。尚未执行的工作流不会产生费用。所有工作流都将独立执行,并且产品的快速扩缩允许执行大量并发执行。 如需执行工作流,您可以使用客户端库、 Google Cloud 控制台、Google Cloud CLI,或使用 Workflows REST API 向工作流的调用网址发送 HTTP POST 请求。如需了解详情,请参阅执行工作流。
区域性
Workflows 是一项区域级服务,工作流是区域级资源,受资源位置限制条件的约束。您可以使用资源位置政策来控制数据驻留。
请注意,当工作流部署到特定区域时,它仅在该区域中执行;但是,如果工作流发出任何 HTTP 请求或使用连接器,则 HTTP 调用可能并非源自同一区域。
主要功能
以下是 Workflows 的一些主要功能。
执行控制
- 步骤
- 如需创建工作流,您可以使用 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 调用的工作流步骤,并将调用的响应分配给变量。例如,您可以通过 HTTP 请求调用 Google Cloud服务(例如 Cloud Run functions 或 Cloud Run)。HTTP 和 HTTPS 请求均受支持。如需了解详情,请参阅发出 HTTP 请求和调用 Cloud Run functions 或 Cloud Run。
- 您可以通过将 Service Directory 的服务注册表与 Workflows 搭配使用,在工作流执行过程中将 HTTP 调用定向到专用端点。这样,您就可以为工作流提供 Service Directory 服务名称。工作流执行会使用从服务注册表中检索到的信息来发送相应的 HTTP 请求,而不会流出到公共网络。如需了解详情,请参阅使用 Service Directory 的服务注册表调用专用端点。
- 或者,您也可以调用受 Identity-Aware Proxy (IAP) 保护的端点。 借助 IAP,您可以为通过 HTTPS 访问的应用建立一个中央授权层,从而可以使用应用级访问权限控制模型,而不依靠网络级防火墙。如需了解详情,请参阅调用受 IAP 保护的端点。
- 在虚拟私有云 (VPC) 网络中创建专用端点时,您可以设置服务边界,并搭配使用 VPC Service Controls 和 Workflows 来降低数据泄露风险。
- 连接器
- Workflows 发布连接器,这些连接器可用于连接到工作流内的其他 Google Cloud API,以及将工作流与这些 Google Cloud 产品集成。它们会为您处理请求的格式,从而为您处理请求的格式设置并提供方法和实参,这样您就无需了解Google Cloud API 的详细信息。如需了解详情,请参阅了解连接器。
- 标准库和环境变量
- 借助 Workflows 标准库、内置环境变量和用户定义的环境变量,您可以高效地为服务构建参数和处理响应。
- 标准库包括模块和常用函数,例如数据类型和格式转换。无需在工作流中导入或加载库 - 库函数可立即使用。如需了解详情,请参阅标准库概览。
- 您可以使用内置的环境变量访问工作流的环境信息(例如其位置或项目标识符)。内置环境变量不需要声明,并且每次执行工作流时都可以使用。如需了解详情,请参阅内置环境变量。
- 部署工作流时,您可以将任意键值对字符串设置为用户定义的环境变量,供工作流在运行时访问。例如,您可以创建一个工作流,该工作流会根据其部署到的环境进行动态配置。如需了解详情,请参阅使用环境变量。
错误处理
您可以透过使用 Workflows 的异常处理(包括采用指数退避算法进行的自动 HTTP 调用重试、自定义错误处理程序及其他高级功能),使工作流具有弹性并自定义其发生故障时的行为。如需了解详情,请参阅工作流错误。
等待中
回调允许工作流执行操作等待其他服务向回调端点发出请求;该请求将继续执行工作流。借助回调,您可以告知工作流指定事件已发生,然后等待该事件而不进行轮询。如需了解详情,请参阅等待使用回调。
您可以通过向工作流的定义添加休眠步骤来暂停工作流的执行。然后,您可以使用 sys.sleep 来轮询给定时间间隔内的数据。如需了解详情,请参阅等待使用轮询。
身份验证和访问控制
由于每个工作流执行都需要进行经过身份验证的调用,因此您可以使用 Workflows 来降低意外或恶意调用的风险。您还可以通过使用基于 IAM 的服务账号来简化与其他 Google Cloud API 的交互,并且可以使用 Secret Manager 连接器安全地存储密钥和密码,以便向外部 API 进行身份验证。如需了解详情,请详细了解身份验证和访问权限控制。
可观测性
Workflows 会自动为 Cloud Logging 中的工作流执行生成执行日志。通过调用日志记录和���定义日志,您还可以控制在工作流执行期间将日志发送到 Logging 的时间。如需了解详情,请参阅将日志发送到 Cloud Logging。
审核日志记录信息可通过 Cloud Audit Logs 获取。如需了解详情,请参阅工作流和工作流执行的审核日志记录信息。
您可以检索指定工作流执行的历史记录,以获取步骤条目列表。每个条目都表示工作流执行中的一个步骤或指令块。步骤条目可帮助您确定错误的来源或优化工作流程的性能。
代码示例
您可以在示例页面中找到许多有用的 Workflows 代码示例。
后续步骤
通过 Google Cloud 控制台或 gcloud CLI 开始使用 Workflows。
详细了解如何创建和更新工作流。
了解如何控制工作流步骤的运行顺序。