跳转到内容
搜索文档

更新日志

Cloudflare 的最新更新与改进。

Back to all posts

Workflows 回滚处理程序现在包含步骤上下文

Workflows 使构建可靠的多步骤应用程序变得更加容易,这些应用程序能够在下游系统故障时恢复。回滚处理程序现在通过 ctx 对象接收正在回滚的步骤的原始步骤上下文。这包括 ctx.step.namectx.step.countctx.attempt 以及应用了默认值的步骤 config

步骤配置包含用于该步骤的重试和超时设置,因此您可以根据这些字段自定义步骤恢复逻辑。

await step.do(
	"create charge",
	async () => {
		const charge = await createCharge();
		return { chargeId: charge.id };
	},
	{
		rollback: async ({ ctx, output, error }) => {
			// `output` 是被回滚步骤返回的值。
			const { chargeId } = output as { chargeId: string };
			await refundCharge(chargeId, {
				// `ctx` 是原始步骤上下文,包括步骤名称、计数、尝试次数和配置。
				reason: `${ctx.step.name}: ${error.message}`,
			});
		},
		rollbackConfig: {
			// `rollbackConfig` 控制回滚处理程序的重试和超时。
			retries: { limit: 3, delay: "30 seconds", backoff: "linear" },
			timeout: "5 minutes",
		},
	},
);

请参阅回滚选项了解更多信息。