HelloWorld 應用程式 - AWS Flow Framework 對於爪哇

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

HelloWorld 應用程式

為介紹 Amazon SWF 應用程式的結構方式,我們會建立一個運作如同工作流程但只在本機單一程序中執行的 Java 應用程式。不需要連線到 Amazon Web Services。

注意

所以此HelloWorldWorkflow範例建立於這個連線到 Amazon SWF 來處理工作流程管理。

由三個基本元件組成的工作流程應用程式:

  • 「活動工作者」支援一組「活動」,它們每一個都是執行特定任務的獨立執行方法。

  • 「工作流程工作者」協調活動執行並管理資料流程。其以程式設計方式具體化「工作流程拓撲」,基本上是定義各種活動執行的時機、是依序還是同時執行等等的流程圖。

  • 「工作流程啟動者」會啟動稱為「執行」的工作流程執行個體,並在執行期間與之互動。

HelloWorld 實作為三種類別和兩個相關的界面,會在下列各節中說明。開始之前,您應該建立開發環境並建立新的AWSJava 項目,如設定AWS Flow Framework適用於 Java 的。下列演練所使用的套件全都名為 helloWorld.XYZ。若要使用這些名稱,請在 aop.xml 中如下設定 within 屬性:

... <weaver options="-verbose"> <include within="helloWorld..*"/> </weaver>

若要實作 HelloWorld,請在AWS專案開發套件helloWorld.HelloWorld並新增下列檔案:

  • 名為 GreeterActivities.java 的界面檔案

  • 名為 GreeterActivitiesImpl.java 的類別檔案,其實作活動工作者。

  • 名為 GreeterWorkflow.java 的界面檔案。

  • 名為 GreeterWorkflowImpl.java 的類別檔案,實作工作流程工作者。

  • 名為 GreeterMain.java 的類別檔案,其實作工作流程啟動者。

下列各節會詳細討論,並包含各元件的完整程式碼,您可將它們新增至適當的檔案。

HelloWorld 活動實作

HelloWorld 會將在主控台中列印 "Hello World!" 歡迎語的完整任務分割成三項任務,每一個都由「活動方法」執行。活動方法在 GreeterActivities 界面中定義,如下所示。

public interface GreeterActivities { public String getName(); public String getGreeting(String name); public void say(String what); }

HelloWorld 會實作一項活動 GreeterActivitiesImpl,這會提供 GreeterActivities 方法,如下所示:

public class GreeterActivitiesImpl implements GreeterActivities { @Override public String getName() { return "World"; } @Override public String getGreeting(String name) { return "Hello " + name + "!"; } @Override public void say(String what) { System.out.println(what); } }

活動彼此互不影響,且通常為不同的工作流程所使用。例如,任何工作流程皆可使用 say 活動在主控台中列印字串。工作流程還可以實作多項活動,每一項都執行不同的任務集。

HelloWorld 工作流程工作者

若要打印「Hello World!」 ,活動任務必須依正確的順序使用正確的數據執行。HelloWorld 工作流程工作者會根據簡易的「線性工作流程拓撲」協調活動執行,如下圖所示。

線性工作流程拓撲

依序執行三項活動,資料即會依照程序由一項活動流動至下一項活動。

HelloWorld 工作流程工作者只有一個方法 (工作流程的進入點),其在 GreeterWorkflow 界面中定義,如下所示:

public interface GreeterWorkflow { public void greet(); }

GreeterWorkflowImpl 類別實作此界面,如下所示:

public class GreeterWorkflowImpl implements GreeterWorkflow{ private GreeterActivities operations = new GreeterActivitiesImpl(); public void greet() { String name = operations.getName(); String greeting = operations.getGreeting(name); operations.say(greeting); } }

greet 方法實作 HelloWorld 拓撲的方法是:建立 GreeterActivitiesImpl 執行個體、依正確的順序呼叫各活動方法,然後將適當的資料傳遞到各方法。

HelloWorld 工作流程啟動者

「工作流程啟動者」是開始執行工作流程的應用程式,也可能會與執行中的工作流程互動。GreeterMain 類別會實作 HelloWorld 工作流程啟動者,如下所示:

public class GreeterMain { public static void main(String[] args) { GreeterWorkflow greeter = new GreeterWorkflowImpl(); greeter.greet(); } }

GreeterMain 會建立 GreeterWorkflowImpl 執行個體並呼叫 greet 執行工作流程工作者。執行GreeterMain作為 Java 應用程式,您應該會看到「Hello World!」 在主控台輸出中。