

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon SWF 中的任務清單
<a name="swf-dev-task-lists"></a>

任務清單可讓您組織與工作流程相關聯的各種任務。您可以將任務清單想成像動態佇列。在 Amazon SWF 中排程任務時，您可以指定要放入其中的佇列 （任務清單）。同樣地，當您輪詢 Amazon SWF 以取得任務時，您會說出要從哪個佇列 （任務清單） 取得任務。

任務清單提供彈性的機制，可視您使用案例的需求將任務路由給工作者。任務清單是動態的，因此您不需要註冊任務清單或透過動作明確加以建立：只要排程任務，即可建立任務清單 (如果尚未存在)。

「活動」**任務和「決策」**任務有不同的清單。一個任務一律只能在一個任務清單中排程，無法跨清單共享任務。此外，與活動和工作流程一樣，任務清單的範圍是特定 AWS 區域和 Amazon SWF 網域。

**Topics**
+ [決策任務清單](#decision-task-lists)
+ [活動任務清單](#activity-task-lists)
+ [任務路由](#task-routing)

## 決策任務清單
<a name="decision-task-lists"></a>

每個工作流程執行都與特定決策任務清單相關聯。註冊工作流程類型之後 ([RegisterWorkflowType](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RegisterWorkflowType.html) 動作)，您可為該工作流程類型的執行指定預設任務清單。當工作流程啟動者啟動工作流程執行時 (`StartWorkflowExecution` 動作)，可選擇為該工作流程執行指定不同的任務清單。

當決策者輪詢新的決策任務時 (`PollForDecisionTask` 動作)，決策者會指定要從中擷取的決策任務清單。單一決策者可以透過多次呼叫 `PollForDecisionTask`，每次呼叫都使用不同的任務清單，且每個任務清單都專屬於特定工作流程執行，來提供多個工作流程執行。或者，決策者可以輪詢為多個工作流程執行提供決策任務的單一決策任務清單。您也可以透過讓全部決策者向任務清單輪詢工作流程執行，來提供單一工作流程執行。

## 活動任務清單
<a name="activity-task-lists"></a>

單一活動任務清單可包含不同活動類型的任務。任務會依序排程在任務清單上。Amazon SWF 會盡最大努力依序傳回清單中的任務。在某些情況下，任務可能不會依序離開清單。

註冊活動類型之後 ([RegisterActivityType](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RegisterActivityType.html) 動作)，您可為該活動類型指定預設任務清單。根據預設，此類型的活動任務會在指定的任務清單中排程，不過，當決策者排程活動任務時 ([ScheduleActivityTask](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ScheduleActivityTaskDecisionAttributes.html) 決策)，決策者可選擇性指定不同的任務清單來排程任務。如果決策者未指定任務清單，則會使用預設任務清單。因此，您可以根據任務的屬性，將活動任務放在特定任務清單中。例如，您可以將指定信用卡類型之活動任務的所有執行個體放在特定任務清單中。

## 任務路由
<a name="task-routing"></a>

當活動工作者輪詢新的任務時 ([PollForActivityTask](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_PollForActivityTask.html) 動作)，可指定要從中擷取的活動任務清單。如果這樣做，活動工作者就只會接受來自該清單的任務。透過此方法，您可以確保特定任務只會指派給特定活動工作者。例如，您可以建立任務清單，其中包含需要使用高效能電腦的任務。只有在適當硬體上執行的活動工作者才會輪詢該任務清單。另一個範例是建立特定地理區域的任務清單。您可以接著確保只有部署在該區域中的工作者才會領取這些任務。或者，您可以建立高優先順序的任務清單，並一律先檢查該清單。

將特定任務指派給特定活動工作者的這種方式稱為「任務路由」**。任務路由是選擇性的，如果您未在排程活動任務時指定任務清單，則會自動將任務放在預設任務清單中。