

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à.

# AWS Flow Framework per Java Annotations
<a name="annotations"></a>

**Topics**
+ [@Activities](#annotations-activities)
+ [@Activity](#annotations-activity)
+ [@ActivityRegistrationOptions](#annotations-activityregistration)
+ [@Asincrona](#annotations-asynchronous)
+ [@Execute](#annotations-execute)
+ [@ExponentialRetry](#annotations-exponentialretry)
+ [@GetState](#annotations-getstate)
+ [@ManualActivityCompletion](#annotations-manualactivitycompletion)
+ [@Signal](#annotations-signal)
+ [@SkipRegistration](#annotations-skipregistration)
+ [@Wait e @ NoWait](#annotations-waitnowait)
+ [@Flusso di lavoro](#annotations-workflow)
+ [@WorkflowRegistrationOptions](#annotations-workflowregistrationoptions)

## @Activities
<a name="annotations-activities"></a>

Questa annotazione può essere usata su un'interfaccia per dichiarare un set di tipi di attività. Ciascun metodo in un'interfaccia che abbia questa annotazione rappresenta un tipo di attività. Un'interfaccia non può avere contemporaneamente l'annotazione `@Workflow` e quella `@Activities`-

Su questa annotazione possono essere specificati i seguenti parametri: 

`activityNamePrefix`  
Specifica il prefisso del nome dei tipi di attività dichiarati nell'interfaccia. Se impostato su una stringa vuota (valore predefinito), il nome dell'interfaccia seguito da '.' viene utilizzato come prefisso.

`version`  
Specifica la versione predefinita dei tipi di attività dichiarati nell'interfaccia. Il valore predefinito è `1.0`.

`dataConverter`  
Speciifica il tipo di serializing/deserializing dati `DataConverter` da utilizzare per la creazione di attività di questo tipo di attività e i relativi risultati. Impostato come predefinito su `NullDataConverter`, che indica che deve essere utilizzato `JsonDataConverter`.

## @Activity
<a name="annotations-activity"></a>

Questa annotazione può essere usata sui metodi in un'interfaccia che abbia l'annotazione `@Activities`.

Su questa annotazione possono essere specificati i seguenti parametri:

`name`  
Specifica il nome del tipo di attività. Il valore predefinito è una stringa vuota, che indica che per stabilire il nome del tipo di attività, (che è in formato \$1*prefisso*\$1\$1*nome*\$1) occorre utilizzare il prefisso predefinito e il nome del metodo dell'attività. Ricorda che quando specifichi un nome in un'annotazione `@Activity`, il framework non vi aggiunge automaticamente un prefisso. Sei libero di usare il tuo schema di denominazione.

`version`  
Specifica la versione del tipo di attività. Sovrascrive la versione predefinita specificata nell'annotazione `@Activities` nell'interfaccia che la contiene. L'impostazione predefinita è una stringa vuota.

## @ActivityRegistrationOptions
<a name="annotations-activityregistration"></a>

Specifica le opzioni di registrazione di un tipo di attività. Questa annotazione può essere usata su un'interfaccia annotata con `@Activities` o sui metodi all'interno. Se specificata in entrambe le posizioni, prevale l'annotazione usata sul metodo.

Su questa annotazione possono essere specificati i seguenti parametri:

`defaultTasklist`  
Speciifica l'elenco di attività predefinito da registrare con Amazon SWF per questo tipo di attività. Il valore predefinito può essere sovrascritto quando si chiama il metodo dell'attività sul client generato utilizzando il parametro `ActivitySchedulingOptions`. Impostato come predefinito su `USE_WORKER_TASK_LIST`. Questo è un valore speciale che indica che va utilizzato l'elenco di task usato dal lavoratore che esegue la registrazione.

`defaultTaskScheduleToStartTimeoutSeconds`  
Speciifica le informazioni defaultTaskSchedule ToStartTimeout registrate con Amazon SWF per questo tipo di attività. Questo è il tempo massimo di attesa di un task di questo tipo di attività prima che venga assegnato a un lavoratore. Per ulteriori dettagli, consulta il *riferimento all'API di Amazon Simple Workflow Service*.

`defaultTaskHeartbeatTimeoutSeconds`  
Speciifica le informazioni `defaultTaskHeartbeatTimeout` registrate con Amazon SWF per questo tipo di attività. In questo periodo i lavoratori di attività devono fornire messaggi di heartbeat; in caso contrario, il task scade. Impostato come predefinito a -1, un valore speciale che indica che il timeout deve essere disattivato. Per ulteriori dettagli, consulta il *riferimento all'API di Amazon Simple Workflow Service*.

`defaultTaskStartToCloseTimeoutSeconds`  
Speciifica le informazioni defaultTaskStart ToCloseTimeout registrate con Amazon SWF per questo tipo di attività. Il timeout determina il tempo massimo che un lavoratore può impiegare per elaborare un task di attività di questo tipo. Per ulteriori dettagli, consulta il *riferimento all'API di Amazon Simple Workflow Service*.

`defaultTaskScheduleToCloseTimeoutSeconds`  
Speciifica le informazioni `defaultScheduleToCloseTimeout` registrate con Amazon SWF per questo tipo di attività. Questo timeout determina il tempo totale in cui il task può rimanere nello stato aperto. Impostato come predefinito a -1, un valore speciale che indica che il timeout deve essere disattivato. Per ulteriori dettagli, consulta il *riferimento all'API di Amazon Simple Workflow Service*.

## @Asincrona
<a name="annotations-asynchronous"></a>

Se usata su un metodo nella logica di coordinamento del flusso di lavoro, indica che il metodo deve essere eseguito in modo asincrono. La chiamata al metodo viene restituita immediatamente, ma l'esecuzione in corso accade in modo asincrono quando sono pronti tutti i parametri Promise<> trasferiti ai metodi. I metodi annotati con @Asynchronous devono avere un tipo di restituzione Promise<> o void. 

`daemon`  
Indica se il task creato per il metodo asincrono deve essere di tipo daemon. `False` per impostazione predefinita.

## @Execute
<a name="annotations-execute"></a>

Se usata su un metodo in'un interfaccia annotata con `@Workflow`, identifica il punto di ingresso del flusso di lavoro.

**Importante**  
L'annotazione `@Execute` può essere applicata a un solo metodo nell'interfaccia.

Su questa annotazione possono essere specificati i seguenti parametri:

`name`  
Specifica il nome del tipo di flusso di lavoro. Se non è impostato, il nome predefinito è \$1*prefisso*\$1\$1*nome*\$1, dove \$1*prefisso*\$1 è il nome dell'interfaccia di flussi di lavoro seguito da un '.' e \$1*nome*\$1 è il nome del metodo con annotazione `@Execute` nel flusso di lavoro.

`version`  
Specifica la versione del tipo di flusso di lavoro.

## @ExponentialRetry
<a name="annotations-exponentialretry"></a>

se usata su un'attività o su un metodo asincrono, imposta una policy di ripetizione esponenziale nel caso in cui il metodo genera un'eccezione non gestita. Un tentativo di ripetizione viene effettuato dopo un periodo di backoff, calcolato in base all'efficacia del numero dei tentativi. 

Su questa annotazione possono essere specificati i seguenti parametri: 

`intialRetryIntervalSeconds`  
Specifica il tempo di attesa prima del primo tentativo di ripetizione. Il valore non deve essere maggiore di `maximumRetryIntervalSeconds` e di `retryExpirationSeconds`.

`maximumRetryIntervalSeconds`  
Specifica il tempo massimo tra i tentativi di ripetizione. Una volta raggiunto, l'intervallo tra i tentativi di ripetizione sarà limitato a questo valore. Impostato come predefinito a -1, il che significa una durata illimitata.

`retryExpirationSeconds`  
Specifica il tempo dopo il quale la ripetizione esponenziale si arresta. Impostato come predefinito a -1, il che significa che non c'è scadenza.

`backoffCoefficient`  
Specifica il coefficiente utilizzato per calcolare l'intervallo di ripetizione. Consultare [Strategia di ripetizione esponenziale](features-retry.md#features-retry-exponential).

`maximumAttempts`  
Specifica il numero di tentativi dopo il quale la ripetizione esponenziale si arresta. Impostato come predefinito a -1, il che significa che non c'è limite al numero di tentativi di ripetizioni.

`exceptionsToRetry`  
Specifica l'elenco dei tipi di eccezione che attivano una ripetizione. L'eccezione non gestita di questi tipi non verrà propagata ulteriormente e il metodo sarà ripetuto dopo l'intervallo di ripetizione calcolato. Per impostazione predefinita, l'elenco contiene `Throwable`.

`excludeExceptions`  
Specifica l'elenco dei tipi di eccezione che non attivano una ripetizione. Le eccezioni non gestite di questo tipo possono propagarsi. Per impostazione predefinita, l'elenco è vuoto.

## @GetState
<a name="annotations-getstate"></a>

Se usata su un metodo in'un interfaccia annotata con `@Workflow`, identifica che il metodo è utilizzato per recuperare lo stato dell'ultima esecuzione del flusso di lavoro. Ci può essere al massimo un metodo con questa annotazione in un'interfaccia con l'annotazione `@Workflow`. I metodi così annotati non devono acquisire parametri e devono avere un tipo di restituzione diverso da `void`.

## @ManualActivityCompletion
<a name="annotations-manualactivitycompletion"></a>

Questa annotazione può essere utilizzata su un metodo di attività per indicare che il task di attività non deve essere completato alla restituzione del metodo. L'attività non verrà completata automaticamente e dovrà essere completata manualmente direttamente utilizzando l'API Amazon SWF. Questo è utile per casi d'uso in cui il task di attività è delegato a un sistema esterno non automatizzato o che richiede l'intervento umano per il completamento.

## @Signal
<a name="annotations-signal"></a>

 Se usata su un metodo in'un interfaccia annotata con `@Workflow`, identifica un segnale che può essere ricevuto dalle esecuzioni del tipo di flusso di lavoro dichiarato dall'interfaccia. L'uso di questa annotazione è obbligatorio per definire un metodo di segnale. 

Su questa annotazione possono essere specificati i seguenti parametri: 

`name`  
Specifica la porzione nominale del nome del segnale. Se non è impostato, si usa il nome del metodo.

## @SkipRegistration
<a name="annotations-skipregistration"></a>

Se utilizzato su un'interfaccia annotata con l'`@Workflow`annotazione, indica che il tipo di flusso di lavoro non deve essere registrato con Amazon SWF. Una delle annotazioni `@WorkflowRegistrationOptions` e `@SkipRegistrationOptions` devono essere usate su un'interfaccia con annotazione `@Workflow`, ma non entrambe.

## @Wait e @ NoWait
<a name="annotations-waitnowait"></a>

Queste annotazioni possono essere utilizzate su un parametro di tipo `Promise<>` per indicare se AWS Flow Framework for Java deve attendere che sia pronto prima di eseguire il metodo. Per impostazione predefinita, i parametri `Promise<>` trasferiti sui metodi `@Asynchronous` devono diventare pronti prima che si verifichi l'esecuzione del metodo. In alcuni casi, è necessario ignorare questo comportamento predefinito. I parametri `Promise<>` trasferiti sui metodi `@Asynchronous` con l'annotazione `@NoWait` non sono attesi.

I parametri (o le sottoclassi) di raccolta che contengono promesse, come `List<Promise<Int>>`, devono essere arricchiti con l'annotazione `@Wait`. Per impostazione predefinita, il framework non attende i membri di una raccolta.

## @Flusso di lavoro
<a name="annotations-workflow"></a>

Questa annotazione viene usata su un'interfaccia per dichiarare un tipo di *flusso di lavoro*. Un'interfaccia decorata con questa annotazione deve contenere esattamente un metodo decorato con l'annotazione [@Execute](#annotations-execute) per dichiarare un punto di ingresso del flusso di lavoro.

**Nota**  
Un'interfaccia non può avere le annotazioni `@Workflow` e `@Activities` dichiarate simultaneamente; sono reciprocamente esclusive.

Su questa annotazione possono essere specificati i seguenti parametri:

`dataConverter`  
Specifica quali `DataConverter` utilizzare nell'invio di richieste alle esecuzioni (e nella ricezione di risultati dalle esecuzioni) di questo tipo di flusso di lavoro.  
L'impostazione predefinita è `NullDataConverter` che, a sua volta, ritorna `JsonDataConverter` a elaborare tutti i dati di richiesta e risposta come JavaScript Object Notation (JSON).

### Esempio
<a name="example"></a>

```
import com.amazonaws.services.simpleworkflow.flow.annotations.Execute;
import com.amazonaws.services.simpleworkflow.flow.annotations.Workflow;
import com.amazonaws.services.simpleworkflow.flow.annotations.WorkflowRegistrationOptions;

@Workflow
@WorkflowRegistrationOptions(defaultExecutionStartToCloseTimeoutSeconds = 3600)
public interface GreeterWorkflow {
   @Execute(version = "1.0")
   public void greet();
}
```

## @WorkflowRegistrationOptions
<a name="annotations-workflowregistrationoptions"></a>

Se utilizzato su un'interfaccia annotata con`@Workflow`, fornisce le impostazioni predefinite utilizzate da Amazon SWF per la registrazione del tipo di flusso di lavoro.

**Nota**  
O `@WorkflowRegistrationOptions` o `@SkipRegistrationOptions` devono essere usate su un'interfaccia con annotazione `@Workflow`, ma non puoi specificarle entrambe.

Su questa annotazione possono essere specificati i seguenti parametri:

Descrizione  
Una descrizione di testo facoltativa del tipo di flusso di lavoro.

`defaultExecutionStartToCloseTimeoutSeconds`  
Speciifica il tipo di flusso di lavoro `defaultExecutionStartToCloseTimeout` registrato con Amazon SWF. Il tempo totale che l'esecuzione di un flusso di lavoro di questo tipo può impiegare per il completamento.  
Per ulteriori informazioni sui timeout del flusso di lavoro, consulta [Tipi di timeout di Amazon SWF](swf-timeout-types.md).

`defaultTaskStartToCloseTimeoutSeconds`  
Speciifica il tipo di flusso di lavoro `defaultTaskStartToCloseTimeout` registrato con Amazon SWF. Specifica il tempo che un solo task di decisione di un'esecuzione di un flusso di lavoro di questo tipo può impiegare per il completamento.  
Se non specifichi `defaultTaskStartToCloseTimeout`, per impostazione predefinita sarà di 30 secondi.  
Per ulteriori informazioni sui timeout del flusso di lavoro, consulta [Tipi di timeout di Amazon SWF](swf-timeout-types.md).

`defaultTaskList`  
L'elenco predefinito di task utilizzato per i task di decisione per le esecuzioni di questo tipo di flusso di lavoro. L'impostazione predefinita qui può essere sovrascritta utilizzando `StartWorkflowOptions` in fase di avvio di un'esecuzione del flusso di lavoro.  
Se non specifichi `defaultTaskList`, verrà impostato su `USE_WORKER_TASK_LIST` come impostazione predefinita. Indica che va utilizzato l'elenco di task usato dal lavoratore che esegue la registrazione del flusso di lavoro.

`defaultChildPolicy`  
Specifica la policy da utilizzare per i flussi di lavoro figli se un'esecuzione di questo tipo è terminata. Il valore predefinito è `ABANDON`. I valori possibili sono:  
+ `ABANDON`— Consenti alle esecuzioni secondarie del flusso di lavoro di continuare a funzionare
+ `TERMINATE`— Interrompere le esecuzioni dei flussi di lavoro secondari
+ `REQUEST_CANCEL`— Richiedere l'annullamento delle esecuzioni dei flussi di lavoro secondari