Siirry sisältöön

Työnkulun tapahtumaloki

Työnkulun tapahtumaloki tallentaa jäljen jokaisesta pysyvästä työnkulun rajakohdasta. Kukin jälkitapahtuma voi sisältää vaiheen syötteen ja tulosteen, julkisen tilan ennen vaihetta ja sen jälkeen, ajonaikaisen kontekstin, artefaktiviitteet, suoratoistopalat, ajoitustiedot ja virheen tiedot.

Tallennettavat tiedot

Tapahtuma Ajankohta Tallennetut tiedot
step_started Ennen vaiheenkäsittelijän suorittamista Työn tunnus, jono, yritys, vaiheen nimi, vaiheen tyyppi, syöte ja tila ennen suorittamista
step_completed Kun vaiheenkäsittelijä onnistuu Syöte, tuloste, tila ennen ja jälkeen, konteksti, artefaktit, palat ja kesto
step_failed Kun vaiheenkäsittelijä heittää poikkeuksen Syöte, tila ennen ja jälkeen, jos saatavilla, konteksti, virheluokka, virheilmoitus, jälki ja kesto
step_branch_completed Kun rinnakkaishaara onnistuu Haaran syöte ja tuloste, tila ennen ja jälkeen, konteksti ja kesto
step_item_completed Kun for-each-kohde onnistuu Kohteen syöte ja tuloste, tila ennen ja jälkeen, kohteen metatiedot, konteksti ja kesto
workflow_waiting Kun odotusvaihe pysäyttää suorituksen Odotuksen tyyppi, kohteet, tila, tulosavain, täsmäytyksen metatiedot ja tila odotuksen aikana
workflow_resumed Kun odotusvaiheen ehto täyttyy Jatkamisen hyötykuorma, tila ennen jatkamista ja tila jatkamisen jälkeen
workflow_replayed Kun vienti luodaan uudelleen Lähdetyönkulun metatiedot ja toistotila

Aikajanan kyselyt

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

Jokainen tapahtumarivi sisältää:

  • 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

Normalisoitu jälkipaketti

Käytä workflow_trace()-toimintoa, kun rakennat virheenjäljittäjän UI:

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

Jälkipaketti sisältää:

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

steps ryhmittelee tapahtumat vaiheen indeksin mukaan ja sisällyttää kunkin vaiheen viimeisimmän tärkeän tapahtuman.

Vaiheen tilan haku

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

Tämä palauttaa vaiheen viimeisimmän valmistuneen tai jatketun tapahtuman julkisen state_after-tilan tai arvon null, jos tilaa ei tallennettu.

Ajonaikaisen jäljen metatiedot

Käsittelijät voivat lisätä sovellustason jälkitietoja suorituksensa aikana:

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

Vaiheenkäsittelijät voivat myös palauttaa varattuja jäljen metatietoja:

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

_queuety_trace-avain tallennetaan tapahtumalokiin, eikä sitä yhdistetä työnkulun tilaan.

CLI

Näytä aikajana taulukkona:

Shell
wp queuety workflow timeline 42

Näytä vaiheen jälkeinen tila:

Shell
wp queuety workflow state-at 42 0

Säilytys

Tapahtumalokeja kertyy ajan mittaan. Poista vanhoja jälkitapahtumia käyttämällä toimintoa prune():

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