Histórico do fluxo de trabalho do Amazon SWF - Amazon Simple Workflow Service

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

Histórico do fluxo de trabalho do Amazon SWF

O progresso de cada execução de fluxo de trabalho é registrado em seu histórico de fluxo de trabalho, que o Amazon SWF mantém. O histórico de fluxo de trabalho é um registro detalhado, completo e consistente de todos os eventos que ocorreram desde que a execução do fluxo de trabalho foi iniciada. Um evento representa uma alteração discreta no estado da sua execução de fluxo de trabalho, como uma nova atividade agendada ou uma atividade em execução que foi concluída. O histórico de fluxo de trabalho contém todos os eventos que fazem com que o estado da execução de fluxo de trabalho seja alterado, como atividades agendadas e concluídas, tempos limites de tarefas e sinais.

Em geral, as operações que não alteram o estado da execução de fluxo de trabalho não aparecem no histórico de fluxo de trabalho. Por exemplo, o histórico de fluxo de trabalho não mostra tentativas de sondagem ou o uso de operações de visibilidade.

O histórico de fluxo de trabalho tem vários benefícios-chave:

  • Ele permite que os aplicativos sejam stateless, pois todas as informações sobre uma execução de fluxo de trabalho são armazenadas em seu histórico de fluxo de trabalho.

  • Para cada execução de fluxo de trabalho, o histórico fornece um registro de quais atividades foram agendadas, seu status atual e seus resultados. A execução de fluxo de trabalho usa essas informações para determinar as próximas etapas.

  • O histórico fornece uma trilha de auditoria detalhada que você pode usar para monitorar execuções de fluxo de trabalho em andamento e verificar execuções de fluxo de trabalho concluídas.

O cenário a seguir é uma visão conceitual do histórico de fluxo de trabalho de comércio eletrônico:

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

No exemplo anterior, o pedido está em espera para envio. No exemplo a seguir, o pedido está concluído. Como o histórico de fluxo de trabalho é cumulativo, os eventos mais recentes são acrescentados:

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

Programaticamente, os eventos no histórico de execução de fluxo de trabalho são representados como objetos JSON (JavaScript Object Notation). O histórico propriamente dito é uma matriz JSON desses objetos. Cada evento tem o seguinte:

Além disso, cada tipo de evento tem um conjunto distinto de atributos descritivos que são apropriados para esse tipo. Por exemplo, o evento ActivityTaskCompleted possui atributos que contêm os IDs dos eventos que correspondem ao horário no qual a tarefa foi agendada e quando ela foi iniciada, bem como um atributo que contém dados de resultados.

Você pode obter uma cópia do estado atual do histórico de execução de fluxo de trabalho usando a ação GetWorkflowExecutionHistory. Além disso, como parte da interação entre o Amazon SWF e o decodificador do seu fluxo de trabalho, o decodificador recebe periodicamente cópias do histórico.

Veja abaixo uma seção de um exemplo de histórico de execução de fluxo de trabalho no 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" } ]

Para obter uma lista detalhada dos diferentes tipos de eventos que podem aparecer no histórico de execução do fluxo de trabalho, consulte o tipo de dados HistoryEvent na Referência da API do Amazon Simple Workflow Service.

O Amazon SWF armazena o histórico completo de todas as execuções de fluxo de trabalho por um número configurável de dias após o encerramento da execução. Esse período, conhecido como o período de retenção do histórico de fluxo de trabalho, é especificado quando você registra um Domínio para seu fluxo de trabalho. Domínios são discutidos com mais detalhes posteriormente nesta seção.