前回はActivityTaskの登録までやったので、今回はワークフローの終了までやります!

※REST APIの基本的な部分は端折っているので、詳細な部分を知りたい方は過去記事をご参考ください!

 

4. Activity Taskの取得(PollForActivityTask)

実行ActorはWorkerになります。

Activity TaskListに投げられたActivity Taskを取得します。

 

 

■主要パラメータの説明

identity

→どのWorkerが取得しようとしているかを明示する。ワークフロー履歴でTaskを取得したWorkerを特定するためのパラメータ。

taskList

→取得先のActivity TaskListを指定。3(ActivityTaskのスケジュール)と同じTask Listを設定すれば、

3で投げたワークフローのDecision Taskを取得可能。

 

レスポンスは以下のとおり

 

Decision Taskと違って、ワークフロー実行履歴は取得できませんが、

代わりにactivityTypeとinputパラメータ値からWorkerの動作を決めることができます。

taskTokenは5でSWFに通知する際に使用するトークンです。

 

5. Workerがタスクを実行し、DecisionTaskを登録(RespondActivityTaskCompleted)

実行ActorはWorkerになります。

4で取得したActivity Taskに応じてWorkerがタスクを実行し、完了後にSWFに通知をします。

これにより、次のDecision Taskがスケジュールされます。

 

 

■主要パラメータの説明

result

→タスクの処理結果を入力。この結果は後続のDeciderが参照可能。

taskToken

→4のレスポンスで取得したtaskTokenを入力。

 

レスポンスは空になります。

 

6. 2~5を繰り返して、ワークフローを進める

DeciderがDecisionTaskを取得

→DeciderがActivityTaskを登録

→WorkerがActivityTaskを取得

→WorkerがSWFにTask終了の通知

→SWFがDecisionTaskを登録

というフローを繰り返します。

 

7. Deciderがワークフロー終了条件を満たしたと判断した場合、ワークフローを終了する

実行ActorはDeciderになります。

DeciderはPollForDecisionTaskでタスクを取得後、SWFに対してワークフローの終了通知をします。

 

 

■主要パラメータの説明

decisionType

→Decisionの種別。ワークフローの終了通知なので”CompleteWorkflowExecution”を指定。

result

→SWFに通知する処理結果。

 

レスポンスは空になります。

 

 

今回は正常系フローの説明だったので5ではActivityTaskの完了通知をしていましたが、

ActivityTaskの失敗を通知したり(RespondActivityTaskFailed)

ActivityTaskの実行をキャンセルしたり(RespondActivityTaskCanceled)

Activity実行中であることを通知したり(RecordActivityTaskHeartbeat)

SWFに様々な通知をすることで、柔軟なワークフローを構成することができます。

 

次回は実際のフローとイベント登録に関して説明する予定です!