Hoppa till innehåll

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

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

Varje händelserad innehåller:

  • 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

Normaliserat spårningspaket

Använd workflow_trace() när du bygger en felsökare UI:

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

Spårningspaketet innehåller:

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

steps grupperar händelser efter stegindex och inkluderar den senaste viktiga händelsen för varje steg.

Sökning efter stegtillstånd

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

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

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

Shell
wp queuety workflow timeline 42

Visa tillståndet efter ett steg:

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

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