使用 Amazon SWF 開發工作流程元件 - Amazon Simple Workflow Service

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

使用 Amazon SWF 開發工作流程元件

開發分散式應用程式需要協調許多元件,並處理遠端通訊固有的延遲和不可靠性。

透過 Amazon Simple Workflow Service (Amazon SWF),您可以提供程式設計模型和基礎設施來協調分散式元件,並以可靠的方式維護其執行狀態,藉此開發非同步和分散式應用程式。透過依賴 Amazon SWF,您可以自由地專注於建立應用程式的各個方面來區分它。

工作流程的元件

工作流程的元件 Amazon SWF 中的基本概念是工作流程。工作流程是一組實現一些目標的「活動」,加上協調這些活動的邏輯。例如,工作流程可能會收到客戶訂單,並採取履行訂單所需的任何動作。

每個工作流程都會在稱為網域的資源中執行,以控制工作流程的範圍。帳戶 AWS 可以有多個網域,每個網域都可以包含多個工作流程,但不同網域中的工作流程無法互動。

設計 Amazon SWF 工作流程時,您可以定義每個必要的活動。然後,您可以將每個活動註冊到 Amazon SWF 作為活動類型。您將提供名稱、版本和逾時值。例如,客戶可能預期訂單會在 24 小時內出貨。

在執行工作流程的過程中,有些活動可能需要執行多次,並可能有不同的輸入。例如,在客戶訂單工作流程中,您可能會有處理購買項目的活動。如果客戶購買多個項目,則此活動必須執行多次。Amazon SWF 具有活動任務的概念,代表一個活動叫用。在我們的範例中,每個項目的處理會以單一活動任務表示。

活動工作者是接收活動任務、執行它們並提供結果的程式。任務實際上可能由人員執行。例如,統計分析師可能會收到資料集、分析資料,然後傳回其分析。

活動任務和執行它們的活動工作者可以同步或非同步執行。工作者可以在一個位置執行或分散在多部電腦,可能位於不同的地理區域。不同的活動工作者可以使用不同的程式設計語言撰寫,並在不同的作業系統上執行。例如,一個活動工作者可能在亞洲的伺服器上執行,而另一個活動工作者可能在北美洲的行動裝置上執行。

工作流程的協調邏輯包含在稱為「決策者」的軟體程式中。決策者會排程活動任務、向活動工作者提供輸入、處理工作流程進行時抵達的事件,並在達到目標後結束 (或關閉) 工作流程。

Amazon SWF 服務的角色是在決策者、活動工作者和其他相關實體之間交換資料的可靠中樞,例如管理工作流程的人員。Amazon SWF 也會維護每個工作流程執行的狀態,讓您的應用程式不必以耐久的方式存放狀態。

決策者透過從 Amazon SWF 接收決策任務,並以決策回應 Amazon SWF 來引導工作流程。決策代表動作或一組動作,這是工作流程中的後續步驟。一個典型的決策是排程活動任務。決策也可以用來延遲具有計時器的任務、請求取消進行中的任務,以及完成工作流程。

活動工作者和決策者接收其任務 (分別為活動任務和決策任務) 的機制是透過輪詢 Amazon SWF 服務。

Amazon SWF 透過在每個決策任務中包含目前工作流程執行歷史記錄的副本,通知決策者工作流程的狀態。工作流程執行歷史記錄是由事件組成,每個事件代表工作流程執行狀態中的一項重大變更。事件的範例包括任務完成、任務逾時或計時器過期。歷史記錄是工作流程進度之完整一致的權威記錄。

Amazon SWF 存取控制使用 AWS Identity and Access Management (IAM),因此您可以控制對 AWS 資源的存取。例如,您可以允許使用者存取您的帳戶,但只能執行特定網域中的某些工作流程。

執行您的工作流程

以下概述在 Amazon SWF 中開發和執行工作流程所需的步驟:

  1. 撰寫活動工作者以執行工作流程中的處理步驟。

  2. 撰寫決策者來處理工作流程的協調邏輯。

  3. 向 Amazon SWF 註冊您的活動和工作流程。

    您可以編寫程式或使用 執行此步驟 AWS Management Console。

  4. 啟動您的活動工作者和決策者。

    這些演員可以在可存取 Amazon SWF 端點的任何運算裝置上執行。例如,您可以使用雲端中的運算執行個體,例如 Amazon Elastic Compute Cloud (Amazon EC2);資料中心的伺服器;甚至是行動裝置,來託管決策者或活動工作者。啟動後,決策者和活動工作者應該開始輪詢 Amazon SWF 任務。

  5. 啟動您工作流程的一或多個執行。

    您可以透過程式設計方式或透過 啟動工作流程 AWS Management Console。

    每個執行都獨立執行,而且您可以為每個執行提供其各自的輸入資料集。啟動執行時,Amazon SWF 會排程初始決策任務。為了回應,您的決策者會開始產生啟動活動任務的決策。執行會繼續進行,直到您的決策者決定關閉執行為止。

  6. 使用 檢視工作流程執行 AWS Management Console。

    您可以篩選和檢視執行中和已完成執行的完整詳細資訊。例如,您可以選取開啟的執行,以查看哪些任務已完成及其結果。

設定開發環境

您可以選擇使用 支援的任何程式設計語言來開發 Amazon SWF AWS。對於 Java AWS Flow Framework 開發人員,也可以使用 。如需詳細資訊,請參閱 AWS Flow Framework網站,請參閱 AWS Flow Framework Java 開發人員指南

為了減少延遲並將資料存放在符合您需求的位置,Amazon SWF 在不同區域中提供端點

Amazon SWF 中的每個端點都是完全獨立的。您在某個區域中註冊的任何網域、工作流程和活動都不會與另一個區域中的資料或屬性共用。

當您註冊 Amazon SWF 網域、工作流程或活動時,它只會存在於您註冊它的區域內。例如,您可以在SWF-Flows-1兩個不同的區域中註冊名為 的網域,但它們不會彼此共用資料或屬性,每個都充當完全獨立的網域。

如需 Amazon SWF 端點的清單,請參閱區域和端點

使用 AWS SDKs 開發

Amazon SWF 受適用於 Java、.NET、Node.js、PHP、Python 和 Ruby AWS SDKs 支援,提供以您選擇的程式設計語言使用 Amazon SWF HTTP API 的便利方式。

您可以使用這些程式庫公開的 API 來開發決策者活動工作者工作流程啟動者。此外,您可以透過這些程式庫使用可見性操作,以便開發自己的 Amazon SWF 監控和報告工具。

若要下載開發和管理應用程式的工具 AWS,包括 SDKs,請前往 開發人員中心

如需每個 SDK 中 Amazon SWF 操作的詳細資訊,請參閱 SDK 的語言特定參考文件。

考慮 AWS Flow Framework

AWS Flow Framework 是增強型 SDK,用於撰寫在 Amazon SWF 上作為工作流程執行的分散式非同步程式。此架構適用於 Java 程式設計語言,並提供撰寫複雜分散式程式的類別。

使用 AWS Flow Framework,您可以使用預先設定的類型,將工作流程的定義直接映射到程式中的方法。 AWS Flow Framework 支援標準物件導向概念,例如例外型錯誤處理。使用 編寫的程式 AWS Flow Framework 可以完全在您偏好的編輯器或 IDE 內建立、執行和偵錯。如需詳細資訊,請參閱 AWS Flow Framework網站,請參閱 AWS Flow Framework Java 開發人員指南