Registro de eventos do fluxo de trabalho
O registro de eventos do fluxo de trabalho guarda um rastreamento para cada limite durável do fluxo. Cada evento de rastreamento pode incluir a entrada e a saída da etapa, o estado público antes e depois da etapa, o contexto de execução, referências a artefatos, blocos transmitidos, tempos e detalhes de erros.
O que é registrado
| Evento | Quando | Dados capturados |
|---|---|---|
step_started |
Antes da execução do manipulador da etapa | ID do trabalho, fila, tentativa, nome e tipo da etapa, entrada e estado antes da execução |
step_completed |
Depois que o manipulador da etapa é executado com sucesso | Entrada, saída, estado antes, estado depois, contexto, artefatos, blocos e duração |
step_failed |
Quando o manipulador da etapa lança uma exceção | Entrada, estado antes, estado depois quando disponível, contexto, classe do erro, mensagem de erro, rastreamento e duração |
step_branch_completed |
Quando uma ramificação paralela é concluída com sucesso | Entrada da ramificação, saída, estado antes, estado depois, contexto e duração |
step_item_completed |
Quando um item de um loop for-each é concluído com sucesso | Entrada do item, saída, estado antes, estado depois, metadados do item, contexto e duração |
workflow_waiting |
Quando uma etapa de espera suspende a execução | Tipo de espera, destinos da espera, modo de espera, chave do resultado, metadados de correspondência e estado durante a espera |
workflow_resumed |
Quando uma etapa de espera é atendida | Dados de retomada, estado antes da retomada e estado depois da retomada |
workflow_replayed |
Quando uma exportação é recriada | Metadados do fluxo de trabalho de origem e estado da reprodução |
Consultar a linha do tempo
$events = Queuety::workflow_timeline( $workflow_id );
foreach ( $events as $event ) {
echo $event['step_index'] . ' ' . $event['event'] . ' ' . $event['handler'] . "\n";
if ( 'step_completed' === $event['event'] ) {
$input = $event['input'];
$output = $event['output'];
$state_before = $event['state_before'];
$state_after = $event['state_after'];
}
if ( 'step_failed' === $event['event'] ) {
echo 'Error: ' . $event['error']['message'] . "\n";
}
}
Cada linha de evento contém:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Pacote de rastreamento normalizado
Use workflow_trace() ao criar um depurador UI:
$trace = Queuety::workflow_trace( $workflow_id );
O pacote de rastreamento inclui:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps agrupa eventos por índice de etapa e inclui o evento importante mais recente de cada etapa.
Consulta do estado da etapa
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Isso retorna o estado público state_after do evento concluído ou retomado mais recente dessa etapa, ou null quando nenhum estado foi registrado.
Metadados de rastreamento em tempo de execução
Os manipuladores podem adicionar detalhes de rastreamento no nível da aplicação enquanto são executados:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
Os manipuladores de etapas também podem retornar metadados de rastreamento reservados:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
A chave _queuety_trace é armazenada no registro de eventos e não é mesclada ao estado do fluxo de trabalho.
CLI
Veja a linha do tempo em uma tabela:
wp queuety workflow timeline 42
Veja o estado após uma etapa:
wp queuety workflow state-at 42 0
Retenção
Os registros de eventos se acumulam com o tempo. Use prune() para excluir eventos de rastreamento antigos:
$deleted = Queuety::workflow_events()->prune( 30 );