Työnkulun vienti ja toisto
Queuety voi viedä työnkulun koko suoritushistorian siirrettävään JSON-muotoon ja toistaa sen toisessa ympäristössä. Tämä on hyödyllistä tuotantovirheiden toistamiseen paikallisesti, työnkulkujen siirtämiseen ympäristöjen välillä ja auditointiin.
Työnkulun vieminen
PHP API
Kutsu Queuety::export_workflow() työnkulun tunnuksella. Se palauttaa JSON-sarjoitettavan taulukon:
use Queuety\Queuety;
$data = Queuety::export_workflow( $workflow_id );
Saat suoraan JSON-merkkijonon seuraavasti:
$json = json_encode( $data, JSON_PRETTY_PRINT );
file_put_contents( '/tmp/workflow-42.json', $json );
CLI
wp queuety workflow export <id> [--output=<file>]
| Valitsin | Kuvaus |
|---|---|
<id> |
Työnkulun tunniste (pakollinen) |
--output=<file> |
JSON-tiedoston tallennuspolku. Oletusarvo on vakiotuloste. |
# Print to stdout
wp queuety workflow export 42
# Write to a file
wp queuety workflow export 42 --output=/tmp/workflow-42.json
Työnkulun toistaminen
PHP API
Kutsu Queuety::replay_workflow() vientitiedoilla. Se palauttaa uuden työnkulun tunnuksen:
use Queuety\Queuety;
$json = file_get_contents( '/tmp/workflow-42.json' );
$data = json_decode( $json, true );
$new_id = Queuety::replay_workflow( $data );
CLI
wp queuety workflow replay <file>
| Valitsin | Kuvaus |
|---|---|
<file> |
Viedyn JSON-tiedoston polku (pakollinen) |
wp queuety workflow replay /tmp/workflow-42.json
# Success: Workflow replayed. New workflow ID: 85.
JSON-rakenne
Vienti sisältää työnkulun koko tilan, siihen liittyvät työt, jälkitapahtumat, lokimerkinnät, tallennetut signaalit, artefaktit, palat ja kaikki työnkulkujen riippuvuusodotusten rivit:
{
"workflow": {
"id": 42,
"name": "generate_report",
"status": "failed",
"state": { "user_id": 1, "_steps": [...], "_queue": "default" },
"current_step": 2,
"total_steps": 4,
"parent_workflow_id": null,
"parent_step_index": null,
"started_at": "2026-03-28 10:00:00",
"completed_at": null,
"failed_at": "2026-03-28 10:05:00",
"error_message": "API timeout",
"deadline_at": null
},
"jobs": [
{
"id": 100,
"queue": "default",
"handler": "App\\Handlers\\FetchDataHandler",
"payload": {},
"status": "completed",
"attempts": 1,
"max_attempts": 3,
"step_index": 0
}
],
"events": [
{
"id": 1,
"job_id": 100,
"step_index": 0,
"step_name": "fetchData",
"step_type": "single",
"handler": "App\\Handlers\\FetchDataHandler",
"event": "step_completed",
"input": { "user_id": 1 },
"output": { "records": 150 },
"state_before": { "user_id": 1 },
"state_after": { "user_id": 1, "records": 150 },
"context": { "source": "api" },
"error": null,
"duration_ms": 230,
"created_at": "2026-03-28 10:00:01"
}
],
"logs": [
{
"id": 1,
"event": "workflow_started",
"handler": "generate_report",
"created_at": "2026-03-28 10:00:00"
}
],
"signals": [],
"artifacts": [],
"chunks": [],
"wait_dependencies": [],
"exported_at": "2026-03-28T12:00:00+00:00",
"queuety_version": "0.22.0"
}
Osa kentistä on yllä olevassa esimerkissä lyhennetty. Todellinen vienti sisältää kaikkien tapahtumarivien kaikki jälkisarakkeet.
Työnkulkujen viennit säilyttävät myös työnkulun metatiedot, kuten definition_version, definition_hash ja idempotency_key, jos ne asetettiin alkuperäiselle suoritukselle.
Toiston toiminta
Kun toistat viedyn työnkulun:
- Luodaan uusi työnkulkumerkintä, jossa on viety tila ja vaihemääritelmät
- Uuden työnkulun nimi on
{original_name}_replay_{timestamp} - Historialliset työnkulun tapahtumat ja lokit lisätään uudelleen uuteen ympäristöön
- Tallennetut signaalit ja työnkulun odotuksen riippuvuusrivit toistetaan historiallisena tilana
- Jos alkuperäinen työnkulku oli edelleen
running, nykyinen vaihe lisätään käsiteltäväksi. Repeat- jastart_workflows()-vaiheita ei lisätä uudelleen jonoon, joten jos toisto pysähtyy niihin, työnkulku jää tilaanrunningilman työtä (#17) - Jos alkuperäisen työnkulun tila oli
waiting_for_signal,waiting_for_workflows,paused,failed,cancelledtaicompleted, sama tila säilyy toistetussa työnkulussa
Toistettu työnkulku saa uuden tunnuksen ja toimii itsenäisesti. Se ei vaikuta alkuperäiseen.
waiting_for_workflows-toistoissa viedyt riippuvuusrivit luodaan uudelleen samoilla työnkulkujen tunnuksilla. Tämä on hyödyllistä auditointiin ja ympäristöissä, joissa kyseiset riippuvuustyönkulut ovat myös olemassa, mutta riippuvuustunnuksia ei yhdistetä automaattisesti ympäristöjen välillä.
Käyttötapaukset
Tuotantovirheiden toistaminen
Vie epäonnistunut työnkulku tuotantoympäristöstä ja toista se paikallisesti:
# On production
wp queuety workflow export 42 --output=/tmp/workflow-42.json
# Copy the file to your local environment
# On local
wp queuety workflow replay /tmp/workflow-42.json
Toistetulla työnkululla on täsmälleen sama tila ja samat vaihemääritelmät. Käynnissä olevissa työnkuluissa nykyinen vaihe lisätään uudelleen jonoon, jotta suoritusta voi jatkaa siitä, mihin se jäi. Keskeytetyt tai odottavat työnkulut luodaan tarkastelua varten uudelleen samaan estettyyn tilaan.
Työnkulkujen siirtäminen ympäristöjen välillä
Siirrä työnkulku testiympäristöstä tuotantoon tai päinvastoin viemällä ja toistamalla se:
# On staging
wp queuety workflow export 15 --output=workflow.json
# On production
wp queuety workflow replay workflow.json
Auditointi ja arkistointi
Vie valmistuneet työnkulut pitkäaikaista säilytystä tai vaatimustenmukaisuutta varten. JSON-tiedosto sisältää koko suoritushistorian, myös syötteet, tulosteet, tilan ennen ja jälkeen, ajoitustiedot ja virheiden tiedot.
$data = Queuety::export_workflow( $workflow_id );
// Store $data in your archive system, S3, etc.