AWS SWF (Simple Workflow Service)のBookingサンプル(Java)

| コメントをどうぞ

前記事 AWS SWF (Simple Workflow Service)のHelloWorldサンプル(Java) に続いて、Bookingサンプルを取り上げます。このサンプルでは、複数のアクティビティを呼び出す動作を確認できます。

事前準備とビルド

Helloworldと同じです。AWS SWF (Simple Workflow Service)を使ってみる(Java) の事前準備とビルドを参照してください。

ActivityHost

aws-java-sdk-1.8.9.1\samples\AwsFlowFrameworkからコマンドプロンプトを開いて、以下のコマンドを実行すると起動されます。

ant -f build.xml -Dmain-class="com.amazonaws.services.simpleworkflow.flow.examples.booking.ActivityHost" run 

ソースを見ると、BookingActivitiesImplインスタンスをアクティビティに登録しています。
メソッドが3つあり、AWS管理コンソールで確認すると3つのアクティビティ(BookingActivities.*)が登録されています。

WorkflowHost

aws-java-sdk-1.8.9.1\samples\AwsFlowFrameworkからコマンドプロンプトを開いて、以下のコマンドを実行すると起動されます。

ant -f build.xml -Dmain-class="com.amazonaws.services.simpleworkflow.flow.examples.booking.WorkflowHost" run 

ソースを見ると、BookingWorkflowImplクラスをワークフローに登録しています。
3番目のアクティビティ呼び出し時に、1番目と2番目の戻り値を渡しているため、1番目と2番目のアクティビティの完了を待って、3番目のアクティビティが実行されます。

Promise<Void> carReservation = client.reserveCar(requestID);
Promise<Void> airReservation = client.reserveAirline(requestID);
client.sendConfirmationActivity(customerID, carReservation, airReservation);

AWS管理コンソールで確認するとMakeBookingが登録されています。

WorkflowExecutionStarter

aws-java-sdk-1.8.9.1\samples\AwsFlowFrameworkからコマンドプロンプトを開いて、以下のコマンドを実行すると起動されます。

ant -f build.xml -Dmain-class="com.amazonaws.services.simpleworkflow.flow.examples.booking.WorkflowExecutionStarter" run

実行するとActivityHostのコンソールにメッセージが表示されます。

Reserving car for Request ID: 10...
Reserving airline for Request ID: 10...
Sending notification to Customer '123'...

ソースを見ると、クライアントを呼び出しています。

BookingWorkflowClientExternalFactory clientFactory = new BookingWorkflowClientExternalFactoryImpl(swfService, domain); 
BookingWorkflowClientExternal workflow = clientFactory.getClient();
workflow.makeBooking(requestId, customerId, true, true);

AWS管理コンソールのWorkflow Executionsの一覧から実行した履歴を選択し、Activitiesタブを選択すると3つのアクティビティが呼び出された履歴が確認できます。
aws-swf-booking1

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>