

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

# Cronologia del flusso di lavoro in Amazon SWF
<a name="swf-dev-about-workflow-history"></a>

Amazon SWF registra lo stato di avanzamento di ogni esecuzione del flusso di lavoro nella *cronologia del flusso* di lavoro: una registrazione dettagliata, completa e coerente di ogni evento che si è verificato dall'inizio dell'esecuzione del flusso di lavoro. 

Un *evento* rappresenta una modifica discreta dello stato di esecuzione del flusso di lavoro, ad esempio la pianificazione di una nuova attività o il completamento di un'attività in corso. La cronologia del flusso di lavoro contiene tutti gli eventi che causano modifiche allo stato delle esecuzioni del flusso di lavoro, come attività pianificate e completate, timeout dei task e segnali.

In genere, le operazioni che non modificano lo stato dell'esecuzione non compaiono nella cronologia del flusso di lavoro. Ad esempio, la cronologia non mostra i tentativi di polling o l'utilizzo di operazioni di visibilità.

La cronologia del flusso di lavoro presenta diversi vantaggi principali:
+ Le applicazioni possono essere prive di stato, poiché tutte le informazioni sull'esecuzione di un flusso di lavoro sono archiviate nella cronologia del flusso di lavoro.
+ Per ogni esecuzione del flusso di lavoro, la cronologia funziona da registro delle attività pianificate, dello stato attuale e dei risultati. L'esecuzione del flusso di lavoro utilizza queste informazioni per stabilire i passaggi successivi.
+ La cronologia offre un audit trail dettagliato da utilizzare per monitorare le esecuzioni in corso e verificare quelle completate.

Di seguito vi è una visione concettuale della cronologia del flusso di lavoro dell'e-commerce:

```
Invoice0001

Start Workflow Execution

Schedule Verify Order
Start Verify Order Activity
Complete Verify Order Activity

Schedule Charge Credit Card
Start Charge Credit Card Activity
Complete Charge Credit Card Activity

Schedule Ship Order
Start Ship Order Activity
```

Nell'esempio precedente, l'ordine è in attesa di essere spedito. Nell'esempio seguente, l'ordine è completo. Dato che la cronologia del flusso di lavoro è cumulativa, vengono aggiunti gli eventi più recenti:

```
Invoice0001

Start Workflow Execution

Schedule Verify Order
Start Verify Order Activity
Complete Verify Order Activity

Schedule Charge Credit Card
Start Charge Credit Card Activity
Complete Charge Credit Card Activity

Schedule Ship Order
Start Ship Order Activity
{{
Complete Ship Order Activity

Schedule Record Order Completion
Start Record Order Completion Activity
Complete Record Order Completion Activity

Close Workflow}}
```

A livello di programmazione, gli eventi nella cronologia di esecuzione del workflow sono rappresentati come JavaScript oggetti Object Notation (JSON). La stessa cronologia è una matrice JSON di questi oggetti. Ciascun evento presenta quanto segue:
+ Un tipo, ad esempio o [WorkflowExecutionStarted[ActivityTaskCompleted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ActivityTaskCompletedEventAttributes.html)](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_WorkflowExecutionStartedEventAttributes.html)
+ Un timestamp in formato Unix
+ Un ID che identifica l'evento in modo univoco

In oltre, ogni tipo di evento ha un set distinto di attributi descrittivi adeguati al tipo. Ad esempio, l'`ActivityTaskCompleted`evento ha attributi che contengono gli IDs eventi che corrispondono all'ora in cui l'attività è stata pianificata e quando è stata avviata, oltre a un attributo che contiene i dati dei risultati.

È possibile ottenere una copia dello stato corrente della cronologia di esecuzione del flusso di lavoro utilizzando l'[GetWorkflowExecutionHistory](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_GetWorkflowExecutionHistory.html)azione. Inoltre, nell'ambito dell'interazione tra Amazon SWF e il decisore per il tuo flusso di lavoro, quest'ultimo riceve periodicamente copie della cronologia.

