HelloWorld アプリケーション - AWS Flow Framework for Java

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

HelloWorld アプリケーション

Amazon SWF アプリケーションの開発方法を導入するために、ワークフローのように動作するが、1 つのプロセスでローカルに実行する Java アプリケーションを作成します。アマゾン ウェブ サービスへの接続は必要ありません。

注記

HelloWorldWorkflow の例では、これを基に構成されており、Amazon SWF に接続してワークフローを管理します。

ワークフローアプリケーションは、3 つの基本コンポーネントで構成されています。

  • アクティビティワーカーは、一連のアクティビティをサポートしており、各アクティビティは、特定のタスクを実行するために個別に実行するメソッドです。

  • ワークフローワーカーは、アクティビティの実行を調整し、データフローを管理します。ワークフロートポロジーのプログラムによる結論です。これは、基本的に、順番または同時に実行されるかどうかに関係なく、さまざまなアクティビティを実行する際に定義するフローチャートです。

  • ワークフロースターターは、実行と呼ばれるワークフローインスタンスを開始し、実行時にそのインスタンスと通信できます。

HelloWorld は 3 つのクラスと 2 つの関連インターフェイスとして実装されます。詳細については、次のセクションで説明しています。開始する前に、「AWS Flow Framework for Java のセットアップ」に記載されているように、開発環境をセットアップし、新しい AWS Java プロジェクトを作成する必要があります。次のウォークスルーで使用されているパッケージの名前はすべて、helloWorld.XYZ です。このような名前を使用するには、次のように aop.xml で within 属性を設定します。

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

HelloWorld を実装するには、AWS SDK プロジェクトに新しい Java パッケージ (helloWorld.HelloWorld) を作成し、次のファイルを追加します。

  • インターフェイス (GreeterActivities.java)

  • クラスファイル (GreeterActivitiesImpl.java)。アクティビティワーカーを実装します。

  • インターフェイス (GreeterWorkflow.java)。

  • クラスファイル (GreeterWorkflowImpl.java)。ワークフローワーカーを実装します。

  • クラスファイル (GreeterMain.java)。ワークフロースターターを実装します。

各コンポーネントの完全なコードなどの詳細は、以下のセクションに記載されています。このコードは適切なファイルに追加できます。

HelloWorld アクティビティの実装

HelloWorld は、あいさつ ("Hello World!") をコンソールに出力する全体的なタスクを 3 つのタスクに分割します。各タスクは、 アクティビティメソッド で実行されます。このアクティビティメソッドは、次のように GreeterActivities インターフェイスで定義されています。

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

HelloWorld には 1 つのアクティビティ (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 ワークフローワーカーは、以下の図に示すように、シンプルなリニアワークフロートポロジーに基づき、アクティビティの実行を調整します。

リニアワークフロートポロジー

3 つのアクティビティは、順番に実行され、そのデータはアクティビティからアクティビティに流れます。

HelloWorld ワークフローワーカーには、ワークフローのエントリポイントとなる 1 つのメソッドがあります。このメソッドは、次のように 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 メソッドは、GreeterActivitiesImpl のインスタンスを作成して、適切な順番で各アクティビティメソッドを呼び出し、各メソッドに適切なデータを渡して、HelloWorld トポロジーを実装します。

HelloWorld ワークフロースターター

ワークフロースターターは、ワークフロー実行を開始するアプリケーションです。実行中にワークフローと通信することもあります。GreeterMain クラスは、次のように、HelloWorld ワークフロースターターを実装します。

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

GreeterMainGreeterWorkflowImpl のインスタンスを作成し、greet を呼び出してワークフローワーカーを実行します。Java アプリケーションとして GreeterMain を実行すると、「Hello World!」が コンソール出力に表示されます。