

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

# Amazon SWF のワークフロー履歴
<a name="swf-dev-about-workflow-history"></a>

Amazon SWF は、すべてのワークフロー実行の進行状況を*ワークフロー履歴*に記録します。ワークフロー実行の開始以降に発生したすべてのイベントの、詳細で完全、一貫した記録です。

*イベント*は、スケジュールされている新しいアクティビティや実行中のアクティビティの完了など、ワークフロー実行の状態の個別の変更を表します。ワークフロー履歴には、スケジュールされたアクティビティ、完了したアクティビティ、タスクのタイムアウト、シグナルなど、ワークフロー実行の実行状態を変化させるすべてのイベントが含まれます。

ワークフロー実行の状態を変化させないオペレーションは、通常、ワークフロー履歴には表示されません。たとえば、ワークフロー履歴には、ポーリングの試行や可視性オペレーションの使用は表示されません。

ワークフロー履歴には、以下のような重要な利点があります。
+ ワークフロー実行に関するすべての情報はワークフロー履歴に保存されるため、アプリケーションはステートレスである可能性があります。
+ ワークフローの実行ごとに、履歴には、スケジュールされたアクティビティ、現在のステータス、およびその結果のレコードが表示されます。ワークフローの実行では、この情報を使用して次のステップを決定します。
+ この履歴には、実行中のワークフロー実行をモニタリングし、完了したワークフロー実行を検証するために使用できる詳細な監査証跡が用意されています。

以下は、e コマースのワークフロー履歴の概念図です。

```
Invoice0001

Start Workflow Execution

Schedule Verify Order
Start Verify Order Activity
Complete Verify Order Activity

Schedule Charge Credit Card
Start Charge Credit Card Activity
Complete Charge Credit Card Activity

Schedule Ship Order
Start Ship Order Activity
```

上記の例では、注文が出荷待ちの状態になっています。次の例では、注文が完了しています。ワークフロー履歴は累積的であるため、新しいイベントが追加されます。

```
Invoice0001

Start Workflow Execution

Schedule Verify Order
Start Verify Order Activity
Complete Verify Order Activity

Schedule Charge Credit Card
Start Charge Credit Card Activity
Complete Charge Credit Card Activity

Schedule Ship Order
Start Ship Order Activity
{{
Complete Ship Order Activity

Schedule Record Order Completion
Start Record Order Completion Activity
Complete Record Order Completion Activity

Close Workflow}}
```

プログラムでは、ワークフロー実行履歴に関するイベントは、JavaScript Object Notation (JSON) のオブジェクトとして表されます。履歴自体は、これらのオブジェクトの JSON 配列です。各イベントには次のものがあります。
+ [WorkflowExecutionStarted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_WorkflowExecutionStartedEventAttributes.html) または [ActivityTaskCompleted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ActivityTaskCompletedEventAttributes.html) のような型
+ Unix 時間形式のタイムスタンプ
+ イベントを一意に識別する ID

さらに、各イベントの型には、その型に適した独自の記述属性セットがあります。たとえば、`ActivityTaskCompleted` イベントには、アクティビティタスクがスケジュールされた時間およびそのアクティビティタスクが開始された時間に対応するイベントの ID を含む属性と、結果データを保持する属性が含まれています。

[GetWorkflowExecutionHistory](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_GetWorkflowExecutionHistory.html) アクションを使用して、ワークフロー実行履歴の現在の状態のコピーを取得できます。さらに、Amazon SWF とワークフローのディサイダーとのインタラクションの一環として、ディサイダーは履歴のコピーを定期的に受信します。

以下は、JSON 形式でのワークフロー実行履歴の例です。

```
[  {
      "eventId": 11,
      "eventTimestamp": 1326671603.102,
      "eventType": "WorkflowExecutionTimedOut",
      "workflowExecutionTimedOutEventAttributes": {
         "childPolicy": "TERMINATE",
         "timeoutType": "START_TO_CLOSE"
      }
   }, {
      "decisionTaskScheduledEventAttributes": {
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 10,
      "eventTimestamp": 1326670566.124,
      "eventType": "DecisionTaskScheduled"
   }, {
      "activityTaskTimedOutEventAttributes": {
         "details": "Waiting for confirmation",
         "scheduledEventId": 8,
         "startedEventId": 0,
         "timeoutType": "SCHEDULE_TO_START"
      },
      "eventId": 9,
      "eventTimestamp": 1326670566.124,
      "eventType": "ActivityTaskTimedOut"
   }, {
      "activityTaskScheduledEventAttributes": {
         "activityId": "verification-27",
         "activityType": {
            "name": "activityVerify",
            "version": "1.0"
         },
         "control": "digital music",
         "decisionTaskCompletedEventId": 7,
         "heartbeatTimeout": "120",
         "input": "5634-0056-4367-0923,12/12,437",
         "scheduleToCloseTimeout": "900",
         "scheduleToStartTimeout": "300",
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 8,
      "eventTimestamp": 1326670266.115,
      "eventType": "ActivityTaskScheduled"
   }, {
      "decisionTaskCompletedEventAttributes": {
         "executionContext": "Black Friday",
         "scheduledEventId": 5,
         "startedEventId": 6
      },
      "eventId": 7,
      "eventTimestamp": 1326670266.103,
      "eventType": "DecisionTaskCompleted"
   }, {
      "decisionTaskStartedEventAttributes": {
         "identity": "Decider01",
         "scheduledEventId": 5
      },
      "eventId": 6,
      "eventTimestamp": 1326670161.497,
      "eventType": "DecisionTaskStarted"
   }, {
      "decisionTaskScheduledEventAttributes": {
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 5,
      "eventTimestamp": 1326668752.66,
      "eventType": "DecisionTaskScheduled"
   }, {
      "decisionTaskTimedOutEventAttributes": {
         "scheduledEventId": 2,
         "startedEventId": 3,
         "timeoutType": "START_TO_CLOSE"
      },
      "eventId": 4,
      "eventTimestamp": 1326668752.66,
      "eventType": "DecisionTaskTimedOut"
   }, {
      "decisionTaskStartedEventAttributes": {
         "identity": "Decider01",
         "scheduledEventId": 2
      },
      "eventId": 3,
      "eventTimestamp": 1326668152.648,
      "eventType": "DecisionTaskStarted"
   }, {
      "decisionTaskScheduledEventAttributes": {
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 2,
      "eventTimestamp": 1326668003.094,
      "eventType": "DecisionTaskScheduled"
   }
]
```

ワークフローの実行履歴に表示できるさまざまなタイプのイベントの詳細なリストについては、「*Amazon Simple Workflow Service API Reference*」(Amazon Simple Workflow ServiceAPIリファレンス) の「[HistoryEvent](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_HistoryEvent.html) data type」(HistoryEvent データ型) を参照してください。

Amazon SWF では、実行が終了してから設定可能な日数の間、すべてのワークフロー実行の完全な履歴が保存されます。ワークフロー履歴の保持期間と呼ばれるこの期間は、ワークフローの*ドメイン*を登録するときに指定されます。ドメインについては、このセクションの後半で詳しく説明します。