Arbetsflödets händelselogg
Arbetsflödets händelselogg registrerar en spårning för varje beständig arbetsflödesgräns. Varje spårningshändelse kan innehålla stegets indata och utdata, det publika tillståndet före och efter steget, körningskontext, artefaktreferenser, strömningsdelar, tidsuppgifter och felinformation.
Vad som registreras
| Händelse | När | Insamlade data |
|---|---|---|
step_started |
Innan en steghanterare körs | Jobb-ID, kö, försök, stegnamn, stegtyp, indata och tillstånd före körning |
step_completed |
När en steghanterare har körts utan fel | Indata, utdata, tillstånd före, tillstånd efter, kontext, artefakter, delar och varaktighet |
step_failed |
När en steghanterare kastar ett undantag | Indata, tillstånd före, tillstånd efter när det finns tillgängligt, kontext, felklass, felmeddelande, spårning och varaktighet |
step_branch_completed |
När en parallell gren körs utan fel | Grenens indata, utdata, tillstånd före, tillstånd efter, kontext och varaktighet |
step_item_completed |
När ett objekt i en for-each-loop körs utan fel | Objektets indata, utdata, tillstånd före, tillstånd efter, objektmetadata, kontext och varaktighet |
workflow_waiting |
När ett väntesteg parkerar körningen | Väntetyp, väntemål, vänteläge, resultatnyckel, matchningsmetadata och tillstånd under väntan |
workflow_resumed |
När ett väntesteg uppfylls | Återupptagningsdata, tillstånd före återupptagning och tillstånd efter återupptagning |
workflow_replayed |
När en export återskapas | Källarbetsflödets metadata och omspelningsstatus |
Fråga efter tidslinjen
$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";
}
}
Varje händelserad innehåller:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Normaliserat spårningspaket
Använd workflow_trace() när du bygger en felsökare UI:
$trace = Queuety::workflow_trace( $workflow_id );
Spårningspaketet innehåller:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps grupperar händelser efter stegindex och inkluderar den senaste viktiga händelsen för varje steg.
Sökning efter stegtillstånd
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Detta returnerar det publika state_after från den senaste slutförda eller återupptagna händelsen för steget, eller null om inget tillstånd har registrerats.
Metadata för körningsspårning
Hanterare kan lägga till spårningsinformation på programnivå medan de körs:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
Steghanterare kan också returnera reserverad spårningsmetadata:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
Nyckeln _queuety_trace lagras i händelseloggen och sammanfogas inte med arbetsflödestillståndet.
CLI
Visa tidslinjen som en tabell:
wp queuety workflow timeline 42
Visa tillståndet efter ett steg:
wp queuety workflow state-at 42 0
Lagringstid
Händelseloggar samlas på hög med tiden. Använd prune() för att ta bort gamla spårningshändelser:
$deleted = Queuety::workflow_events()->prune( 30 );