Impostazione della priorità di task - AWS Flow Framework per Java

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Impostazione della priorità di task

Per impostazione predefinita, i task in un elenco di task sono consegnati in base alla relativa ora di arrivo. Per quanto possibile, i task pianificati per primi vengono eseguiti per primi. Impostando un optionalpriorità del task, è possibile dare priorità a determinate attività: Amazon SWF tenterà di consegnare dapprima i task con la priorità più alta.

Puoi impostare priorità di task per flussi di lavoro e attività. La priorità di task di un flusso di lavoro non ha alcuna incidenza sulla priorità di task di attività che pianifica e nemmeno sui flussi di lavoro figlio che avvia. La priorità di default di un'attività o di un flusso di lavoro viene impostata (da te o da Amazon SWF) durante la registrazione e la priorità di task registrata viene sempre utilizzata salvo se viene sovrascritta durante la pianificazione dell'attività o l'avvio di un'esecuzione di flusso di lavoro.

I valori della priorità di task possono andare da "-2147483648" a "2147483647", con i numeri più alti indicanti la priorità più elevata. Se non imposti la priorità di task per un'attività o un flusso di lavoro, verrà assegnata la priorità zero ("0").

Impostazione della priorità di task per flussi di lavoro

Puoi impostare la priorità di task per un flusso di lavoro durante la registrazione o l'avvio dello stesso. La priorità di task impostata alla registrazione del flusso di lavoro è utilizzata come impostazione di default per qualsiasi esecuzione di flusso di lavoro di quel tipo, a meno che non venga sovrascritta all'avvio dell'esecuzione di flusso di lavoro.

Per registrare un tipo di flusso di lavoro con una priorità di task di default, imposta l'opzione defaultTaskPriority in WorkflowRegistrationOptions quando la dichiari:

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

Puoi anche impostare taskPriority per un flusso di lavoro quando avvii quest'ultimo, sovrascrivendo la priorità di task (di default) registrata.

StartWorkflowOptions priorityWorkflowOptions = new StartWorkflowOptions().withTaskPriority(10); PriorityWorkflowClientExternalFactory cf = new PriorityWorkflowClientExternalFactoryImpl(swfService, domain); priority_workflow_client = cf.getClient(); priority_workflow_client.startWorkflow( "Smith, John", priorityWorkflowOptions);

Puoi inoltre impostare la priorità di task all'avvio di un flusso di lavoro figlio o quando si continua un flusso di lavoro come nuovo. Ad esempio, puoi impostare l'opzione taskPriority in ContinueAsNewWorkflowExecutionParameters o in StartChildWorkflowExecutionParameters.

Impostazione della priorità di task per attività

Puoi impostare la priorità di task per un attività durante la registrazione o la pianificazione della stessa. La priorità di task impostata quando si registra un tipo di attività è utilizzata come priorità di default all'esecuzione dell'attività, a meno che non venga sovrascritta quando si pianifica l'attività.

Per registrare un tipo di attività con una priorità di task di default, imposta l'opzione defaultTaskPriority in ActivityRegistrationOptions quando la dichiari:

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

Puoi anche impostare taskPriority per un'attività durante la pianificazione, sovrascrivendo la priorità di task (di default) registrata.

ActivitySchedulingOptions activityOptions = new ActivitySchedulingOptions.withTaskPriority(10); ImportantActivitiesClient activityClient = new ImportantActivitiesClientImpl(); activityClient.doSomethingImportant(activityOptions);