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
$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:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Normaliziran sveženj sledi
Uporabite workflow_trace() pri izdelavi razhroščevalnika UI:
$trace = Queuety::workflow_trace( $workflow_id );
Sveženj sledi vključuje:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps združi dogodke po indeksu koraka in vključuje najnovejši pomembni dogodek za vsak korak.
Iskanje stanja koraka
$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:
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:
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:
wp queuety workflow timeline 42
Oglejte si stanje po koraku:
wp queuety workflow state-at 42 0
Hramba
Dnevniki dogodkov se sčasoma kopičijo. Za brisanje starih dogodkov sledi uporabite prune():
$deleted = Queuety::workflow_events()->prune( 30 );