Saltar al contenido

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

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

Cada fila del evento contiene:

  • 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

Paquete de trazas normalizado

Use workflow_trace() al crear una UI de depuración:

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

El paquete de trazas incluye:

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

steps agrupa los eventos por índice de paso e incluye el último evento importante de cada paso.

Búsqueda del estado del paso

PHP
$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:

PHP
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:

PHP
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:

Shell
wp queuety workflow timeline 42

Vea el estado después de un paso:

Shell
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:

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