Denník udalostí workflowu
Denník udalostí workflowu zaznamenáva priebeh pri každej trvalej hranici workflowu. Každá udalosť môže obsahovať vstup a výstup kroku, verejný stav pred krokom a po ňom, kontext behu, odkazy na artefakty, bloky streamu, časové údaje a podrobnosti o chybe.
Čo sa zaznamenáva
| Udalosť | Kedy | Zachytené údaje |
|---|---|---|
step_started |
Pred spustením obslužnej funkcie kroku | ID úlohy, front, pokus, názov kroku, typ kroku, vstup a stav pred vykonaním |
step_completed |
Po úspešnom vykonaní obslužnej funkcie kroku | Vstup, výstup, stav pred, stav po, kontext, artefakty, bloky a trvanie |
step_failed |
Keď obslužná funkcia kroku vyhodí výnimku | Vstup, stav pred, stav po, ak je dostupný, kontext, trieda chyby, chybová správa, trasovanie a trvanie |
step_branch_completed |
Keď sa úspešne dokončí jedna paralelná vetva | Vstup vetvy, výstup, stav pred, stav po, kontext a trvanie |
step_item_completed |
Keď sa úspešne dokončí jedna položka cyklu for-each | Vstup položky, výstup, stav pred, stav po, metadáta položky, kontext a trvanie |
workflow_waiting |
Keď krok čakania pozastaví beh | Typ čakania, ciele čakania, režim čakania, kľúč výsledku, metadáta zhody a stav počas čakania |
workflow_resumed |
Keď je splnená podmienka kroku čakania | Údaje na obnovenie, stav pred obnovením a stav po obnovení |
workflow_replayed |
Keď sa export vytvorí znova | Metadáta zdrojového workflowu a stav pri prehratí |
Prehľadávanie časovej osi
$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ý riadok udalosti obsahuje:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Normalizovaný balík trasovania
Použite workflow_trace() pri vytváraní nástroja na ladenie UI:
$trace = Queuety::workflow_trace( $workflow_id );
Balík trasovania obsahuje:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps zoskupuje udalosti podľa indexu kroku a obsahuje najnovšiu dôležitú udalosť pre každý krok.
Vyhľadanie stavu kroku
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Vráti verejný state_after z najnovšej dokončenej alebo obnovenej udalosti daného kroku, prípadne null, ak sa nezaznamenal žiadny stav.
Metadáta trasovania počas behu
Obslužné funkcie môžu počas behu pridávať podrobnosti trasovania na úrovni aplikácie:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
Obslužné funkcie krokov môžu vrátiť aj vyhradené metadáta trasovania:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
Kľúč _queuety_trace sa uloží do denníka udalostí a nezlúči sa so stavom workflowu.
CLI
Zobrazte časovú os vo forme tabuľky:
wp queuety workflow timeline 42
Zobrazte stav po kroku:
wp queuety workflow state-at 42 0
Uchovávanie
Denníky udalostí sa časom hromadia. Pomocou prune() odstráňte staré udalosti trasovania:
$deleted = Queuety::workflow_events()->prune( 30 );