

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

# Amazon SWF でのタスク優先度の設定
<a name="programming-priority"></a>

デフォルトでは、タスクリストのタスクは*到着時間*に基づいて提供されます。つまり、最初にスケジュールされたタスクは、通常は可能な限り最初に実行されます。オプションの*タスクの優先順位*を設定することで、特定のタスクに優先順位を与えることができます。Amazon SWF は、タスクリストで優先順位が低いものよりも先に、優先順位の高いタスクの提供を試みます。

**注記**  
通常、最初にスケジュールされるタスクは最初に実行されますが、これは保証されません。

ワークフローとアクティビティの両方のタスクの優先順位を設定できます。ワークフローのタスクの優先順位は、スケジュールされるいずれのアクティビティタスクの優先順位にも影響しません。また、起動されるいずれの子ワークフローにも影響しません。アクティビティまたはワークフローのデフォルトの優先順位は、登録中に (ユーザーまたは Amazon SWF によって) 設定され、アクティビティのスケジュール中またはワークフロー実行の開始中にオーバーライドされない限り、登録されたタスクの優先順位が常に使用されます。

タスクの優先順位の値は、"-2147483648" から "2147483647" の範囲であり、値が高いほど優先順位も高くなります。アクティビティまたはワークフローのタスク優先順位を設定しない場合、優先順位としてゼロ ("0") が割り当てられます。

