Registro de eventos del flujo de trabajo
El registro de eventos del flujo de trabajo guarda una traza de cada límite duradero del flujo de trabajo. Cada evento de traza puede incluir la entrada y la salida del paso, el estado público antes y después del paso, el contexto de ejecución, referencias a artefactos, fragmentos transmitidos, tiempos y detalles de errores.
Qué se registra
| Evento | Cuándo | Datos registrados |
|---|---|---|
step_started |
Antes de que se ejecute un controlador de paso | ID del trabajo, cola, intento, nombre del paso, tipo de paso, entrada y estado antes de la ejecución |
step_completed |
Después de que un controlador de paso finalice correctamente | Entrada, salida, estado anterior, estado posterior, contexto, artefactos, fragmentos y duración |
step_failed |
Cuando un controlador de paso lanza una excepción | Entrada, estado anterior, estado posterior si está disponible, contexto, clase de error, mensaje de error, traza y duración |
step_branch_completed |
Cuando una rama paralela finaliza correctamente | Entrada de la rama, salida, estado anterior, estado posterior, contexto y duración |
step_item_completed |
Cuando un elemento de un bucle «for each» finaliza correctamente | Entrada del elemento, salida, estado anterior, estado posterior, metadatos del elemento, contexto y duración |
workflow_waiting |
Cuando un paso de espera aparca la ejecución | Tipo de espera, objetivos de espera, modo de espera, clave del resultado, metadatos de coincidencia y estado durante la espera |
workflow_resumed |
Cuando se cumple una condición de espera | Datos de reanudación, estado antes de reanudar y estado después de reanudar |
workflow_replayed |
Cuando se vuelve a crear una exportación | Metadatos del flujo de trabajo de origen y estado de reproducción |
Consultar la cronología
$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";
}
}
Cada fila del evento contiene:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Paquete de trazas normalizado
Use workflow_trace() al crear una UI de depuración:
$trace = Queuety::workflow_trace( $workflow_id );
El paquete de trazas incluye:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps agrupa los eventos por índice de paso e incluye el último evento importante de cada paso.
Búsqueda del estado del paso
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Esto devuelve el state_after público del último evento completado o reanudado de ese paso, o null si no se registró ningún estado.
Metadatos de la traza de ejecución
Los controladores pueden añadir detalles de la traza a nivel de aplicación mientras se ejecutan:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
Los controladores de pasos también pueden devolver metadatos de traza reservados:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
La clave _queuety_trace se almacena en el registro de eventos y no se combina con el estado del flujo de trabajo.
CLI
Vea la cronología como una tabla:
wp queuety workflow timeline 42
Vea el estado después de un paso:
wp queuety workflow state-at 42 0
Retención
Los registros de eventos se acumulan con el tiempo. Use prune() para eliminar eventos de traza antiguos:
$deleted = Queuety::workflow_events()->prune( 30 );