Przejdź do treści

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

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

Każdy wiersz zdarzenia zawiera:

  • 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

Znormalizowany zestaw śladów

Użyj workflow_trace() podczas tworzenia narzędzia do debugowania UI:

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

Zestaw śladów zawiera:

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

steps grupuje zdarzenia według indeksu kroku i zawiera najnowsze ważne zdarzenie dla każdego kroku.

Wyszukiwanie stanu kroku

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

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

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

Powłoka
wp queuety workflow timeline 42

Wyświetl stan po kroku:

Powłoka
wp queuety workflow state-at 42 0

Przechowywanie

Dzienniki zdarzeń gromadzą się z czasem. Użyj prune(), aby usunąć stare zdarzenia śladu:

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