AWS Flow Framework for Java の再生動作 - AWS Flow Framework for Java

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

AWS Flow Framework for Java の再生動作

このトピックでは、「AWS Flow Framework for Java とは」セクションの例を使用して、再生動作の例を説明します。同期シナリオと非同期シナリオの両方について説明します。

例 1: 同期再生

同期ワークフローでの再生動作の例では、HelloWorldWorkflow ワークフローおよびアクティビティ実装を変更します。そのために、各実装内に次のような println 呼び出しを追加します。

public class GreeterWorkflowImpl implements GreeterWorkflow { ... public void greet() { System.out.println("greet executes"); Promise<String> name = operations.getName(); System.out.println("client.getName returns"); Promise<String> greeting = operations.getGreeting(name); System.out.println("client.greeting returns"); operations.say(greeting); System.out.println("client.say returns"); } } ************** public class GreeterActivitiesImpl implements GreeterActivities { public String getName() { System.out.println("activity.getName completes"); return "World"; } public String getGreeting(String name) { System.out.println("activity.getGreeting completes"); return "Hello " + name + "!"; } public void say(String what) { System.out.println(what); } }

このコードの詳細については、「HelloWorldWorkflow アプリケーション」を参照してください。以下は、出力を編集したバージョンであり、各再生エピソードの開始を示すコメントが付いています。

//Episode 1 greet executes client.getName returns client.greeting returns client.say returns activity.getName completes //Episode 2 greet executes client.getName returns client.greeting returns client.say returns activity.getGreeting completes //Episode 3 greet executes client.getName returns client.greeting returns client.say returns Hello World! //say completes //Episode 4 greet executes client.getName returns client.greeting returns client.say returns

この例の再生プロセスは次のようになります。

  • 最初のエピソードでは getName アクティビティタスクをスケジュールします。このタスクには依存関係がありません。

  • 2 番目のエピソードでは getGreeting アクティビティタスクをスケジュールします。このタスクは getName に依存します。

  • 3 番目のエピソードでは say アクティビティタスクをスケジュールします。このタスクは getGreeting に依存します。

  • 最後のエピソードでは、追加のタスクをスケジュールしません。未完了のアクティビティがなければ、ワークフロー実行を終了します。

注記

各エピソードに対して 3 つのアクティビティクライアントメソッドが 1 回呼び出されます。ただし、これらの呼び出しの 1 つのみがアクティビティタスクになるため、各タスクは 1 回のみ実行されます。

例 2: 非同期再生

同期再生の例と同じように、HelloWorldWorkflowAsync アプリケーション を変更して非同期再生の動作を確認できます。次の出力が生成されます。

//Episode 1 greet executes client.name returns workflow.getGreeting returns client.say returns activity.getName completes //Episode 2 greet executes client.name returns workflow.getGreeting returns client.say returns workflow.getGreeting completes Hello World! //say completes //Episode 3 greet executes client.name returns workflow.getGreeting returns client.say returns workflow.getGreeting completes

HelloWorldAsync は 3 つの再生エピソードを使用します。2 つのアクティビティしかないためです。getGreeting アクティビティは getGreeting 非同期ワークフローメソッドに置き換えられています。このメソッドの完了に伴って再生エピソードは開始されません。

最初のエピソードでは、名前アクティビティの完了に依存するため、getGreeting を呼び出しません。ただし、getName が完了すると、再生は後続のエピソードごとに getGreeting を呼び出します。

以下の資料も参照してください。