タスクの優先順位の設定 - Amazon Simple Workflow Service

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

タスクの優先順位の設定

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

注記

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

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

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

ワークフローのタスクの優先順位の設定

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

ワークフロータイプをデフォルトのタスク優先度で登録するには、RegisterWorkflowType アクションを使用するときに 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 でワークフロー実行を開始するときに、ワークフロータイプの登録されたタスクの優先順位をオーバーライドできます。

{ "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 で決定に応答するときなど、新規にワークフローを続行するときにも、登録されたタスクの優先順位をオーバーライドできます。

子ワークフローのタスクの優先順位を設定するには、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" } } ] }

アクティビティのタスクの優先順位の設定

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

アクティビティタイプを登録するときにタスクの優先度を設定するには、RegisterActivityType アクションを使用するときに 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 アクションでアクティビティをスケジュールするときに 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" } } ] }

タスクの優先順位情報を返すアクション

次の Amazon SWF アクションから、設定されたタスクの優先順位 (または、設定されたデフォルトのタスクの優先順位) に関する情報を取得できます。

  • DescribeActivityType は、レスポンスの configuration セクションでアクティビティタイプの defaultTaskPriority を返します。

  • DescribeWorkflowExecution は、レスポンスの executionConfiguration セクションでワークフロー実行の taskPriority を返します。

  • DescribeWorkflowType は、レスポンスの configuration セクションでワークフロータイプの defaultTaskPriority を返します。

  • GetWorkflowExecutionHistoryPollForDecisionTask は、レスポンスの activityTaskScheduledEventAttributesdecisionTaskScheduledEventAttributesworkflowExecutionContinuedAsNewEventAttributesworkflowExecutionStartedEventAttributes セクションでタスクの優先順位情報を提供します。