Definindo a prioridade de tarefas - AWS Flow Framework para Java

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 de tarefas

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").

Definindo a prioridade de tarefas para fluxos de trabalho

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 opção defaultTaskPriority em WorkflowRegistrationOptions ao declará-lo:

@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 taskPriority em ContinueAsNewWorkflowExecutionParameters ou em StartChildWorkflowExecutionParameters.

Definindo a prioridade de tarefas para atividades

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 opção defaultTaskPriority em ActivityRegistrationOptions ao declará-lo:

@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);