

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

# AWS Flow Framework 基本概念：應用程式結構
<a name="awsflow-basics-application-structure"></a>

概念上， AWS Flow Framework 應用程式包含三個基本元件：*工作流程啟動者*、*工作流程工作者*和*活動工作者*。一或多個主機應用程式負責向 Amazon SWF 註冊工作者 （工作流程和活動）、啟動工作者，以及處理清理。工作者處理執行工作流程的機制，並可能在數部主機上實作。

此圖表代表基本 AWS Flow Framework 應用程式：

![電路圖 AWS Flow Framework 應用程式](http://docs.aws.amazon.com/zh_tw/amazonswf/latest/awsflowguide/images/swf-application-model.png)


**注意**  
在三個不同的應用程式中實作這些元件在概念上很方便，但您可以建立應用程式以各種方式實作此功能。例如，您可以使用單一主機應用程式處理活動和工作流程工作者，或使用不同的活動和工作流程主機。您也可以使用多個活動工作者，每個工作者各在不同的主機上處理不同組的活動等。

這三個 AWS Flow Framework 元件會透過將 HTTP 請求傳送至 Amazon SWF 來間接互動，以管理請求。Amazon SWF 會執行下列動作：
+ 維護一或多份決策任務清單，決定工作流程工作者要執行的下一個步驟。
+ 維護一或多份活動任務清單，決定活動工作者要執行哪些任務。
+ 維護工作流程執行的詳細逐步歷史記錄。

透過 AWS Flow Framework，您的應用程式程式碼不需要直接處理圖中所示的許多詳細資訊，例如將 HTTP 請求傳送至 Amazon SWF。您只需呼叫 AWS Flow Framework 方法，架構就會處理幕後的詳細資訊。

## 活動工作者的角色
<a name="aws-flow-concepts-activity-worker"></a>

活動工作者執行工作流程必須完成的各種任務。包括：
+ 活動實作，包含一套針對工作流程執行特定任務的活動方法。
+ [ActivityWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/ActivityWorker.html) 物件，使用 HTTP 長輪詢請求輪詢 Amazon SWF 以執行活動任務。需要任務時，Amazon SWF 會透過傳送執行任務所需的資訊來回應請求。[ActivityWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/ActivityWorker.html) 物件接著會呼叫適當的活動方法，並將結果傳回給 Amazon SWF。

## 工作流程工作者的角色
<a name="aws-flow-concepts-workflow-worker"></a>

工作流程工作者協調執行各種活動、管理資料流程，以及處理失敗的活動。包括：
+ 工作流程實作，包含活動協調邏輯、處理失敗的活動等。
+ 活動用戶端，功能為活動工作者的代理，可讓工作流程工作者排程要非同步執行的活動。
+ [WorkflowWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/WorkflowWorker.html) 物件，使用 HTTP 長輪詢請求來輪詢 Amazon SWF 以進行決策任務。如果工作流程任務清單中有任務，Amazon SWF 會透過傳回執行任務所需的資訊來回應請求。架構接著會執行工作流程來執行任務，並將結果傳回給 Amazon SWF。

## 工作流程啟動者的角色
<a name="aws-flow-concepts-workflow-starter"></a>

工作流程啟動者啟動工作流程執行個體 (也稱為「工作流程執行」**)，可在執行期間與執行個體互動，以將額外資料傳遞給工作流程工作者或取得目前的工作流程狀態。

工作流程啟動者使用工作流程用戶端啟動工作流程執行，在執行期間視需要與工作流程互動，並處理清理。工作流程啟動者可以是本機執行的應用程式、Web 應用程式、 AWS CLI 甚至 AWS 管理主控台。

## Amazon SWF 如何與您的應用程式互動
<a name="aws-flow-concepts-swf-app-interaction"></a>

Amazon SWF 會調解工作流程元件之間的互動，並維護詳細的工作流程歷史記錄。Amazon SWF 不會啟動與元件的通訊；它會等待元件的 HTTP 請求，並視需要管理請求。例如：
+ 如果請求來自工作者，輪詢可用的任務，Amazon SWF 會在任務可用時直接回應工作者。如需輪詢如何運作的詳細資訊，請參閱《*Amazon Simple Workflow Service 開發人員指南*》中的[輪詢任務](https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-comm-proto)。
+ 如果請求是來自活動工作者的通知，指出任務已完成，Amazon SWF 會記錄執行歷史記錄中的資訊，並將任務新增至決策任務清單，以通知工作流程工作者任務已完成，讓其繼續進行下一個步驟。
+ 如果請求來自工作流程工作者來執行活動，Amazon SWF 會記錄執行歷史記錄中的資訊，並將任務新增至活動任務清單中，以指示活動工作者執行適當的活動方法。

此方法可讓工作者在具有網際網路連線的任何系統上執行，包括 Amazon EC2 執行個體、公司資料中心、用戶端電腦等。它們甚至不必在同一個作業系統上執行。因為 HTTP 請求來自工作者，所以不需要對外部開放連接埠，工作者可在防火牆後面執行。

## 如需詳細資訊
<a name="for-more-information"></a>

如需 Amazon SWF 運作方式的更徹底討論，請參閱 [Amazon Simple Workflow Service 開發人員指南](https://docs.aws.amazon.com/amazonswf/latest/developerguide/)。