Перейти до вмісту

Журнал подій процесу

Журнал подій процесу зберігає записи для кожної незмінної межі процесу. Кожна подія журналу може містити вхідні дані й результат кроку, публічний стан до та після кроку, контекст середовища виконання, посилання на артефакти, фрагменти потоку, час виконання та відомості про помилки.

Що записується

Подія Коли Збережені дані
step_started Перед запуском обробника кроку ID завдання, черга, спроба, назва кроку, тип кроку, вхідні дані та стан перед виконанням
step_completed Після успішного виконання обробника кроку Вхідні дані, результат, стан до, стан після, контекст, артефакти, фрагменти та тривалість
step_failed Коли обробник кроку викидає виняток Вхідні дані, стан до, стан після, якщо доступний, контекст, клас помилки, повідомлення про помилку, трасування та тривалість
step_branch_completed Коли успішно завершується одна паралельна гілка Вхідні дані гілки, результат, стан до, стан після, контекст і тривалість
step_item_completed Коли успішно завершується один елемент циклу for-each Вхідні дані елемента, результат, стан до, стан після, метадані елемента, контекст і тривалість
workflow_waiting Коли крок очікування призупиняє виконання Тип очікування, цілі очікування, режим очікування, ключ результату, метадані відповідності та стан під час очікування
workflow_resumed Коли умову кроку очікування виконано Дані для відновлення, стан перед відновленням і стан після відновлення
workflow_replayed Коли експорт відтворюється Метадані вихідного процесу та стан відтворення

Запит до часової шкали

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

Кожен рядок події містить:

  • 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

Нормалізований пакет трасування

Використовуйте workflow_trace() для створення засобу налагодження UI:

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

Пакет трасування містить:

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

steps групує події за індексом кроку й містить останню важливу подію для кожного кроку.

Отримання стану кроку

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

Це повертає публічний state_after з останньої завершеної події або події відновлення для цього кроку, або null, якщо стан не записувався.

Метадані трасування середовища виконання

Під час виконання обробники можуть додавати подробиці трасування на рівні застосунку:

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

Обробники кроків також можуть повертати зарезервовані метадані трасування:

PHP
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(), щоб видаляти старі події трасування:

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