**Topics**
+ [

## ワークフローのタスクの優先順位の設定
](#task-priority-workflows)
+ [

## アクティビティのタスクの優先順位の設定
](#task-priority-activities)
+ [

## タスクの優先順位情報を返すアクション
](#task-priority-responses)

## ワークフローのタスクの優先順位の設定
<a name="task-priority-workflows"></a>

登録または起動時に、ワークフローのタスクの優先順位を設定できます。ワークフロータイプの登録時に設定されるタスクの優先順位は、ワークフロー実行の開始時にオーバーライドされない限り、その種類の任意のワークフロー実行のデフォルトとして使用されます。

ワークフロータイプをデフォルトのタスク優先度で登録するには、[RegisterWorkflowType](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RegisterWorkflowType.html) アクションを使用するときに *defaultTaskPriority* オプションを設定します。

```
{
  "domain": "867530901",
  "name": "expeditedOrderWorkflow",
  "version": "1.0",
  "description": "Expedited customer orders workflow",
  "defaultTaskStartToCloseTimeout": "600",
  "defaultExecutionStartToCloseTimeout": "3600",
  "defaultTaskList": {"name": "mainTaskList"},
  "defaultTaskPriority": "10",
  "defaultChildPolicy": "TERMINATE"
}
```

[StartWorkflowExecution](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_StartWorkflowExecution.html) でワークフロー実行を開始するときに、ワークフロータイプの登録されたタスクの優先順位をオーバーライドできます。

```
{
  "childPolicy": "TERMINATE",
  "domain": "867530901",
  "executionStartToCloseTimeout": "1800",
  "input": "arbitrary-string-that-is-meaningful-to-the-workflow",
  "tagList": ["music purchase", "digital", "ricoh-the-dog"],
  "taskList": {"name": "specialTaskList"},
  "taskPriority": "-20",
  "taskStartToCloseTimeout": "600",
  "workflowId": "20110927-T-1",
  "workflowType": {"name": "customerOrderWorkflow", "version": "1.0"},
}
```

子ワークフローを開始するときや、[RespondDecisionTaskCompleted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RespondDecisionTaskCompleted.html) で決定に応答するときなど、新規にワークフローを続行するときにも、登録されたタスクの優先順位をオーバーライドできます。

子ワークフローのタスクの優先順位を設定するには、`startChildWorkflowExecutionDecisionAttributes` に値を指定します。

```
{
  "taskToken": "AAAAKgAAAAEAAAAAAAAAA...",
  "decisions": [
    {
      "decisionType": "StartChildWorkflowExecution",
      "startChildWorkflowExecutionDecisionAttributes": {
        "childPolicy": "TERMINATE",
        "control": "digital music",
        "executionStartToCloseTimeout": "900",
        "input": "201412-Smith-011x",
        "taskList": {"name": "specialTaskList"},
        "taskPriority": "5",
        "taskStartToCloseTimeout": "600",
        "workflowId": "verification-workflow",
        "workflowType": {
          "name": "MyChildWorkflow",
          "version": "1.0"
        }
      }
    }
  ]
}
```

新しくワークフローを続行する場合は、`continueAsNewWorkflowExecutionDecisionAttributes` でタスクの優先順位を設定します。

```
{
  "taskToken": "AAAAKgAAAAEAAAAAAAAAA...",
  "decisions": [
    {
      "decisionType": "ContinueAsNewWorkflowExecution",
      "continueAsNewWorkflowExecutionDecisionAttributes": {
        "childPolicy": "TERMINATE",
        "executionStartToCloseTimeout": "1800",
        "input": "5634-0056-4367-0923,12/12,437",
        "taskList": {"name": "specialTaskList"},
        "taskStartToCloseTimeout": "600",
        "taskPriority": "100",
        "workflowTypeVersion": "1.0"
      }
    }
  ]
}
```

## アクティビティのタスクの優先順位の設定
<a name="task-priority-activities"></a>

登録時またはスケジュール時に、アクティビティのタスクの優先順位を設定できます。アクティビティタイプを登録するときに設定されるタスクの優先順位は、アクティビティのスケジュール時にオーバーライドされない限り、アクティビティ実行時のデフォルトの優先順位として使用されます。

アクティビティタイプを登録するときにタスクの優先度を設定するには、[RegisterActivityType](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RegisterActivityType.html) アクションを使用するときに *defaultTaskPriority* オプションを設定します。

```
{
  "defaultTaskHeartbeatTimeout": "120",
  "defaultTaskList": {"name": "mainTaskList"},
  "defaultTaskPriority": "10",
  "defaultTaskScheduleToCloseTimeout": "900",
  "defaultTaskScheduleToStartTimeout": "300",
  "defaultTaskStartToCloseTimeout": "600",
  "description": "Verify the customer credit card",
  "domain": "867530901",
  "name": "activityVerify",
  "version": "1.0"
}
```

タスク優先度でタスクをスケジュールするには、[RespondDecisionTaskCompleted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RespondDecisionTaskCompleted.html) アクションでアクティビティをスケジュールするときに *taskPriority* オプションを使用します。

```
{
  "taskToken": "AAAAKgAAAAEAAAAAAAAAA...",
  "decisions": [
    {
      "decisionType": "ScheduleActivityTask",
      "scheduleActivityTaskDecisionAttributes": {
        "activityId": "verify-account",
        "activityType": {
            "name": "activityVerify",
            "version": "1.0"
        },
        "control": "digital music",
        "input": "abab-101",
        "taskList": {"name": "mainTaskList"},
        "taskPriority": "15"
      }
    }
  ]
}
```

## タスクの優先順位情報を返すアクション
<a name="task-priority-responses"></a>

次の Amazon SWF アクションから、設定されたタスクの優先順位 (または、設定されたデフォルトのタスクの優先順位) に関する情報を取得できます。
+ [DescribeActivityType](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_DescribeActivityType.html) は、レスポンスの `configuration` セクションでアクティビティタイプの *defaultTaskPriority* を返します。
+ [DescribeWorkflowExecution](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_DescribeWorkflowExecution.html) は、レスポンスの `executionConfiguration` セクションでワークフロー実行の *taskPriority* を返します。
+ [DescribeWorkflowType](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_DescribeWorkflowType.html) は、レスポンスの `configuration` セクションでワークフロータイプの *defaultTaskPriority* を返します。
+ [GetWorkflowExecutionHistory](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_GetWorkflowExecutionHistory.html) と [PollForDecisionTask](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_PollForDecisionTask.html) は、レスポンスの `activityTaskScheduledEventAttributes`、`decisionTaskScheduledEventAttributes`、`workflowExecutionContinuedAsNewEventAttributes`、`workflowExecutionStartedEventAttributes` セクションでタスクの優先順位情報を提供します。