Αρχείο συμβάντων ροής εργασίας
Το αρχείο συμβάντων της ροής εργασίας καταγράφει ένα ίχνος για κάθε διατηρήσιμο όριο της ροής. Κάθε συμβάν ίχνους μπορεί να περιλαμβάνει την είσοδο και την έξοδο του βήματος, τη δημόσια κατάσταση πριν και μετά το βήμα, το περιβάλλον εκτέλεσης, αναφορές τεχνουργημάτων, τμήματα ροής, χρονικά στοιχεία και λεπτομέρειες σφάλματος.
Τι καταγράφεται
| Συμβάν | Πότε | Καταγεγραμμένα δεδομένα |
|---|---|---|
step_started |
Πριν εκτελεστεί ο χειριστής βήματος | Αναγνωριστικό εργασίας, ουρά, προσπάθεια, όνομα βήματος, τύπος βήματος, είσοδος και κατάσταση πριν από την εκτέλεση |
step_completed |
Μετά την επιτυχή εκτέλεση του χειριστή βήματος | Είσοδος, έξοδος, κατάσταση πριν, κατάσταση μετά, περιβάλλον, τεχνουργήματα, τμήματα και διάρκεια |
step_failed |
Όταν ο χειριστής βήματος προκαλέσει εξαίρεση | Είσοδος, κατάσταση πριν, κατάσταση μετά όταν είναι διαθέσιμη, περιβάλλον, κλάση σφάλματος, μήνυμα σφάλματος, ίχνος και διάρκεια |
step_branch_completed |
Όταν ένας παράλληλος κλάδος ολοκληρωθεί επιτυχώς | Είσοδος κλάδου, έξοδος, κατάσταση πριν, κατάσταση μετά, περιβάλλον και διάρκεια |
step_item_completed |
Όταν ένα στοιχείο επανάληψης ολοκληρωθεί επιτυχώς | Είσοδος στοιχείου, έξοδος, κατάσταση πριν, κατάσταση μετά, μεταδεδομένα στοιχείου, περιβάλλον και διάρκεια |
workflow_waiting |
Όταν ένα βήμα αναμονής θέτει σε αναμονή την εκτέλεση | Τύπος αναμονής, στόχοι αναμονής, λειτουργία αναμονής, κλειδί αποτελέσματος, μεταδεδομένα αντιστοίχισης και κατάσταση κατά την αναμονή |
workflow_resumed |
Όταν ικανοποιηθεί ένα βήμα αναμονής | Ωφέλιμο φορτίο συνέχισης, κατάσταση πριν από τη συνέχιση και κατάσταση μετά τη συνέχιση |
workflow_replayed |
Όταν αναδημιουργείται μια εξαγωγή | Μεταδεδομένα πηγαίας ροής εργασίας και κατάσταση επανάληψης |
Αναζήτηση στο χρονολόγιο
$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";
}
}
Κάθε γραμμή συμβάντος περιέχει:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
Κανονικοποιημένο σύνολο ιχνών
Χρησιμοποιήστε το workflow_trace() κατά τη δημιουργία ενός εργαλείου εντοπισμού σφαλμάτων UI:
$trace = Queuety::workflow_trace( $workflow_id );
Το σύνολο ιχνών περιλαμβάνει:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
Το steps ομαδοποιεί τα συμβάντα ανά ευρετήριο βήματος και περιλαμβάνει το πιο πρόσφατο σημαντικό συμβάν για κάθε βήμα.
Αναζήτηση κατάστασης βήματος
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
Αυτό επιστρέφει τη δημόσια κατάσταση state_after από το πιο πρόσφατο ολοκληρωμένο ή συνεχιζόμενο συμβάν για το συγκεκριμένο βήμα ή το null αν δεν καταγράφηκε κατάσταση.
Μεταδεδομένα ιχνών εκτέλεσης
Οι χειριστές μπορούν να προσθέτουν λεπτομέρειες ιχνών σε επίπεδο εφαρμογής κατά την εκτέλεσή τους:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
Οι χειριστές βημάτων μπορούν επίσης να επιστρέφουν δεσμευμένα μεταδεδομένα ιχνών:
return [
'result' => 'done',
'_queuety_trace' => [
'input' => [ 'resolved' => $resolved_input ],
'context' => [ 'node_id' => 'loadPost' ],
'artifacts' => [
[ 'key' => 'brief', 'kind' => 'markdown' ],
],
],
];
Το κλειδί _queuety_trace αποθηκεύεται στο αρχείο συμβάντων και δεν συγχωνεύεται με την κατάσταση της ροής εργασίας.
CLI
Δείτε το χρονολόγιο ως πίνακα:
wp queuety workflow timeline 42
Δείτε την κατάσταση μετά από ένα βήμα:
wp queuety workflow state-at 42 0
Διατήρηση
Τα αρχεία συμβάντων συσσωρεύονται με τον καιρό. Χρησιμοποιήστε το prune() για να διαγράψετε παλιά συμβάντα ιχνών:
$deleted = Queuety::workflow_events()->prune( 30 );