Ga naar de inhoud

Workflow-gebeurtenislog

De workflow-gebeurtenislog legt voor elke duurzame workflowgrens een trace vast. Elke tracegebeurtenis kan de stapinvoer, uitvoer, openbare status vóór de stap, openbare status na de stap, runtimecontext, verwijzingen naar artefacten, streamingchunks, timing en foutdetails bevatten.

Wat wordt vastgelegd

Gebeurtenis Wanneer Vastgelegde gegevens
step_started Voordat een staphandler wordt uitgevoerd Taak-ID, wachtrij, poging, stapnaam, staptype, invoer en status vóór uitvoering
step_completed Nadat een staphandler slaagt Invoer, uitvoer, status ervoor, status erna, context, artefacten, chunks en duur
step_failed Wanneer een staphandler een fout genereert Invoer, status ervoor, status erna indien beschikbaar, context, foutklasse, foutbericht, trace en duur
step_branch_completed Wanneer een parallelle tak slaagt Takinvoer, uitvoer, status ervoor, status erna, context en duur
step_item_completed Wanneer een for-each-item slaagt Iteminvoer, uitvoer, status ervoor, status erna, itemmetadata, context en duur
workflow_waiting Wanneer een wachtstap de uitvoering parkeert Wachttype, wachtdoelen, wachtmodus, resultaatsleutel, matchmetadata en status tijdens het wachten
workflow_resumed Wanneer aan een wachtstap is voldaan Hervattingspayload, status vóór hervatting en status na hervatting
workflow_replayed Wanneer een export opnieuw wordt aangemaakt Metagegevens van de bronworkflow en replaystatus

De tijdlijn opvragen

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

Elke gebeurtenisrij bevat:

  • 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

Genormaliseerde tracebundel

Gebruik workflow_trace() bij het bouwen van een debugger UI:

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

De tracebundel bevat:

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

steps groepeert gebeurtenissen op stapindex en bevat de meest recente belangrijke gebeurtenis voor elke stap.

Stapstatus opzoeken

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

Dit retourneert de openbare state_after van de meest recente voltooide of hervatte gebeurtenis voor die stap, of null als er geen status is vastgelegd.

Metagegevens van runtime-traces

Handlers kunnen tijdens de uitvoering tracegegevens op applicatieniveau toevoegen:

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

Staphandlers kunnen ook gereserveerde tracemetagegevens retourneren:

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

De sleutel _queuety_trace wordt opgeslagen in de gebeurtenislog en niet samengevoegd met de workflowstatus.

CLI

Bekijk de tijdlijn als tabel:

Shell
wp queuety workflow timeline 42

Bekijk de status na een stap:

Shell
wp queuety workflow state-at 42 0

Bewaartermijn

Gebeurtenislogs stapelen zich in de loop van de tijd op. Gebruik prune() om oude tracegebeurtenissen te verwijderen:

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