Vai al contenuto

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

PHP
$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:

  • id
  • workflow_id
  • job_id
  • parent_event_id
  • step_index
  • step_name
  • step_type
  • handler
  • event
  • queue
  • attempt
  • input
  • output
  • state_before
  • state_after
  • context
  • artifacts
  • chunks
  • error
  • duration_ms
  • created_at

Pacchetto di tracce normalizzato

Usate workflow_trace() per creare un debugger UI:

PHP
$trace = Queuety::workflow_trace( $workflow_id );

Il pacchetto di tracce include:

  • workflow
  • steps
  • events
  • jobs
  • logs
  • artifacts
  • chunks
  • signals
  • wait_dependencies

steps raggruppa gli eventi per indice del passaggio e include l'ultimo evento rilevante per ciascun passaggio.

Ricerca dello stato del passaggio

PHP
$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:

PHP
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:

PHP
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:

Shell
wp queuety workflow timeline 42

Visualizzate lo stato dopo un passaggio:

Shell
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:

PHP
$deleted = Queuety::workflow_events()->prune( 30 );