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
$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:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Normaliseret sporpakke
Brug workflow_trace(), når du bygger en debugger UI:
$trace = Queuety::workflow_trace( $workflow_id );
Sporpakken indeholder:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps grupperer hændelser efter trinindeks og inkluderer den seneste vigtige hændelse for hvert trin.
Opslag af trinets tilstand
$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:
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:
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:
wp queuety workflow timeline 42
Vis tilstanden efter et trin:
wp queuety workflow state-at 42 0
Opbevaring
Hændelseslogge vokser over tid. Brug prune() til at slette gamle sporhændelser:
$deleted = Queuety::workflow_events()->prune( 30 );