Workflow-Ereignisprotokoll
Das Workflow-Ereignisprotokoll zeichnet jeden dauerhaften Workflow-Übergang auf. Jedes Ereignis kann die Schritteingabe, -ausgabe, den öffentlichen Status vor und nach dem Schritt, den Laufzeitkontext, Artefaktverweise, Streaming-Datenblöcke, Zeitangaben und Fehlerdetails enthalten.
Erfasste Daten
| Ereignis | Zeitpunkt | Erfasste Daten |
|---|---|---|
step_started |
Vor Ausführung des Schritt-Handlers | Job-ID, Warteschlange, Versuch, Schrittname, Schritttyp, Eingabe und Status vor der Ausführung |
step_completed |
Nach erfolgreicher Ausführung des Schritt-Handlers | Eingabe, Ausgabe, Status davor, Status danach, Kontext, Artefakte, Datenblöcke und Dauer |
step_failed |
Wenn der Schritt-Handler eine Ausnahme auslöst | Eingabe, Status davor, Status danach, falls verfügbar, Kontext, Fehlerklasse, Fehlermeldung, Stacktrace und Dauer |
step_branch_completed |
Wenn ein paralleler Zweig erfolgreich ist | Zweigeingabe, Ausgabe, Status davor, Status danach, Kontext und Dauer |
step_item_completed |
Wenn ein For-Each-Element erfolgreich ist | Element-Eingabe, Ausgabe, Status davor, Status danach, Element-Metadaten, Kontext und Dauer |
workflow_waiting |
Wenn ein Warteschritt den Lauf anhält | Wartetyp, Warteziele, Wartemodus, Ergebnisschlüssel, Abgleich-Metadaten und Status während des Wartens |
workflow_resumed |
Wenn eine Wartebedingung erfüllt ist | Fortsetzungspayload, Status vor der Fortsetzung und Status danach |
workflow_replayed |
Wenn ein Export neu erstellt wird | Metadaten des Quell-Workflows und Wiedergabestatus |
Zeitachse abfragen
$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";
}
}
Jede Ereigniszeile enthält:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Normalisiertes Trace-Paket
Verwende workflow_trace(), wenn du einen Debugger UI erstellst:
$trace = Queuety::workflow_trace( $workflow_id );
Das Trace-Paket enthält:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps gruppiert Ereignisse nach Schrittindex und enthält das jeweils neueste wichtige Ereignis für jeden Schritt.
Schrittestatus abfragen
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Dies gibt den öffentlichen state_after des neuesten abgeschlossenen oder fortgesetzten Ereignisses für diesen Schritt zurück, oder null, wenn kein Status aufgezeichnet wurde.
Metadaten des Laufzeit-Traces
Handler können während ihrer Ausführung Details für anwendungsspezifische Traces hinzufügen:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
Schritt-Handler können auch reservierte Trace-Metadaten zurückgeben:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
Der Schlüssel _queuety_trace wird im Ereignisprotokoll gespeichert und nicht mit dem Workflow-Status zusammengeführt.
CLI
Zeige die Zeitachse als Tabelle an:
wp queuety workflow timeline 42
Zeige den Status nach einem Schritt an:
wp queuety workflow state-at 42 0
Aufbewahrung
Ereignisprotokolle sammeln sich mit der Zeit an. Verwende prune(), um alte Trace-Ereignisse zu löschen:
$deleted = Queuety::workflow_events()->prune( 30 );