Registro eventi del flusso di lavoro
Il registro eventi del flusso di lavoro registra una traccia per ogni confine persistente del flusso. Ogni evento di traccia può includere l'input e l'output del passaggio, lo stato pubblico prima e dopo il passaggio, il contesto di runtime, i riferimenti agli artefatti, i segmenti trasmessi in streaming, i tempi e i dettagli degli errori.
Dati registrati
| Evento | Quando | Dati acquisiti |
|---|---|---|
step_started |
Prima dell'esecuzione del gestore di un passaggio | ID del job, coda, tentativo, nome del passaggio, tipo di passaggio, input e stato prima dell'esecuzione |
step_completed |
Dopo l'esito positivo del gestore di un passaggio | Input, output, stato prima e dopo, contesto, artefatti, segmenti e durata |
step_failed |
Quando il gestore di un passaggio genera un'eccezione | Input, stato prima, stato dopo se disponibile, contesto, classe dell'errore, messaggio di errore, traccia e durata |
step_branch_completed |
Quando un ramo parallelo termina correttamente | Input del ramo, output, stato prima e dopo, contesto e durata |
step_item_completed |
Quando un elemento di un ciclo for-each termina correttamente | Input dell'elemento, output, stato prima e dopo, metadati dell'elemento, contesto e durata |
workflow_waiting |
Quando un passaggio di attesa sospende l'esecuzione | Tipo di attesa, condizioni di attesa, modalità di attesa, chiave del risultato, metadati di corrispondenza e stato durante l'attesa |
workflow_resumed |
Quando una condizione di attesa viene soddisfatta | Dati per la ripresa, stato prima e dopo la ripresa |
workflow_replayed |
Quando un'esportazione viene ricreata | Metadati del flusso di lavoro di origine e stato della riproduzione |
Consultare la cronologia
$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";
}
}
Ogni riga dell'evento contiene:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Pacchetto di tracce normalizzato
Usate workflow_trace() per creare un debugger UI:
$trace = Queuety::workflow_trace( $workflow_id );
Il pacchetto di tracce include:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps raggruppa gli eventi per indice del passaggio e include l'ultimo evento rilevante per ciascun passaggio.
Ricerca dello stato del passaggio
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Restituisce lo stato pubblico state_after dell'ultimo evento completato o ripreso per quel passaggio, oppure null se non è stato registrato alcuno stato.
Metadati della traccia di runtime
I gestori possono aggiungere dettagli di traccia a livello applicativo durante l'esecuzione:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
I gestori dei passaggi possono anche restituire metadati di traccia riservati:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
La chiave _queuety_trace viene salvata nel registro eventi e non viene unita allo stato del flusso di lavoro.
CLI
Visualizzate la cronologia in una tabella:
wp queuety workflow timeline 42
Visualizzate lo stato dopo un passaggio:
wp queuety workflow state-at 42 0
Conservazione
I registri eventi si accumulano nel tempo. Usate prune() per eliminare gli eventi di traccia meno recenti:
$deleted = Queuety::workflow_events()->prune( 30 );