

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Definindo a prioridade da tarefa no Amazon SWF
<a name="programming-priority"></a>

Por padrão, as tarefas em uma lista de tarefas são entregues de acordo com sua *hora de chegada*: as primeiras tarefas a serem agendadas são geralmente executadas antes, na medida do possível. Ao definir uma *prioridade de tarefa* opcional, você pode dar prioridade a determinadas tarefas: O Amazon SWF tentará entregar as tarefas de maior prioridade em uma lista de tarefas antes daquelas com menor prioridade.

Você pode definir prioridades de tarefas para fluxos de trabalho e atividades. A prioridade de tarefas de um fluxo de trabalho não afeta a prioridade de nenhuma das tarefas de atividades que ele agenda, nem afeta nenhum dos fluxos de trabalho secundários que ele inicia. A prioridade padrão de uma atividade ou fluxo de trabalho é definida (por você ou pelo Amazon SWF) durante o registro, e a prioridade da tarefa registrada é sempre usada, a menos que seja substituída durante o agendamento da atividade ou o início da execução de um fluxo de trabalho.

Valores de prioridade de tarefas podem variar de "-2147483648" até "2147483647", com números mais altos indicando maior prioridade. Se você não definir a prioridade de tarefas para uma atividade ou um fluxo de trabalho, este(a) último(a) receberá uma prioridade de zero ("0").

**Topics**
+ [Definindo a prioridade de tarefas para fluxos de trabalho](#task-priority-workflows)
+ [Definindo a prioridade de tarefas para atividades](#task-priority-activities)

## Definindo a prioridade de tarefas para fluxos de trabalho
<a name="task-priority-workflows"></a>

Você pode definir a prioridade de tarefa para um fluxo de trabalho ao registrá-lo ou iniciá-lo. A prioridade de tarefa definida quando o tipo de fluxo de trabalho é registrado é utilizada como padrão para qualquer execução de fluxo de trabalho desse tipo, a menos que ela seja substituída no momento de iniciar a execução de fluxo de trabalho.

Para registrar um tipo de fluxo de trabalho com uma prioridade de tarefa padrão, defina a *defaultTaskPriority*opção [WorkflowRegistrationOptions](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/annotations/WorkflowRegistrationOptions.html)ao declará-la:

```
@Workflow
@WorkflowRegistrationOptions(
    defaultTaskPriority = 10,
    defaultTaskStartToCloseTimeoutSeconds = 240)
public interface PriorityWorkflow
{
    @Execute(version = "1.0")
    void startWorkflow(int a);
}
```

Você também pode definir a *taskPriority* para um fluxo de trabalho ao iniciá-lo, substituindo a prioridade de tarefa registrada (padrão).

```
StartWorkflowOptions priorityWorkflowOptions
    = new StartWorkflowOptions().withTaskPriority(10);

PriorityWorkflowClientExternalFactory cf
    = new PriorityWorkflowClientExternalFactoryImpl(swfService, domain);

priority_workflow_client = cf.getClient();

priority_workflow_client.startWorkflow(
        "Smith, John", priorityWorkflowOptions);
```

Além disso, você pode definir a prioridade de tarefa ao iniciar um fluxo de trabalho filho ou ao continuar um fluxo de trabalho como novo. Por exemplo, você pode definir a opção *[ContinueAsNewWorkflowExecutionParameters](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/generic/ContinueAsNewWorkflowExecutionParameters.html)taskPriority* em ou em. [StartChildWorkflowExecutionParameters](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/generic/StartChildWorkflowExecutionParameters.html)

## Definindo a prioridade de tarefas para atividades
<a name="task-priority-activities"></a>

Você pode definir a prioridade de tarefa para uma atividade ao registrá-la ou agendá-la. A prioridade de tarefa definida ao registrar um tipo de atividade é usada como a prioridade padrão quando essa atividade é executada, a menos que ela seja substituída no momento de agendar a atividade.

Para registrar um tipo de atividade com uma prioridade de tarefa padrão, defina a *defaultTaskPriority*opção [ActivityRegistrationOptions](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/simpleworkflow/flow/annotations/ActivityRegistrationOptions.html)ao declará-la:

```
@Activities(version = "1.0")
@ActivityRegistrationOptions(
    defaultTaskPriority = 10,
    defaultTaskStartToCloseTimeoutSeconds = 120)
public interface ImportantActivities {
    int doSomethingImportant();
}
```

Você também pode definir a *taskPriority* para uma atividade ao programá-la, substituindo a prioridade de tarefa registrada (padrão).

```
ActivitySchedulingOptions activityOptions = new ActivitySchedulingOptions.withTaskPriority(10);

ImportantActivitiesClient activityClient = new ImportantActivitiesClientImpl();

activityClient.doSomethingImportant(activityOptions);
```