Työnkulun aikamatka
Queuety voi palauttaa työnkulun aiempaan vaiheeseen ja jatkaa suoritusta siitä kohdasta. Tästä on hyötyä, jos vaihe tuotti virheellistä tulostetta, haluat yrittää uudelleen eri asetuksilla tai sinun on palautettava vioittuneet tiedot käynnistämättä koko työnkulkua uudelleen.
Palautus perustuu kohteeseen Työnkulun tapahtumaloki. Tapahtumalokissa on oltava kohdevaiheen state_after-tiedot.
Työnkulun palauttaminen aiempaan vaiheeseen
PHP API
Kutsu kohdetta Queuety::rewind_workflow() työnkulun tunnuksella ja sen vaiheen indeksillä, johon haluat palata:
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 );
Parametri to_step on nollasta alkava indeksi vaiheelle, jonka valmistunut tila palautetaan. Suoritus jatkuu seuraavasta vaiheesta (to_step + 1).
CLI
wp queuety workflow rewind <id> <step>
| Valitsin | Kuvaus |
|---|---|
<id> |
Työnkulun tunniste (pakollinen) |
<step> |
Kelattavan vaiheen järjestysnumero nollasta alkaen (pakollinen) |
wp queuety workflow rewind 42 1
Näin se toimii
Kun palautat työnkulun vaiheeseen N:
- Tapahtumalokista kysytään arvo
state_after, joka tallennettiin vaiheen N valmistuttua - Jos tilannevedosta ei löydy, heitetään poikkeus
RuntimeException - Työnkulkurivi lukitaan
- Työnkulun tila korvataan tilannevedoksella, mutta nykyisen työnkulkurivin varatut avaimet (
_steps,_queue,_priorityjne.) säilytetään current_step-arvoksi asetetaan N + 1 jastatus-arvoksi asetetaanrunning- Kaikki kentät
error_messagejafailed_attyhjennetään - Indeksin N + 1 vaihe asetetaan jonoon käsittelyä varten
- Lokitapahtuma
workflow_rewoundkirjataan
Työntekijä ottaa sitten käsittelyyn jonoon asetetun vaiheen, ja työnkulku jatkuu siitä eteenpäin tavalliseen tapaan.
Vaatimukset
Palautus edellyttää state_after-tietoja tapahtumalokissa. Tapahtumaloki tallentaa ne automaattisesti jokaiselle tapahtumalle step_completed. Jos tapahtumalokia on karsittu kohteen WorkflowEventLog::prune() kautta eikä kohdevaiheen tilaa enää ole, palautus epäonnistuu.
Varmista, että tapahtumalokin säilytysaika kattaa ajanjakson, johon saatat joutua palaamaan.
Käyttötapaukset
Virheellisen vaihekäsittelijän korjaaminen
Jos vaihekäsittelijässä oli virhe, jonka vuoksi se tuotti väärän tuloksen, voit ottaa korjauksen käyttöön ja palauttaa työnkulun:
// 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 );
Uusi yritys eri asetuksilla
Kun vaihe epäonnistui ulkoisen tekijän (kuten API-nopeusrajoituksen tai virheellisten tunnistetietojen) vuoksi, korjaa asetukset ja suorita vaihe uudelleen palauttamalla työnkulku:
// 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 );
Virheellisistä tiedoista palautuminen
Jos aiempi vaihe lisäsi tilaan virheellisiä tietoja, palaa tunnetusti oikeaan tilannevedokseen:
// 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 );
Vertailu uudelleenyritykseen
| Ominaisuus | retry_workflow() |
rewind_workflow() |
|---|---|---|
| Jatkaa kohdasta | Epäonnistunut vaihe | Mikä tahansa aiempi vaihe |
| Tila | Nykyinen työnkulun tila | Palautetaan tapahtumalokin state_after-tietojen perusteella |
| Edellyttää | Työnkulun tilana on failed |
Tapahtumalokin tilannevedos kohdevaiheesta |
| Tila jälkeen | running |
running |
| Lokitapahtuma | ei mitään | workflow_rewound |