场景执行、周期及其阶段
预计学习时间:2分钟
Make 是一个事务处理系统,其工作方式类似于关系型数据库。每次场景执行均始于初始化阶段,经过至少一个包含操作和提交/回滚阶段的周期,最终结束于结算阶段。
在初始化阶段,系统将建立所有必需的连接,并检验每个模块是否具备执行其指定操作的能力。 每个周期代表由一系列操作构成的不可分割的工作单元。用户可在场景设置中指定周期的最大次数,默认为1次。 在操作阶段,将执行读取和写入操作:
- 读取操作是指从某个服务获取数据,随后依照预定场景由其他模块进行处理。例如,Dropbox > 观察文件模块会返回自上一次场景执行以来新增的文件束。
- 写入操作指的是将数据发送至特定服务以供进一步处理。例如,Dropbox > 上传文件模块会将文件上传至Dropbox文件夹。
若所有模块的操作阶段均顺利完成,则进入提交阶段。在此阶段,所有由模块执行的操作将被确认提交。这意味着Make会向所有参与操作阶段的服务报告成功信息。 如果在操作阶段或提交阶段的任何模块中发生错误,该阶段将被终止,并开始回滚阶段,以此使得该周期中的所有操作作废。部分模块不支持回滚,其操作一旦执行便无法撤销。 支持回滚的模块会被标记为ACID。未标记为ACID的模块不支持回滚,在其他模块出错时无法恢复至初始状态。 在结算阶段,所有开放的连接(如FTP连接、数据库连接等)将被关闭,场景执行至此完毕。
示例
数据库间的数据迁移 以下示例展示如何连接三个ACID模块,目的在于从MySQL数据库中提取新行,将其迁移到MSSQL数据库后,再将MSSQL数据库中的行ID迁入PostgreSQL数据库。
场景启动时,首先进行初始化阶段。Make 逐一确认与MySQL、MSSQL和PostgreSQL数据库的连接是否成功。如果连接顺利且成功,Make 进入操作阶段。如遇错误,场景将立即终止,并直接转入结算阶段。
在无误的情况下,操作阶段开始。预定程 序选取(读取)MySQL中的数据行(数据包)。然后,这些行数据将传递至下一模块,在MSSQL数据库的指定表中进行写入操作。如无问题,随后将调用PostgreSQL程序将前一模块返回的行ID写入到表中。
操作阶段顺利完成后,将进入提交阶段。此时,Make 将对每个数据库执行SQL COMMIT命令,确认写入操作。
然而,若操作或提交阶段因错误(如连接失败)中断,Make 将执行回滚。在回滚阶段,Make 将检查所有模块,并对每个模块执行SQL ROLLBACK命令,使每个数据库恢复至初始状态。
最终,在结算阶段,每个模块将关闭其与数据库的连接。