

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

# を使用したワークフローアプリケーションの実装 AWS Flow Framework
<a name="awsflow-developing-workflows"></a>

を使用してワークフローを開発する一般的な手順 AWS Flow Framework は次のとおりです。

1. **アクティビティとワークフローのコントラクトを定義します**。アプリケーションの要件を分析し、必要なアクティビティとワークフロートポロジーを決定します。*アクティビティ*では必要な処理タスクを扱い、*ワークフロートポロジー*ではワークフローの基本的な構造とビジネスロジックを定義します。

   たとえば、メディア処理アプリケーションでは、ファイルをダウンロードして処理し、処理済みのファイルを Amazon Simple Storage Service (S3) のバケットにアップロードする必要があります。これを以下の 4 つのアクティビティタスクに分割できます。

   1. ファイルをサーバーからダウンロードする

   1. ファイルを処理する (別のメディア形式に変換するなど) 

   1. ファイルを S3 バケットにアップロードする

   1. ローカルファイルを削除してクリーンアップする

   このワークフローでは、エントリポイントメソッドを使用し、アクティビティを順に実行するシンプルなリニアトポロジーを実装します。[HelloWorldWorkflow アプリケーション](getting-started-example-helloworldworkflow.md) と非常に似ています。

1. **アクティビティインターフェイスとワークフローインターフェイスを実装します**。ワークフローコントラクトとアクティビティコントラクトを定義するには、Java *インターフェイス*を使用して、呼び出し規則を SWF で予測可能なものにし、ワークフローロジックとアクティビティタスクを柔軟に実装できるようにします。プログラムの各部分は、他の部分のデータのコンシューマーとして機能できますが、他のいずれの部分についても実装の詳細を知る必要はありません。

   たとえば、`FileProcessingWorkflow` を定義し、動画エンコーディング、圧縮、サムネイルなどのそれぞれに異なるワークフロー実装を提供できます。これらのワークフロー別に異なる制御フローを使用し、異なるアクティビティメソッドを呼び出すことができます。ワークフロースターターでは、これらの詳細を知る必要がありません。インターフェイスを使用すると、モック実装を使用してワークフローを簡単にテストすることもできます。モック実装は、後で実際のコードに置き換えることができます。

1. **アクティビティクライアントとワークフロークライアントを生成します**。を使用すると、非同期実行の管理、HTTP リクエストの送信、データのマーシャリングなどの詳細を実装する必要 AWS Flow Framework がなくなります。代わりに、ワークフロースターターでは、ワークフロークライアントのメソッドを呼び出してワークフローインスタンスを実行します。また、ワークフロー実装では、アクティビティクライアントのメソッドを呼び出してアクティビティを実行します。フレームワークでは、これらのやり取りの詳細をバックグラウンドで処理します。

   Eclipse を使用していて、 のようにプロジェクトを設定している場合[AWS Flow Framework for Java のセットアップ](setup.md)、 AWS Flow Framework 注釈プロセッサはインターフェイス定義を使用して、対応するインターフェイスと同じメソッドのセットを公開するワークフロークライアントとアクティビティクライアントを自動的に生成します。

1. **アクティビティとワークフローのホストアプリケーションを実装します**。ワークフローとアクティビティの実装は、タスクの Amazon SWF をポーリングし、データをマーシャリングして、適切な実装方法を呼び出すホストアプリケーションに埋め込む必要があります。Java AWS Flow Framework 用 には、ホストアプリケーションの実装を簡単かつ簡単にする [WorkflowWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/WorkflowWorker.html) クラスと [ActivityWorker](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/ActivityWorker.html) クラスが含まれています。

1. **ワークフローをテスト**します。Java AWS Flow Framework 用 は、ワークフローをインラインおよびローカルでテストするために使用できる JUnit 統合を提供します。

1.  **ワーカーをデプロイします**。ワーカーは必要に応じてデプロイできます。例えば、Amazon EC2 インスタンスにデプロイしたり、データセンターのコンピュータにデプロイしたりできます。ワーカーをデプロイして起動すると、ワーカーは Amazon SWF に対してタスクのポーリングをスタートし、必要に応じてタスクを処理します。

1.  **実行をスタートします**。アプリケーションは、ワークフローインスタンスをスタートするために、ワークフロークライアントを使用してワークフローのエントリポイントを呼び出します。ワークフローをスタートするには、Amazon SWF コンソールを使用することもできます。ワークフローインスタンスのスタート方法を問わず、Amazon SWF コンソールを使用して実行中のワークフローインスタンスを監視し、インスタンスの実行、完了、失敗に関するワークフロー履歴を確認できます。

[AWS SDK for Java](https://aws.amazon.com/sdkforjava/) には、ルートディレクトリの readme.html ファイルの指示に従って参照および実行できる AWS Flow Framework for Java サンプルセットが含まれています。また、様々なプログラミング問題の対処方法を示すレシピ (シンプルなアプリケーション) のセットもあります。「[AWS Flow Framework Recipes](https://aws.amazon.com/code/2535278400103493)」より使用できます。