Ugrás a tartalomhoz

Munkafolyamat-eseménynapló

A munkafolyamat-eseménynapló minden tartós munkafolyamat-határhoz nyomvonalat rögzít. Minden nyomvonal-esemény tartalmazhatja a lépés bemenetét és kimenetét, a nyilvános állapotot a lépés előtt és után, a futásidejű környezetet, a mellékletekre mutató hivatkozásokat, az adatfolyam darabjait, az időzítést és a hiba részleteit.

Mit rögzít a napló

Esemény Mikor Rögzített adatok
step_started Egy lépés kezelőjének futása előtt Feladat-azonosító, sor, próbálkozás, lépés neve, típusa, bemenete és végrehajtás előtti állapot
step_completed Egy lépés kezelőjének sikeres futása után Bemenet, kimenet, előtte lévő állapot, utána lévő állapot, környezet, mellékletek, adatdarabok és időtartam
step_failed Ha egy lépéskezelő kivételt dob Bemenet, előtte lévő állapot, utána lévő állapot, ha elérhető, környezet, hibaosztály, hibaüzenet, nyomvonal és időtartam
step_branch_completed Ha egy párhuzamos ág sikeres Ágbemenet, kimenet, előtte lévő állapot, utána lévő állapot, környezet és időtartam
step_item_completed Ha egy for-each elem sikeres Elembemenet, kimenet, előtte lévő állapot, utána lévő állapot, elem-metaadatok, környezet és időtartam
workflow_waiting Ha egy várakozási lépés felfüggeszti a futást Várakozás típusa, célpontjai, módja, eredménykulcs, egyezési metaadatok és a várakozás alatti állapot
workflow_resumed Ha egy várakozási lépés teljesül Folytatási adat, folytatás előtti állapot és folytatás utáni állapot
workflow_replayed Ha egy exportot újra létrehoznak Forrás-munkafolyamat metaadatai és visszajátszási állapot

Az idővonal lekérdezése

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

Minden eseménysor a következőket tartalmazza:

  • 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ált nyomvonalcsomag

Használja a workflow_trace() elemet hibakereső UI létrehozásakor:

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

A nyomvonalcsomag a következőket tartalmazza:

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

A steps lépésindex szerint csoportosítja az eseményeket, és minden lépéshez tartalmazza a legutóbbi fontos eseményt.

Lépésállapot lekérése

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

Ez az adott lépés legutóbbi befejezett vagy folytatott eseményének nyilvános state_after állapotát adja vissza, vagy null értéket, ha nem rögzítettek állapotot.

Futásidejű nyomvonal-metaadatok

A kezelők futás közben alkalmazásszintű nyomvonalrészleteket adhatnak hozzá:

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

A lépéskezelők fenntartott nyomvonal-metaadatokat is visszaadhatnak:

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

A _queuety_trace kulcs az eseménynaplóban tárolódik, és nem olvad össze a munkafolyamat állapotával.

CLI

Az idővonal megtekintése táblázatként:

Shell
wp queuety workflow timeline 42

Lépés utáni állapot megtekintése:

Shell
wp queuety workflow state-at 42 0

Megőrzés

Az eseménynaplók idővel felhalmozódnak. A régi nyomvonal-események törléséhez használja a prune() elemet:

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