Amazon SWF タスクリスト - Amazon Simple Workflow Service

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

Amazon SWF タスクリスト

タスクリストを使用すると、ワークフローに関連付けられたさまざまなタスクを整理することができます。タスクリストは、動的クエリと類似したものと考えることができます。タスクが Amazon SWF でスケジュールされた場合、これを配置するキュー (タスクリスト) を指定できます。同様に、タスクに対して Amazon SWF をポーリングする場合、タスクの取得元となるキュー (タスクリスト) を指定します。

タスクリストは、ユースケースでの必要性に応じて、タスクをワーカーにルーティングするための柔軟なメカニズムを提供します。タスクリストは、タスクリストを登録したり、アクションを通じて明示的に作成したりする必要がないという点で動的です。タスクをスケジュールするだけで、既に存在していない場合はタスクリストが作成されます。

アクティビティタスクや決定タスクには別のリストがあります。タスクは常に 1 つのタスクリストでのみスケジュールされ、リスト間で共有されることはありません。さらに、アクティビティやワークフローと同様に、タスクリストのスコープは特定の AWS リージョンおよび Amazon SWF ドメインになります。

決定タスクリスト

各ワークフロー実行は、特定の決定タスクリストに関連付けられます。ワークフロータイプ (RegisterWorkflowType アクション) が登録されたら、そのワークフロータイプの実行のデフォルトのタスクリストを指定できます。ワークフロースターターがワークフロー実行 (StartWorkflowExecution アクション) を開始する際に、そのワークフロー実行に対して異なるタスクリストを指定するオプションがあります。

ディサイダーが新しい決定タスク (PollForDecisionTask アクション) をポーリングするときに、ディサイダーは使用する決定タスクリストを指定します。1 つのディサイダーは、呼び出しごとに別のタスクリストを使用し、PollForDecisionTask を複数回呼び出して複数のワークフロー実行に対応できます。各タスクリストは特定のワークフロー実行に固有です。または、ディサイダーは複数のワークフロー実行の決定タスクを提供する 1 つの決定タスクリストをポーリングできます。また、すべてがそのワークフロー実行のタスクリストをポーリングすることによって、1 つのワークフロー実行に対応する複数のディサイダーを持つことができます。

アクティビティタスクリスト

1 つのアクティビティタスクリストに、異なるアクティビティタイプのタスクを含めることができます。タスクはタスクリストに順番にスケジュールされます。Amazon SWF はベストエフォートベースで、順番にリストからタスクを返します。状況によっては、タスクが順番にリストから返されない場合があります。

アクティビティタイプを登録する (RegisterActivityType アクション) ときに、そのアクティビティタイプのデフォルトのタスクリストを指定できます。デフォルトでは、このタイプのアクティビティタスクは指定されたタスクリストでスケジュールされます。ただし、ディサイダーがアクティビティタスクをスケジュールする (ScheduleActivityTask 決定) ときに、ディサイダーはオプションでタスクをスケジュールする別のタスクリストを指定できます。ディサイダーがタスクリストを指定しない場合は、デフォルトのタスクリストが使用されます。その結果、タスクの属性に従って特定のタスクリストにアクティビティタスクを配置できます。たとえば、特定のタスクリストに、特定のクレジットカードタイプのアクティビティタスクのすべてのインスタンスを配置できます。

タスクのルーティング

アクティビティワーカーが新しいタスクをポーリングする (PollForActivityTask アクション) ときに、使用するアクティビティタスクリストを指定できます。その場合、アクティビティワーカーは、そのリストからのみタスクを受け取ります。このようにして、特定のタスクを特定のアクティビティワーカーにのみ割り当てることができます。たとえば、高性能なコンピュータの使用を必要とするタスクを保持するタスクリストを作成するとします。適切なハードウェアで実行しているアクティビティワーカーのみが、そのタスクリストをポーリングします。別の例として、特定の地域的リージョンのタスクリストを作成するとします。その場合、そのリージョンにデプロイされたワーカーのみが、それらのタスクを選択するようにできます。または、優先順位が高い注文のタスクリストを作成し、常に最初にそのリストを確認するようにできます。

この方法で特定のアクティビティワーカーに特定のタスクを割り当てることを、タスクのルーティングと呼びます。タスクのルーティングはオプションです。アクティビティタスクをスケジュールするときにタスクリストを指定しない場合、タスクはデフォルトのタスクリストに自動的に配置されます。