Μετάβαση στο περιεχόμενο

Ταξίδι στον χρόνο στις ροές εργασιών

Το Queuety μπορεί να επαναφέρει μια ροή εργασιών σε προηγούμενο βήμα και να συνεχίσει την εκτέλεση από εκείνο το σημείο. Αυτό είναι χρήσιμο όταν ένα βήμα παρήγαγε λανθασμένο αποτέλεσμα, όταν θέλετε να δοκιμάσετε ξανά με διαφορετικές ρυθμίσεις ή όταν χρειάζεται να ανακτήσετε δεδομένα που έχουν αλλοιωθεί χωρίς να επανεκκινήσετε ολόκληρη τη ροή εργασιών.

Η επαναφορά βασίζεται στο Αρχείο καταγραφής συμβάντων ροής εργασιών. Το αρχείο καταγραφής συμβάντων πρέπει να περιέχει δεδομένα state_after για το βήμα-στόχο.

Επαναφορά ροής εργασιών

PHP API

Καλέστε το Queuety::rewind_workflow() με το ID της ροής εργασιών και τον δείκτη βήματος στο οποίο θέλετε να επιστρέψετε:

PHP
use Queuety\Queuety;

// Rewind workflow 42 to step 1.
// The state is restored to the snapshot taken after step 1 completed,
// and step 2 is enqueued for re-execution.
Queuety::rewind_workflow( $workflow_id, to_step: 1 );

Η παράμετρος to_step είναι ο δείκτης με αρίθμηση από το 0 του βήματος του οποίου πρέπει να αποκατασταθεί η ολοκληρωμένη κατάσταση. Η εκτέλεση συνεχίζεται από το επόμενο βήμα (to_step + 1).

CLI

Κέλυφος
wp queuety workflow rewind <id> <step>
Επιλογή Περιγραφή
<id> Αναγνωριστικό ροής εργασιών (απαιτείται)
<step> Δείκτης βήματος στο οποίο θα γίνει επαναφορά, με αρίθμηση από το 0 (απαιτείται)
Κέλυφος
wp queuety workflow rewind 42 1

Πώς λειτουργεί

Όταν επαναφέρετε μια ροή εργασιών στο βήμα N:

  1. Αναζητείται στο αρχείο καταγραφής συμβάντων η τιμή state_after που καταγράφηκε μετά την ολοκλήρωση του βήματος N
  2. Αν δεν υπάρχει στιγμιότυπο, προκαλείται RuntimeException
  3. Η γραμμή της ροής εργασίας κλειδώνεται
  4. Η κατάσταση της ροής εργασίας αντικαθίσταται από το στιγμιότυπο, διατηρώντας όλα τα δεσμευμένα κλειδιά (_steps, _queue, _priority κ.λπ.) από την τρέχουσα γραμμή της ροής εργασίας
  5. Το current_step ορίζεται σε N + 1 και το status ορίζεται σε running
  6. Τα πεδία error_message και failed_at διαγράφονται
  7. Το βήμα με δείκτη N + 1 τίθεται στην ουρά για επεξεργασία
  8. Καταγράφεται ένα συμβάν workflow_rewound

Στη συνέχεια, ο worker αναλαμβάνει το βήμα που τέθηκε στην ουρά και η ροή εργασίας συνεχίζεται κανονικά από εκείνο το σημείο.

Απαιτήσεις

Η επαναφορά απαιτεί δεδομένα state_after στο αρχείο καταγραφής συμβάντων. Το αρχείο καταγράφει αυτόματα αυτά τα δεδομένα για κάθε συμβάν step_completed. Αν το αρχείο καταγραφής συμβάντων έχει εκκαθαριστεί (μέσω του WorkflowEventLog::prune()) και η κατάσταση για το βήμα-στόχο δεν υπάρχει πλέον, η επαναφορά θα αποτύχει.

Βεβαιωθείτε ότι η διατήρηση του αρχείου καταγραφής συμβάντων καλύπτει την περίοδο στην οποία ενδέχεται να χρειαστεί να επαναφέρετε τη ροή.

Περιπτώσεις χρήσης

Διόρθωση προβληματικού χειριστή βήματος

Αν ένας χειριστής βήματος είχε σφάλμα που παρήγαγε λανθασμένο αποτέλεσμα, μπορείτε να αναπτύξετε τη διόρθωση και να επαναφέρετε τη ροή:

PHP
// Step 2 (CallLLMHandler) produced garbled output due to a prompt bug.
// After fixing CallLLMHandler, rewind to step 1 so step 2 runs again
// with the corrected handler.
Queuety::rewind_workflow( $workflow_id, to_step: 1 );

Επανάληψη με διαφορετικές ρυθμίσεις

Όταν ένα βήμα απέτυχε λόγω εξωτερικών παραγόντων (API περιορισμός ρυθμού, λανθασμένα διαπιστευτήρια), διορθώστε τις ρυθμίσεις και επαναφέρετε τη ροή για να εκτελεστεί ξανά:

PHP
// Step 3 failed because the API key was expired.
// After updating the key, rewind to step 2 so step 3 retries.
Queuety::rewind_workflow( $workflow_id, to_step: 2 );

Ανάκτηση από λανθασμένα δεδομένα

Αν ένα προηγούμενο βήμα εισήγαγε λανθασμένα δεδομένα στην κατάσταση, επαναφέρετε τη ροή σε ένα γνωστό σωστό στιγμιότυπο:

PHP
// Step 0 fetched correct data, but step 1 corrupted it.
// Rewind to step 0 to restore the good state and re-run step 1.
Queuety::rewind_workflow( $workflow_id, to_step: 0 );

Σύγκριση με την επανάληψη

Πτυχή retry_workflow() rewind_workflow()
Συνέχιση από Το βήμα που απέτυχε Οποιοδήποτε προηγούμενο βήμα
Κατάσταση Τρέχουσα κατάσταση ροής εργασίας Επαναφορά από το αρχείο καταγραφής συμβάντων state_after
Απαιτείται Η ροή εργασίας να έχει κατάσταση failed Στιγμιότυπο αρχείου συμβάντων στο βήμα-στόχο
Κατάσταση μετά running running
Συμβάν καταγραφής κανένα workflow_rewound