Журнал событий рабочего процесса
Журнал событий рабочего процесса записывает трассировку для каждой устойчивой границы рабочего процесса. Каждое событие трассировки может содержать входные и выходные данные шага, общедоступное состояние до и после шага, контекст среды выполнения, ссылки на артефакты, потоковые фрагменты, время выполнения и сведения об ошибках.
Какие данные записываются
| Событие | Когда | Сохраняемые данные |
|---|---|---|
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 );