Lewati ke konten

Log Peristiwa Alur Kerja

Log peristiwa alur kerja mencatat jejak untuk setiap batas alur kerja yang persisten. Setiap peristiwa jejak dapat mencakup input langkah, output, status publik sebelum langkah, status publik setelah langkah, konteks runtime, referensi artefak, potongan streaming, waktu, dan detail error.

Data yang dicatat

Peristiwa Waktu Data yang direkam
step_started Sebelum handler langkah dijalankan ID tugas, antrean, percobaan, nama langkah, jenis langkah, input, dan status sebelum eksekusi
step_completed Setelah handler langkah berhasil Input, output, status sebelum, status setelah, konteks, artefak, potongan, dan durasi
step_failed Saat handler langkah melempar error Input, status sebelum, status setelah jika tersedia, konteks, kelas error, pesan error, jejak, dan durasi
step_branch_completed Saat satu cabang paralel berhasil Input cabang, output, status sebelum, status setelah, konteks, dan durasi
step_item_completed Saat satu item for-each berhasil Input item, output, status sebelum, status setelah, metadata item, konteks, dan durasi
workflow_waiting Saat langkah wait menangguhkan proses Jenis wait, target wait, mode wait, kunci hasil, metadata pencocokan, dan status selama menunggu
workflow_resumed Saat langkah wait terpenuhi Payload untuk melanjutkan, status sebelum dilanjutkan, dan status setelah dilanjutkan
workflow_replayed Saat ekspor dibuat ulang Metadata alur kerja sumber dan status replay

Membuat kueri linimasa

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

Setiap baris peristiwa berisi:

  • 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

Bundel jejak ternormalisasi

Gunakan workflow_trace() saat membuat debugger UI:

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

Bundel jejak mencakup:

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

steps mengelompokkan peristiwa berdasarkan indeks langkah dan menyertakan peristiwa penting terbaru untuk setiap langkah.

Pencarian status langkah

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

Ini mengembalikan state_after publik dari peristiwa terbaru yang selesai atau dilanjutkan untuk langkah tersebut, atau null jika tidak ada status yang dicatat.

Metadata jejak runtime

Handler dapat menambahkan detail jejak tingkat aplikasi saat berjalan:

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

Handler langkah juga dapat mengembalikan metadata jejak khusus:

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

Kunci _queuety_trace disimpan di log peristiwa dan tidak digabungkan ke status alur kerja.

CLI

Tampilkan linimasa sebagai tabel:

Shell
wp queuety workflow timeline 42

Tampilkan status setelah langkah:

Shell
wp queuety workflow state-at 42 0

Retensi

Log peristiwa terus bertambah seiring waktu. Gunakan prune() untuk menghapus peristiwa jejak lama:

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