Журнал подій процесу
Журнал подій процесу зберігає записи для кожної незмінної межі процесу. Кожна подія журналу може містити вхідні дані й результат кроку, публічний стан до та після кроку, контекст середовища виконання, посилання на артефакти, фрагменти потоку, час виконання та відомості про помилки.
Що записується
| Подія | Коли | Збережені дані |
|---|---|---|
step_started |
Перед запуском обробника кроку | ID завдання, черга, спроба, назва кроку, тип кроку, вхідні дані та стан перед виконанням |
step_completed |
Після успішного виконання обробника кроку | Вхідні дані, результат, стан до, стан після, контекст, артефакти, фрагменти та тривалість |
step_failed |
Коли обробник кроку викидає виняток | Вхідні дані, стан до, стан після, якщо доступний, контекст, клас помилки, повідомлення про помилку, трасування та тривалість |
step_branch_completed |
Коли успішно завершується одна паралельна гілка | Вхідні дані гілки, результат, стан до, стан після, контекст і тривалість |
step_item_completed |
Коли успішно завершується один елемент циклу for-each | Вхідні дані елемента, результат, стан до, стан після, метадані елемента, контекст і тривалість |
workflow_waiting |
Коли крок очікування призупиняє виконання | Тип очікування, цілі очікування, режим очікування, ключ результату, метадані відповідності та стан під час очікування |
workflow_resumed |
Коли умову кроку очікування виконано | Дані для відновлення, стан перед відновленням і стан після відновлення |
workflow_replayed |
Коли експорт відтворюється | Метадані вихідного процесу та стан відтворення |
Запит до часової шкали
$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";
}
}
Кожен рядок події містить:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Нормалізований пакет трасування
Використовуйте workflow_trace() для створення засобу налагодження UI:
$trace = Queuety::workflow_trace( $workflow_id );
Пакет трасування містить:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps групує події за індексом кроку й містить останню важливу подію для кожного кроку.
Отримання стану кроку
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Це повертає публічний state_after з останньої завершеної події або події відновлення для цього кроку, або null, якщо стан не записувався.
Метадані трасування середовища виконання
Під час виконання обробники можуть додавати подробиці трасування на рівні застосунку:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
Обробники кроків також можуть повертати зарезервовані метадані трасування:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
Ключ _queuety_trace зберігається в журналі подій і не об'єднується зі станом процесу.
CLI
Переглянути часову шкалу у вигляді таблиці:
wp queuety workflow timeline 42
Переглянути стан після кроку:
wp queuety workflow state-at 42 0
Зберігання
Журнали подій накопичуються з часом. Використовуйте prune(), щоб видаляти старі події трасування:
$deleted = Queuety::workflow_events()->prune( 30 );