Gå til indhold

Workflowhændelseslog

Workflowets hændelseslog registrerer et spor for hver grænse i workflowets varige forløb. Hver sporhændelse kan indeholde trinnets input, output, offentlige tilstand før trinnet, offentlige tilstand efter trinnet, runtimekontekst, artefakthenvisninger, streamingbidder, tidsdata og fejloplysninger.

Hvad registreres

Hændelse Hvornår Registrerede data
step_started Før en trinhåndterer køres Job-ID, kø, forsøg, trinavn, trintype, input og tilstand før kørsel
step_completed Når en trinhåndterer lykkes Input, output, tilstand før, tilstand efter, kontekst, artefakter, bidder og varighed
step_failed Når en trinhåndterer udløser en undtagelse Input, tilstand før, tilstand efter hvis tilgængelig, kontekst, fejlkategori, fejlmeddelelse, spor og varighed
step_branch_completed Når en parallel gren lykkes Grenens input, output, tilstand før, tilstand efter, kontekst og varighed
step_item_completed Når et for-each-element lykkes Elementets input, output, tilstand før, tilstand efter, elementmetadata, kontekst og varighed
workflow_waiting Når et ventetrin sætter kørslen på pause Ventetype, ventemål, ventetilstand, resultatnøgle, matchmetadata og tilstand under ventetiden
workflow_resumed Når et ventetrin opfyldes Fortsættelsesdata, tilstand før genoptagelse og tilstand efter genoptagelse
workflow_replayed Når en eksport genskabes Kildens workflowmetadata og afspilningstilstand

Forespørgsel på tidslinjen

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";
    }
}

Hver hændelsesrække indeholder:

  • 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

Normaliseret sporpakke

Brug workflow_trace(), når du bygger en debugger UI:

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

Sporpakken indeholder:

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

steps grupperer hændelser efter trinindeks og inkluderer den seneste vigtige hændelse for hvert trin.

Opslag af trinets tilstand

PHP
$state = Queuety::workflow_state_at( $workflow_id, $step_index );

Dette returnerer den offentlige state_after fra den seneste fuldførte eller genoptagne hændelse for trinnet eller null, hvis ingen tilstand blev registreret.

Runtime-spormetadata

Håndterere kan tilføje sporoplysninger på programniveau, mens de kører:

PHP
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );

Trinhåndterere kan også returnere reserverede sporingsmetadata:

PHP
return [
    'result' => 'done',
    '_queuety_trace' => [
        'input' => [ 'resolved' => $resolved_input ],
        'context' => [ 'node_id' => 'loadPost' ],
        'artifacts' => [
            [ 'key' => 'brief', 'kind' => 'markdown' ],
        ],
    ],
];

Nøglen _queuety_trace gemmes i hændelsesloggen og flettes ikke ind i workflowtilstanden.

CLI

Vis tidslinjen som en tabel:

Shell
wp queuety workflow timeline 42

Vis tilstanden efter et trin:

Shell
wp queuety workflow state-at 42 0

Opbevaring

Hændelseslogge vokser over tid. Brug prune() til at slette gamle sporhændelser:

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