Di seguito una sezione dell'esempio di cronologia dell'esecuzione del flusso di lavoro in formato JSON.

```
[  {
      "eventId": 11,
      "eventTimestamp": 1326671603.102,
      "eventType": "WorkflowExecutionTimedOut",
      "workflowExecutionTimedOutEventAttributes": {
         "childPolicy": "TERMINATE",
         "timeoutType": "START_TO_CLOSE"
      }
   }, {
      "decisionTaskScheduledEventAttributes": {
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 10,
      "eventTimestamp": 1326670566.124,
      "eventType": "DecisionTaskScheduled"
   }, {
      "activityTaskTimedOutEventAttributes": {
         "details": "Waiting for confirmation",
         "scheduledEventId": 8,
         "startedEventId": 0,
         "timeoutType": "SCHEDULE_TO_START"
      },
      "eventId": 9,
      "eventTimestamp": 1326670566.124,
      "eventType": "ActivityTaskTimedOut"
   }, {
      "activityTaskScheduledEventAttributes": {
         "activityId": "verification-27",
         "activityType": {
            "name": "activityVerify",
            "version": "1.0"
         },
         "control": "digital music",
         "decisionTaskCompletedEventId": 7,
         "heartbeatTimeout": "120",
         "input": "5634-0056-4367-0923,12/12,437",
         "scheduleToCloseTimeout": "900",
         "scheduleToStartTimeout": "300",
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 8,
      "eventTimestamp": 1326670266.115,
      "eventType": "ActivityTaskScheduled"
   }, {
      "decisionTaskCompletedEventAttributes": {
         "executionContext": "Black Friday",
         "scheduledEventId": 5,
         "startedEventId": 6
      },
      "eventId": 7,
      "eventTimestamp": 1326670266.103,
      "eventType": "DecisionTaskCompleted"
   }, {
      "decisionTaskStartedEventAttributes": {
         "identity": "Decider01",
         "scheduledEventId": 5
      },
      "eventId": 6,
      "eventTimestamp": 1326670161.497,
      "eventType": "DecisionTaskStarted"
   }, {
      "decisionTaskScheduledEventAttributes": {
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 5,
      "eventTimestamp": 1326668752.66,
      "eventType": "DecisionTaskScheduled"
   }, {
      "decisionTaskTimedOutEventAttributes": {
         "scheduledEventId": 2,
         "startedEventId": 3,
         "timeoutType": "START_TO_CLOSE"
      },
      "eventId": 4,
      "eventTimestamp": 1326668752.66,
      "eventType": "DecisionTaskTimedOut"
   }, {
      "decisionTaskStartedEventAttributes": {
         "identity": "Decider01",
         "scheduledEventId": 2
      },
      "eventId": 3,
      "eventTimestamp": 1326668152.648,
      "eventType": "DecisionTaskStarted"
   }, {
      "decisionTaskScheduledEventAttributes": {
         "startToCloseTimeout": "600",
         "taskList": {
            "name": "specialTaskList"
         }
      },
      "eventId": 2,
      "eventTimestamp": 1326668003.094,
      "eventType": "DecisionTaskScheduled"
   }
]
```

Per un elenco dettagliato dei diversi tipi di eventi che possono comparire nella cronologia di esecuzione del flusso di lavoro, consulta il tipo di [HistoryEvent](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_HistoryEvent.html)dati nell'*Amazon Simple Workflow Service API Reference*.

Amazon SWF archivia la cronologia completa di tutte le esecuzioni del flusso di lavoro per un numero configurabile di giorni dopo la chiusura dell'esecuzione. Questo periodo, noto come periodo di conservazione della cronologia del flusso di lavoro, viene specificato quando registri un *dominio* per il tuo flusso di lavoro. I domini sono descritti con particolare attenzione più avanti in questa sezione.