Pāriet uz saturu

Darbplūsmas notikumu žurnāls

Darbplūsmas notikumu žurnālā tiek reģistrēta katra noturīgās darbplūsmas robežpunkta izsekošanas vēsture. Katrā izsekošanas notikumā var būt norādīta soļa ievade, izvade, publiskais stāvoklis pirms soļa, publiskais stāvoklis pēc soļa, izpildlaika konteksts, artefaktu atsauces, straumēšanas daļas, laiks un kļūdu informācija.

Kas tiek reģistrēts

Notikums Kad Iegūtie dati
step_started Pirms tiek palaists soļa apstrādātājs Uzdevuma ID, rinda, mēģinājums, soļa nosaukums, soļa tips, ievade un stāvoklis pirms izpildes
step_completed Pēc veiksmīgas soļa apstrādātāja izpildes Ievade, izvade, stāvoklis pirms un pēc izpildes, konteksts, artefakti, daļas un ilgums
step_failed Kad soļa apstrādātājs izmet izņēmumu Ievade, stāvoklis pirms un pēc izpildes, ja pieejams, konteksts, kļūdas klase, kļūdas ziņojums, izsekošanas informācija un ilgums
step_branch_completed Kad veiksmīgi izpildās viens paralēlais zars Zara ievade, izvade, stāvoklis pirms un pēc izpildes, konteksts un ilgums
step_item_completed Kad veiksmīgi izpildās viens for-each elements Elementa ievade, izvade, stāvoklis pirms un pēc izpildes, elementa metadati, konteksts un ilgums
workflow_waiting Kad gaidīšanas solis aptur izpildi Gaidīšanas tips, gaidīšanas mērķi, gaidīšanas režīms, rezultāta atslēga, atbilstības metadati un gaidīšanas laikā saglabātais stāvoklis
workflow_resumed Kad gaidīšanas nosacījums ir izpildīts Atsākšanas dati, stāvoklis pirms atsākšanas un stāvoklis pēc atsākšanas
workflow_replayed Kad eksportētais darbplūsmas eksemplārs tiek izveidots no jauna Avota darbplūsmas metadati un atkārtotas izpildes stāvoklis

Laika skalas vaicājumi

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

Katrā notikuma rindā ir:

  • 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

Normalizēta izsekošanas kopa

Lietojiet workflow_trace(), veidojot atkļūdotāju UI:

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

Izsekošanas kopā ir:

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

steps sagrupē notikumus pēc soļa indeksa un iekļauj pēdējo svarīgo notikumu katram solim.

Soļa stāvokļa izgūšana

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

Tas atgriež publisko state_after no pēdējā pabeigtā vai atsāktā notikuma šim solim vai null, ja stāvoklis nav reģistrēts.

Izpildlaika izsekošanas metadati

Apstrādātāji darbības laikā var pievienot izsekošanas informāciju par lietojumprogrammas līmeni:

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

Soļu apstrādātāji var arī atgriezt rezervētus izsekošanas metadatus:

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

Atslēga _queuety_trace tiek saglabāta notikumu žurnālā un netiek apvienota ar darbplūsmas stāvokli.

CLI

Skatiet laika skalu tabulas veidā:

Apvalks
wp queuety workflow timeline 42

Skatiet stāvokli pēc soļa:

Apvalks
wp queuety workflow state-at 42 0

Saglabāšanas ilgums

Notikumu žurnāli laika gaitā uzkrājas. Izmantojiet prune(), lai dzēstu vecus izsekošanas notikumus:

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