ディサイダーコードの変更: バージョニングと機能フラグ - AWS Flow Framework for Java

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

ディサイダーコードの変更: バージョニングと機能フラグ

このセクションでは、次の 2 つのメソッドを使用して、ディサイダーに対する後方互換性のない変更を回避する方法について説明します。

  • バージョニングは、基本的な解決策です。

  • 機能フラグ付きバージョニングは、バージョニングソリューションで構築されます。新しいバージョンのワークフローは導入されないため、バージョンを更新するために新しいコードをプッシュする必要はありません。

これらのソリューションを行う前に、「シナリオの例」セクションを確認します。このセクションでは、後方互換性のない変更の原因と影響について記載されています。

再生プロセスとコード変更

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

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

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

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