Dziennik zdarzeń przepływu pracy
Dziennik zdarzeń przepływu pracy zapisuje ślad dla każdej trwałej granicy przepływu. Każde zdarzenie śladu może zawierać dane wejściowe i wyjściowe kroku, stan publiczny przed krokiem i po nim, kontekst działania, odwołania do artefaktów, fragmenty przesyłane strumieniowo, informacje o czasie oraz szczegóły błędów.
Rejestrowane dane
| Zdarzenie | Kiedy | Rejestrowane dane |
|---|---|---|
step_started |
Przed uruchomieniem procedury obsługi kroku | Identyfikator zadania, kolejka, próba, nazwa kroku, typ kroku, dane wejściowe i stan przed wykonaniem |
step_completed |
Po pomyślnym wykonaniu procedury obsługi kroku | Dane wejściowe, wyjściowe, stan przed i po, kontekst, artefakty, fragmenty i czas trwania |
step_failed |
Gdy procedura obsługi kroku zgłosi wyjątek | Dane wejściowe, stan przed i po (jeśli dostępny), kontekst, klasa błędu, komunikat błędu, ślad i czas trwania |
step_branch_completed |
Gdy jedna gałąź równoległa zakończy się pomyślnie | Dane wejściowe gałęzi, wyjściowe, stan przed i po, kontekst oraz czas trwania |
step_item_completed |
Gdy jeden element pętli zakończy się pomyślnie | Dane wejściowe elementu, wyjściowe, stan przed i po, metadane elementu, kontekst oraz czas trwania |
workflow_waiting |
Gdy krok oczekiwania wstrzyma przebieg | Typ oczekiwania, cele, tryb, klucz wyniku, metadane dopasowania i stan podczas oczekiwania |
workflow_resumed |
Gdy warunek kroku oczekiwania zostanie spełniony | Dane wznowienia, stan przed wznowieniem i stan po wznowieniu |
workflow_replayed |
Gdy eksport zostanie odtworzony | Metadane źródłowego przepływu pracy i stan odtworzenia |
Przeglądanie osi czasu
$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";
}
}
Każdy wiersz zdarzenia zawiera:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Znormalizowany zestaw śladów
Użyj workflow_trace() podczas tworzenia narzędzia do debugowania UI:
$trace = Queuety::workflow_trace( $workflow_id );
Zestaw śladów zawiera:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
steps grupuje zdarzenia według indeksu kroku i zawiera najnowsze ważne zdarzenie dla każdego kroku.
Wyszukiwanie stanu kroku
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Zwraca to publiczny state_after z najnowszego ukończonego lub wznowionego zdarzenia dla tego kroku albo null, jeśli nie zarejestrowano stanu.
Metadane śladu działania
Procedury obsługi mogą dodawać szczegóły śladu na poziomie aplikacji podczas działania:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
Procedury obsługi kroków mogą też zwracać zastrzeżone metadane śladu:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
Klucz _queuety_trace jest zapisywany w dzienniku zdarzeń i nie jest scalany ze stanem przepływu pracy.
CLI
Wyświetl oś czasu jako tabelę:
wp queuety workflow timeline 42
Wyświetl stan po kroku:
wp queuety workflow state-at 42 0
Przechowywanie
Dzienniki zdarzeń gromadzą się z czasem. Użyj prune(), aby usunąć stare zdarzenia śladu:
$deleted = Queuety::workflow_events()->prune( 30 );