本页目录

场景(scenario)执行、周期(cycle)和阶段(phase)

Make 是一个事务性系统,类似于 关系型数据库,其中场景(scenario)内的所有操作都作为受控过程的一部分执行。

每个场景(scenario)执行都会经历以下阶段(phase):

  • 初始化(Initialization)

  • 一个或多个周期(cycle)

  • 终结(Finalization)

初始化(Initialization)阶段(phase)

在**初始化(initialization)阶段(phase)**期间,所有必要的连接都会创建并验证。Make 还会检查每个模块(module)是否可以执行其预期操作。

周期(Cycle)

初始化(initialization)阶段(phase)之后是至少一个周期(cycle),其中包括:

  • 操作(Operation)阶段(phase)(读取或写入)

  • 提交/回滚(Commit/Rollback)阶段(phase)(最终确定或丢弃更改)。

每个周期(cycle)代表一个不可分割的工作单元,由一系列操作组成。

可以在 场景(scenario)设置 中设置最大周期(cycle)数。默认数量为 1。

操作(Operation)阶段(phase)

在**操作(operation)阶段(phase)**期间,Make 执行读取和写入操作。

  • 读取(Reading)操作包括从服务获取数据,然后根据预定义的场景(scenario)由其他模块进行处理。例如,Dropbox > Watch files 模块返回自上次场景(scenario)执行以来创建的新数据包(bundle)(文件)。

  • 写入(Writing)操作包括将数据发送到给定服务以进行进一步处理。例如,Dropbox > Upload a file 模块将文件上传到 Dropbox 文件夹。

提交(Commit)和回滚(Rollback)阶段(phase)

操作(operation)阶段(phase)之后,Make 会提交或回滚操作:

  • 如果所有模块(module)的操作均成功,则开始提交(commit)阶段(phase)。在此阶段,模块执行的所有操作都会被提交。Make 向操作阶段涉及的所有服务发送成功信息。

  • 如果在任何模块的操作或提交阶段发生错误,该阶段将中止并启动回滚(rollback)阶段(phase),使给定周期内的所有操作无效。

并非所有模块都允许回滚。支持回滚的模块标有 ACID 标签。没有此标签的模块不支持回滚,如果在其他模块中出现错误,无法还原到初始状态。

在回滚的上下文中,当在一次运行中处理来自触发器的多个数据包(bundle)时,设置最大周期(cycle)数特别有用。

例如,考虑以下场景(scenario):

  • 你使用轮询触发器(polling trigger)检查新数据。

  • 你不需要场景(scenario)每分钟运行一次,因此将其计划为每小时运行一次。

  • 一次执行中有多个数据包(bundle)需要处理。

在这种情况下,你有两个选项:

  1. 提高模块(module)设置中的触发器限制:提高触发器每个周期(cycle)检索的最大结果数(例如,从 2 提高到 10)。场景(scenario)仍将使用单个周期,但一次性处理更多数据。

  2. 提高场景(scenario)设置中的最大周期(cycle)数:保持触发器限制较低(例如 1),但配置场景(scenario)在多个周期中运行(例如,从 1 到 10)。

例如,如果在处理第 10 个数据包(bundle)时发生错误:

  • 使用第一个选项(单个周期,更高的触发器限制),整个周期将被回滚。所有已处理的数据包都不会保存,所有内容都必须在下一次运行中重新处理。

  • 使用第二个选项(多个周期,较低的触发器限制),只有最后一个周期(失败的数据包)会被回滚。由于之前的周期已经提交,只有那个失败的数据包需要在下次运行时重新处理。这种方法可以节省时间,并防止不必要地重新处理已成功完成的工作。

终结(Finalization)阶段(phase)

在**终结(finalization)阶段(phase)**期间,打开的连接(例如 FTP 连接、数据库连接等)会被关闭,场景(scenario)执行完成。

示例

在数据库之间传输数据包(bundle)

以下示例展示了如何连接三个 ACID 模块。该场景(scenario)的目标是从 MySQL 数据库获取新行,将它们插入(传输)到 MSSQL 数据库,然后将 MSSQL 数据库中这些行的 ID 插入到 PostgreSQL 数据库。

场景执行示例

当场景(scenario)启动时,首先执行初始化阶段(phase)。Make 会逐一验证与 MySQL、MSSQL 和 PostgreSQL 数据库的连接。如果一切正常且连接成功,Make 会进入操作阶段(phase)。如果发生错误,则改为启动终结阶段(phase)而不是操作阶段(phase),场景(scenario)终止。

如果没有错误,**操作阶段(phase)**开始。一个预设过程从 MySQL 中选择(读取)表行(数据包)。这些行随后被传递到下一个模块,该模块将它们写入 MSSQL 数据库中的选定表。如果一切正常,则调用最后一个 PostgreSQL 过程,将前一个模块返回的行 ID 插入到表中。

如果操作阶段成功完成,**提交阶段(phase)**开始。Make 为每个数据库调用 SQL COMMIT 命令,写入操作被提交。

但是,如果操作阶段或提交阶段因错误(例如连接失败)而失败,Make 会调用回滚。在**回滚阶段(phase)**期间,Make 遍历所有模块,并为每个模块执行 SQL ROLLBACK 命令,以将每个数据库还原到其初始状态。

最后,在**终结阶段(phase)**期间,每个模块关闭与数据库的连接。

本文包含联盟推广链接。通过这些链接注册不会增加你的费用,但会帮助我们持续产出高质量的免费内容。

理解概念后,先选低风险流程

如果这个概念对应你的真实重复任务,可以先从可人工复核的小流程开始尝试。价格、额度和模块限制请以官方页面为准。

✓ 先跑低风险流程✓ 保留人工复核✓ 价格和额度以官方页面为准
选好流程后打开 Make