

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ディサイダーコードの変更: バージョニングと機能フラグ
<a name="java-flow-making-changes-decider-code"></a>

このセクションでは、次の 2 つのメソッドを使用して、ディサイダーに対する後方互換性のない変更を回避する方法について説明します。
+ [バージョニング](java-flow-making-changes-solutions.md#use-versioning)は、基本的な解決策です。
+ [機能フラグ付きバージョニング](java-flow-making-changes-solutions.md#use-feature-flags)は、バージョニングソリューションで構築されます。新しいバージョンのワークフローは導入されないため、バージョンを更新するために新しいコードをプッシュする必要はありません。

これらのソリューションを行う前に、「[シナリオの例](java-flow-making-changes-example-scenario.md)」セクションを確認します。このセクションでは、後方互換性のない変更の原因と影響について記載されています。

## 再生プロセスとコード変更
<a name="replay-process-code-changes"></a>

 AWS Flow Framework for Java ディサイダーワーカーが決定タスクを実行する場合、ステップを追加する前に、まず実行の現在の状態を再構築する必要があります。ディサイダーは、*再生*と呼ばれるプロセスを使用してこの作業を行います。

再生プロセスでは、ディサイダーコードが最初から再実行されるのに対し、すでに実行されたイベントの履歴も同時に更新されます。イベント履歴を進めることで、フレームワークでシグナルやタスクの完了に反応し、コードの `Promise` オブジェクトのブロックを解除します。

ディサイダーコードが実行されると、フレームワークはカウンターを増分し、スケジュールされた各タスク (アクティビティ、Lambda 関数、タイマー、子ワークフロー、送信中のシグナル) に ID を割り当てます。フレームワークは、この ID を Amazon SWF に送信し、`ActivityTaskCompleted` などの履歴イベントにその ID を追加します。

再生プロセスを成功させるには、ディサイダーコードが決定的であり、すべてのワークフロー実行の各ディシジョンにおいて、同じタスクを同じ順序でスケジュールすることが重要です。この要件に準拠しない場合、フレームワークは、`ActivityTaskCompleted` イベントの ID を既存の `Promise` オブジェクトと一致させることができない場合があります。