OpenAICloudflare Developer Platform2026/06/23 12:00

Workflows - Workflows rollback handlers now include step context

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

Workflows: ロールバックハンドラがステップコンテキストを受け取るようになりました

Key Points

  • ctxにステップ情報を提供
  • ステップの retry/timeout を利用可
  • rollbackConfigでリトライ制御 possible

Summary

Workflowsのロールバックハンドラが、ロールバック対象の元のステップコンテキスト(ctx)を受け取るようになりました。ctxには ctx.step.name、ctx.step.count、ctx.attempt と、デフォルトが適用されたステップ設定(リトライやタイムアウトなど)が含まれます。これにより、ロールバック処理でステップ固有の設定を参照して復旧ロジックを柔軟に実装できます。

Key Points

  • ロールバックハンドラは ({ ctx, output, error }) を受け取るようになった。outputはロールバック対象ステップの戻り値、errorは発生したエラー。
  • ctxには ctx.step.name、ctx.step.count、ctx.attempt と、デフォルトが適用されたステップの config(retry/timeout 設定を含む)が含まれる。
  • rollbackConfig はロールバックハンドラ自体の retries や timeout を制御する(例: limit, delay, backoff, timeout)。

使い方の例(TypeScript)

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 };
    // ctx からステップ名や試行回数、config を参照して処理を分岐可能
    await refundCharge(chargeId, {
      reason: `${ctx.step.name}: ${error.message}`,
    });
  },
  rollbackConfig: {
    retries: { limit: 3, delay: "30 seconds", backoff: "linear" },
    timeout: "5 minutes",
  },
});

この更新により、ロールバックロジックで元のステップ情報と設定を参照して、より堅牢な復旧処理を実装できます。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

Workflows - ロールバックハンドラーにステップコンテキストが含まれるようになりました

Workflows — ロールバックハンドラーにステップコンテキストが含まれるようになりました

公開日: 2026-06-23

Workflows は、下流システムが失敗した際にも回復可能な信頼性の高いマルチステップアプリケーションを構築しやすくするための機能です。今回の更新により、ロールバックハンドラーはロールバック対象のステップに対応する元のステップコンテキストを ctx オブジェクトとして受け取るようになりました。

主な変更点:

  • ロールバックハンドラーで受け取る ctx には次の情報が含まれます:
    • ctx.step.name
    • ctx.step.count
    • ctx.attempt
    • デフォルトが適用されたステップの設定(step config)
  • ステップ設定には当該ステップで使用された再試行(retry)およびタイムアウト(timeout)の設定が含まれるため、それらのフィールドに応じてステップの回復ロジックをカスタマイズできます。

TypeScript の例:

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` は元のステップコンテキスト(step name, count, attempt, config を含む)です。
            reason: `${ctx.step.name}: ${error.message}`,
        });
    },
    rollbackConfig: {
        // `rollbackConfig` はロールバックハンドラーの再試行やタイムアウトを制御します。
        retries: { limit: 3, delay: "30 seconds", backoff: "linear" },
        timeout: "5 minutes",
    },
});

詳細は rollback options を参照してください。