

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

# Amazon SWF 中的任務
<a name="swf-dev-tasks"></a>

Amazon SWF 透過提供稱為任務的工作指派，與活動工作者和決策者互動。Amazon SWF 中有三種類型的任務：
+ **活動任務** – *活動*任務會告知活動工作者執行其功能，例如檢查庫存或向信用卡收費。活動任務包含活動工作者執行其功能所需的所有資訊。
+ **Lambda 任務** – *Lambda* 任務類似於活動任務，但會執行 Lambda 函數，而非傳統的 Amazon SWF 活動。如需如何定義 Lambda 任務的詳細資訊，請參閱「[AWS Lambda Amazon SWF 中的 任務](lambda-task.md)」。
+ **決策任務** – *決策*任務會告知決策者工作流程執行的狀態已變更，以便決策者可以判斷需要執行的下一個活動。決策任務包含目前工作流程歷史記錄。

Amazon SWF 會在工作流程開始時以及工作流程狀態變更時排程決策任務，例如活動任務完成時。每個決策任務皆包含以分頁檢視的整個工作流程執行歷史記錄。決策者會分析工作流程執行歷史記錄，並使用一組指定工作流程執行中後續應發生事項的決策來回應 Amazon SWF。基本上，每個決策任務都讓決策者有機會評估工作流程，並向 Amazon SWF 提供方向。

為了確保不會處理任何衝突決策，Amazon SWF 會將每個決策任務只指派給一個決策者，並一次僅允許一個決策任務在工作流程執行中處於作用中狀態。

下表示範與工作流程和決策者相關之不同建構間的關係。


| 邏輯設計 | 註冊為 | 執行者 | 收到並執行 | 產生 | 
| --- | --- | --- | --- | --- | 
|  工作流程  |  工作流程類型  |  決策者  |  決策任務  |  決策  | 

當活動工作者完成活動任務時，它會向 Amazon SWF 報告任務已完成，並包含產生的任何相關結果。Amazon SWF 會使用指出任務已完成的事件來更新工作流程執行歷史記錄，然後排程決策任務，將更新的歷史記錄傳輸給決策者。

Amazon SWF 會將每個活動任務只指派給一個活動工作者。任務指派之後，就沒有其他活動工作者可以宣告或執行該任務。

下表示範與活動相關之不同建構間的關係。


|  邏輯設計  |  註冊為  |  執行者  |  收到並執行  |  產生  | 
| --- | --- | --- | --- | --- | 
|  活動  |  活動類型  |  活動工作者  |  個活動任務  |  結果資料  | 