Preskoči na vsebino

Dnevnik dogodkov poteka dela

Dnevnik dogodkov poteka dela beleži sled za vsako trajno mejo poteka dela. Vsak dogodek sledi lahko vključuje vhodne podatke koraka, izhodne podatke, javno stanje pred korakom, javno stanje po koraku, kontekst izvajalnega okolja, sklice na artefakte, kose pretočnega prenosa, časovne podatke in podrobnosti o napakah.

Kaj se beleži

Dogodek Kdaj Zajeti podatki
step_started Pred zagonom obravnavalnika koraka ID opravila, čakalna vrsta, poskus, ime koraka, vrsta koraka, vhodni podatki in stanje pred izvajanjem
step_completed Po uspešnem zaključku obravnavalnika koraka Vhodni podatki, izhodni podatki, stanje pred in po, kontekst, artefakti, kosi in trajanje
step_failed Ko obravnavalnik koraka sproži izjemo Vhodni podatki, stanje pred in po, kadar je na voljo, kontekst, razred napake, sporočilo o napaki, sled in trajanje
step_branch_completed Ko je ena vzporedna veja uspešna Vhodni in izhodni podatki veje, stanje pred in po, kontekst in trajanje
step_item_completed Ko je uspešen en element zanke for-each Vhodni in izhodni podatki elementa, stanje pred in po, metapodatki elementa, kontekst in trajanje
workflow_waiting Ko korak čakanja parkira izvajanje Vrsta čakanja, cilji čakanja, način čakanja, ključ rezultata, metapodatki ujemanja in stanje med čakanjem
workflow_resumed Ko je pogoj koraka čakanja izpolnjen Podatki za nadaljevanje, stanje pred nadaljevanjem in stanje po njem
workflow_replayed Ko je izvoz ponovno ustvarjen Metapodatki izvornega poteka dela in stanje ponovnega predvajanja

Poizvedovanje po časovnici

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

Vsaka vrstica dogodka vsebuje:

  • 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

Normaliziran sveženj sledi

Uporabite workflow_trace() pri izdelavi razhroščevalnika UI:

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

Sveženj sledi vključuje:

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

steps združi dogodke po indeksu koraka in vključuje najnovejši pomembni dogodek za vsak korak.

Iskanje stanja koraka

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

To vrne javno state_after iz zadnjega zaključenega ali nadaljevanega dogodka za ta korak oziroma null, če stanje ni bilo zabeleženo.

Metapodatki sledi izvajalnega okolja

Obravnavalniki lahko med izvajanjem dodajajo podrobnosti o sledi na ravni aplikacije:

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

Obravnavalniki korakov lahko vrnejo tudi rezervirane metapodatke sledi:

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

Ključ _queuety_trace se shrani v dnevnik dogodkov in se ne združi s stanjem poteka dela.

CLI

Oglejte si časovnico kot tabelo:

Lupina
wp queuety workflow timeline 42

Oglejte si stanje po koraku:

Lupina
wp queuety workflow state-at 42 0

Hramba

Dnevniki dogodkov se sčasoma kopičijo. Za brisanje starih dogodkov sledi uporabite prune():

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