Darbo eigos eksportavimas ir atkūrimas
Queuety gali eksportuoti visą darbo eigos vykdymo istoriją į perkeliamą JSON formatą ir atkurti ją kitoje aplinkoje. Tai naudinga norint vietoje atkurti gamybinėje aplinkoje aptiktas klaidas, perkelti darbo eigas iš vienos aplinkos į kitą ir atlikti auditą.
Darbo eigos eksportavimas
PHP API
Iškvieskite Queuety::export_workflow() nurodydami darbo eigos ID. Grąžinamas į JSON serializuojamas masyvas:
use Queuety\Queuety;
$data = Queuety::export_workflow( $workflow_id );
Jei norite tiesiogiai gauti JSON eilutę:
$json = json_encode( $data, JSON_PRETTY_PRINT );
file_put_contents( '/tmp/workflow-42.json', $json );
CLI
wp queuety workflow export <id> [--output=<file>]
| Parinktis | Aprašymas |
|---|---|
<id> |
Darbo eigos ID (privalomas) |
--output=<file> |
Failo, į kurį įrašomas JSON, kelias. Pagal numatytuosius nustatymus – stdout. |
# Print to stdout
wp queuety workflow export 42
# Write to a file
wp queuety workflow export 42 --output=/tmp/workflow-42.json
Darbo eigos atkūrimas
PHP API
Iškvieskite Queuety::replay_workflow() su eksporto duomenimis. Grąžinamas naujos darbo eigos ID:
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>
| Parinktis | Aprašymas |
|---|---|
<file> |
Eksportuoto JSON failo kelias (privalomas) |
wp queuety workflow replay /tmp/workflow-42.json
# Success: Workflow replayed. New workflow ID: 85.
Struktūra JSON
Eksporte yra visa darbo eigos būsena, susietos užduotys, pėdsakų įvykiai, žurnalo įrašai, išsaugoti signalai, artefaktai, dalys ir visos laukimo įrašų eilutės pagal darbo eigos priklausomybes:
{
"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"
}
Kai kurie laukai pateiktame pavyzdyje sutrumpinti. Tikrajame eksporte yra visi kiekvienos įvykio eilutės pėdsako stulpeliai.
Darbo eigos eksportuose taip pat išsaugomi metaduomenys, pavyzdžiui, definition_version, definition_hash ir idempotency_key, jei jie buvo nustatyti pradiniame vykdyme.
Kaip veikia atkūrimas
Atkuriant eksportuotą darbo eigą:
- Sukuriama nauja darbo eigos eilutė su eksportuota būsena ir žingsnių aprašais
- Naujos darbo eigos pavadinimas yra
{original_name}_replay_{timestamp} - Istoriniai darbo eigos įvykiai ir žurnalai iš naujo įterpiami į naują aplinką
- Išsaugoti signalai ir darbo eigos laukimo priklausomybių eilutės atkuriami kaip istorinė būsena
- Jei pradinė darbo eiga vis dar buvo
running, dabartinis žingsnis įtraukiamas į apdorojimo eilę. Kartojimo irstart_workflows()žingsniai į eilę iš naujo neįtraukiami, todėl atkūrimas, sustojęs ties vienu iš jų, liekarunningbe užduoties (#17) - Jei pradinė darbo eiga buvo
waiting_for_signal,waiting_for_workflows,paused,failed,cancelledarbacompletedbūsenos, ši būsena išsaugoma atkurtoje darbo eigoje
Atkurta darbo eiga gauna naują ID ir veikia nepriklausomai. Ji neturi įtakos pradinei darbo eigai.
Atkuriant waiting_for_workflows, eksportuotos priklausomybių eilutės sukuriamos iš naujo su tais pačiais darbo eigų ID. Tai naudinga atliekant auditą ir aplinkose, kuriose tos priklausomos darbo eigos taip pat egzistuoja, tačiau jų ID automatiškai nesusiejami su ID kitose aplinkose.
Naudojimo atvejai
Gamybinių klaidų atkūrimas
Eksportuokite nepavykusią darbo eigą iš gamybinės aplinkos ir pakartokite ją vietoje:
# 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
Pakartotos darbo eigos būsena ir žingsnių apibrėžtys yra visiškai tokios pačios. Vykdomose darbo eigose dabartinis žingsnis įtraukiamas į eilę iš naujo, kad galėtumėte tęsti vykdymą nuo vietos, kurioje jis buvo sustojęs, o pristabdytos arba laukiančios darbo eigos atkuriamos tokios užblokuotos būsenos, kad galėtumėte jas patikrinti.
Darbo eigų perkėlimas tarp aplinkų
Perkelkite darbo eigą iš paruošimo aplinkos į gamybinę (arba atvirkščiai) ją eksportuodami ir pakartodami:
# On staging
wp queuety workflow export 15 --output=workflow.json
# On production
wp queuety workflow replay workflow.json
Auditas ir archyvavimas
Eksportuokite užbaigtas darbo eigas ilgalaikiam saugojimui arba atitikties reikalavimams. Faile JSON pateikiama visa vykdymo istorija, įskaitant įvestis, išvestis, būseną prieš ir po, laiko duomenis ir išsamią informaciją apie klaidas.
$data = Queuety::export_workflow( $workflow_id );
// Store $data in your archive system, S3, etc.