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à.
Amazon SWF
Il progresso di tutte le esecuzioni del flusso di lavoro viene registrato nella cronologia del flusso di lavoro, conservata da Amazon SWF. La cronologia del flusso di lavoro è un registro dettagliato, completo e coerente di tutti gli eventi che si sono verificati a partire dall'inizio dell'esecuzione del flusso di lavoro. Un evento rappresenta un cambio discreto nello stato dell'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:
-
Permette alle applicazioni di essere stateless, perché 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 dell'esecuzione del flusso di lavoro sono rappresentati da oggetti JSON (JavaScript Object Notation). La stessa cronologia è una matrice JSON di questi oggetti. Ciascun evento presenta quanto segue:
-
Un tipo, come WorkflowExecutionStarted o ActivityTaskCompleted
-
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'evento ActivityTaskCompleted
presenta attributi che contengono gli ID degli eventi che corrispondono al momento in cui il task di attività è stato pianificato e a quando è iniziato, oltre a un attributo che contiene i dati del risultato.
Puoi ottenere una copia dello stato attuale della cronologia dell'esecuzione del flusso di lavoro usando l'operazione GetWorkflowExecutionHistory. Inoltre, come parte dell'interazione tra Amazon SWF e il decisore del flusso di lavoro, quest'ultimi 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 diverti tipi di eventi che possono apparire nella cronologia dell'esecuzione del flusso di lavoro, consulta ilHistoryEventtipo di dati nelAmazon Simple Workflow Service API di riferimento.
Amazon SWF archivia la cronologia completa di tutte le esecuzioni del flusso di lavoro per un numero limitato 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.