Protokol událostí workflow
Protokol událostí workflow zaznamenává průběh na každé trvalé hranici workflow. Každá událost může obsahovat vstup a výstup kroku, veřejný stav před krokem a po něm, kontext běhu, odkazy na artefakty, datové bloky streamu, časové údaje a podrobnosti o chybách.
Co se zaznamenává
| Událost | Kdy | Zachycená data |
|---|---|---|
step_started |
Před spuštěním obslužné rutiny kroku | ID úlohy, fronta, pokus, název kroku, typ kroku, vstup a stav před spuštěním |
step_completed |
Po úspěšném dokončení obslužné rutiny kroku | Vstup, výstup, stav před krokem, stav po něm, kontext, artefakty, datové bloky a délka trvání |
step_failed |
Když obslužná rutina kroku vyvolá výjimku | Vstup, stav před krokem, stav po něm (je-li dostupný), kontext, třída chyby, zpráva o chybě, trasování a délka trvání |
step_branch_completed |
Po úspěchu jedné paralelní větve | Vstup větve, výstup, stav před krokem, stav po něm, kontext a délka trvání |
step_item_completed |
Po úspěchu jedné položky cyklu for-each | Vstup položky, výstup, stav před krokem, stav po něm, metadata položky, kontext a délka trvání |
workflow_waiting |
Když čekací krok pozastaví běh | Typ čekání, cíle čekání, režim čekání, klíč výsledku, metadata shody a stav během čekání |
workflow_resumed |
Po splnění čekacího kroku | Data pro obnovení, stav před obnovením a stav po něm |
workflow_replayed |
Při opětovném vytvoření exportu | Metadata zdrojového workflow a stav přehrání |
Dotazování nad časovou osou
$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";
}
}
Každý řádek události obsahuje:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Normalizovaný balíček trasování
Při tvorbě ladicího nástroje UI použijte workflow_trace():
$trace = Queuety::workflow_trace( $workflow_id );
Balíček trasování obsahuje:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps seskupuje události podle indexu kroku a zahrnuje nejnovější důležitou událost pro každý krok.
Vyhledání stavu kroku
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Vrátí veřejný state_after z poslední dokončené nebo obnovené události daného kroku, případně null, pokud nebyl zaznamenán žádný stav.
Metadata trasování běhu
Obslužné rutiny mohou během běhu přidávat podrobnosti o trasování na úrovni aplikace:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
Obslužné rutiny kroků mohou také vracet vyhrazená metadata trasování:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
Klíč _queuety_trace se ukládá do protokolu událostí a neslučuje se se stavem workflow.
CLI
Zobrazte časovou osu jako tabulku:
wp queuety workflow timeline 42
Zobrazte stav po kroku:
wp queuety workflow state-at 42 0
Uchovávání
Protokoly událostí se časem hromadí. Pomocí prune() odstraňte staré události trasování:
$deleted = Queuety::workflow_events()->prune( 30 );