OpenAICloudflare Developer Platform2026/06/05 15:00

Workflows - Rollback support now available in Workflows

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

元記事

Quick Digest

要約

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

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

Workflowsにステップ単位のロールバック(saga)サポートが追加

Key Points

  • ステップ毎に補償処理を定義
  • 逆順でロールバック実行
  • リトライ・タイムアウト指定可能

Summary

Workflowsがsagaスタイルのロールバックをサポートしました。各 step.do() に補償処理(rollback)を定義でき、インスタンス失敗時にはステップ開始の逆順でロールバックハンドラが実行されます。これにより、在庫予約、決済認可、チケット発行、インフラプロビジョニングなど外部システムをまたぐ複数ステップ処理のクリーンアップを各ステップに近い場所で扱えます。

Key Points

  • 各 step.do() オプションで rollback と rollbackConfig を指定できる(例: rollback: async ({ output }) => { /* undo */ })。
  • rollbackConfig で retries(limit, delay, backoff)と timeout を設定可能。リトライやタイムアウトはロールバック専用に制御できる。
  • インスタンスのステータスレスポンスにロールバック結果が含まれるため、実行状況をAPI経由で確認できる。
  • Workflows の分析(analytics)はロールバックのライフサイクルイベントを出力し、順方向の失敗とロールバック失敗を区別してデバッグ可能。
  • 既存のトップレベルの catch にすべてのクリーンアップを集約するより、各ステップに補償処理を置くことでコードの局所性と可観測性が向上する。

Practical notes for engineers

  • 外部副作用を伴うステップには必ず補償処理を用意する。出力(output)にリソースID等を返して rollback で利用する。
  • retry/backoff と timeout をロールバック固有に設定して、恒常的失敗と一時的失敗で挙動を分ける。
  • インスタンスAPIとWorkflows analyticsのイベントを確認して、フォワード実行の失敗とロールバック失敗を個別に追跡する。

参照: rollback オプション(ドキュメント)で詳細設定を確認してください。

Full Translation

翻訳

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

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

Workflows - Workflowsでロールバックサポートが利用可能になりました

Rollback support now available in Workflows

公開日: 2026-06-05

概要

Workflowsはsagaスタイルのロールバックをサポートするようになりました。各 step.do() に対して補償ロジック(rollbackハンドラ)を追加でき、下流の処理が失敗した場合に自動的に補償処理が実行されます。インスタンスが失敗した場合、ロールバックハンドラはステップの開始順序の逆順で実行されます。

利点とユースケース

  • 複数ステップで外部システムに触れる操作(inventory reservations、payment authorization、ticket creation、infrastructure provisioning など)に有用。
  • トップレベルの catch にすべてのクリーンアップ処理を書く代わりに、各ステップのそばにそのステップを取り消す補償アクションを置ける。
  • ロールバックハンドラは独自の retry/timeout 設定をサポート。
  • Workflows はインスタンスステータス応答でロールバックの結果を公開。
  • Workflows analytics はロールバックのライフサイクルイベントも送出するため、本番ワークフローのデバッグ時に前進実行の失敗とロールバックの失敗を区別しやすくなる。

動作のポイント

  • ロールバックは各ステップ単位で定義。
  • ロールバックはステップの出力(output)にアクセス可能で、必要に応じてその出力を使って補償処理を行う。
  • rollbackConfig でリトライやタイムアウトの挙動を設定可能。
  • ロールバック結果はインスタンスのステータスに反映され、analytics イベントとしても記録される。

使用例(JavaScript)

await step.do(
  "provision resource",
  async () => {
    const resource = await provisionResource();
    return { resourceId: resource.id };
  },
  {
    rollback: async ({ output }) => {
      const { resourceId } = output;
      await deleteResource(resourceId);
    },
    rollbackConfig: {
      retries: { limit: 3, delay: "15 seconds", backoff: "linear" },
      timeout: "2 minutes",
    },
  },
);

使用例(TypeScript)

await step.do(
  "provision resource",
  async () => {
    const resource = await provisionResource();
    return { resourceId: resource.id };
  },
  {
    rollback: async ({ output }) => {
      const { resourceId } = output as { resourceId: string };
      await deleteResource(resourceId);
    },
    rollbackConfig: {
      retries: { limit: 3, delay: "15 seconds", backoff: "linear" },
      timeout: "2 minutes",
    },
  },
);

参照

Refer to rollback options to learn more.