翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 を呼び出します。