Preskočiť na obsah

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

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

Každý riadok udalosti obsahuje:

  • 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

Normalizovaný balík trasovania

Použite workflow_trace() pri vytváraní nástroja na ladenie UI:

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

Balík trasovania obsahuje:

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

steps zoskupuje udalosti podľa indexu kroku a obsahuje najnovšiu dôležitú udalosť pre každý krok.

Vyhľadanie stavu kroku

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

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

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

Shell
wp queuety workflow timeline 42

Zobrazte stav po kroku:

Shell
wp queuety workflow state-at 42 0

Uchovávanie

Denníky udalostí sa časom hromadia. Pomocou prune() odstráňte staré udalosti trasovania:

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