Töövoo eksport ja taasesitus
Queuety saab eksportida töövoo täieliku käitusajaloo teisaldatavas JSON-vormingus ja taasesitada selle teises keskkonnas. See on kasulik tootmiskeskkonna vigade kohalikuks taasesitamiseks, töövoogude keskkondade vahel migreerimiseks ja auditeerimiseks.
Töövoo eksportimine
PHP API
Kutsu Queuety::export_workflow() välja töövoo ID-ga. See tagastab JSON-vormingusse teisendatava massiivi:
use Queuety\Queuety;
$data = Queuety::export_workflow( $workflow_id );
Et saada otse JSON-string:
$json = json_encode( $data, JSON_PRETTY_PRINT );
file_put_contents( '/tmp/workflow-42.json', $json );
CLI
wp queuety workflow export <id> [--output=<file>]
| Suvand | Kirjeldus |
|---|---|
<id> |
Töövoo ID (nõutav) |
--output=<file> |
Failitee, kuhu kirjutada väärtus JSON. Vaikimisi standardväljundisse. |
# Print to stdout
wp queuety workflow export 42
# Write to a file
wp queuety workflow export 42 --output=/tmp/workflow-42.json
Töövoo taasesitamine
PHP API
Kutsu Queuety::replay_workflow() välja ekspordiandmetega. See tagastab uue töövoo 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>
| Suvand | Kirjeldus |
|---|---|
<file> |
Eksporditud JSON faili tee (nõutav) |
wp queuety workflow replay /tmp/workflow-42.json
# Success: Workflow replayed. New workflow ID: 85.
Struktuur JSON
Eksport sisaldab töövoo täielikku olekut, seotud töid, jäljesündmusi, logikirjeid, salvestatud signaale, artefakte, tükke ja kõiki töövoogude sõltuvuste ooteandmeid:
{
"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"
}
Mõned väljad on ülaltoodud näites lühendatud. Tegelik eksport sisaldab kõiki jäljeveerge igast sündmuse reast.
Töövoo ekspordid säilitavad ka töövoo metaandmed, näiteks definition_version, definition_hash ja idempotency_key, kui need olid algsel käivitusel määratud.
Kuidas taasesitus toimib
Eksporditud töövoo taasesitamisel:
- Luuakse uus töövoo rida eksporditud oleku ja sammusätetega
- Uue töövoo nimi on
{original_name}_replay_{timestamp} - Ajaloolised töövoosündmused ja logid lisatakse uude keskkonda uuesti
- Salvestatud signaalid ja töövoo ootamise sõltuvusread taasesitatakse ajaloolise olekuna
- Kui algne töövoog oli endiselt olekus
running, lisatakse praegune samm töötlemiseks järjekorda. Kordus- jastart_workflows()-samme uuesti järjekorda ei lisata, seega jääb ühel neist peatuv taasesitus olekusserunningilma tööta (#17) - Kui algse töövoo olek oli
waiting_for_signal,waiting_for_workflows,paused,failed,cancelledvõicompleted, säilitatakse see olek taasesitatud töövoos
Taasesitatud töövoog saab uue ID ja töötab algsest sõltumatult. See ei mõjuta algset töövoogu.
waiting_for_workflows taasesituste korral luuakse eksporditud sõltuvusread uuesti samade töövoo ID-dega. See on kasulik auditeerimiseks ja keskkondades, kus need sõltuvustöövood on samuti olemas, kuid sõltuvuste ID-sid ei vastendata automaatselt eri keskkondade vahel.
Kasutusjuhud
Tootmiskeskkonna vigade taasesitamine
Ekspordi tootmiskeskkonnast nurjunud töövoog ja taasesita see kohalikult:
# 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
Taasesitatud töövoos on täpselt sama olek ja sammusätted. Töötavad töövood lisavad praeguse sammu uuesti järjekorda, et saaksid täitmist jätkata katkestuskohast, peatatud või ootel töövood luuakse aga kontrollimiseks uuesti samasse blokeeritud olekusse.
Töövoogude migreerimine keskkondade vahel
Töövoo saab viia testkeskkonnast tootmiskeskkonda (või vastupidi), eksportides ja taasesitades selle:
# On staging
wp queuety workflow export 15 --output=workflow.json
# On production
wp queuety workflow replay workflow.json
Auditeerimine ja arhiveerimine
Ekspordi lõpetatud töövood pikaajaliseks säilitamiseks või nõuetele vastavuse tagamiseks. JSON-fail sisaldab täielikku käitusajalugu, sealhulgas sisendeid, väljundeid, olekut enne ja pärast, ajastuse andmeid ning tõrgete üksikasju.
$data = Queuety::export_workflow( $workflow_id );
// Store $data in your archive system, S3, etc.