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
$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:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Bundel jejak ternormalisasi
Gunakan workflow_trace() saat membuat debugger UI:
$trace = Queuety::workflow_trace( $workflow_id );
Bundel jejak mencakup:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps mengelompokkan peristiwa berdasarkan indeks langkah dan menyertakan peristiwa penting terbaru untuk setiap langkah.
Pencarian status langkah
$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:
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:
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:
wp queuety workflow timeline 42
Tampilkan status setelah langkah:
wp queuety workflow state-at 42 0
Retensi
Log peristiwa terus bertambah seiring waktu. Gunakan prune() untuk menghapus peristiwa jejak lama:
$deleted = Queuety::workflow_events()->prune( 30 );