Töövoo hargnemine
Queuety saab hargneda töötavast töövoost täiesti sõltumatuks koopiaks. Hargnenud töövoog algab sama sammu ja sama olekuga nagu originaal, kuid pärast seda kulgevad need kaks töövoogu iseseisvalt. Ühes tehtud muudatused ei mõjuta teist.
Töövoo hargnemine
PHP API
Kutsuge välja Queuety::fork_workflow(), andes töövoo ID. See tagastab uue töövoo ID:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Suvand | Kirjeldus |
|---|---|
<id> |
Hargnemise lähteks oleva töövoo ID (nõutav) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Kuidas see töötab
Töövoo hargnemisel:
- Algse töövoo rida lukustatakse ja loetakse
- Sisestatakse uus töövoo rida sama oleku, sammu definitsioonide ja praeguse sammuga
- Uue töövoo nimi on
{original_name}_fork_{timestamp} - Hargnenud töövoo praegune samm lisatakse järjekorda
- Algse ja hargnenud töövoo kohta salvestatakse
workflow_forkedlogisündmus - Algne töövoog jätkab tavapärast töötlemist
Hargnenud töövoog on täiesti sõltumatu. Sellel on oma töövoo ID, oleku koopia ja tööde järjekorra kirjed. Alates hargnemiskohast võib kumbki töövoog vabalt oma rada minna.
Kasutusjuhud
Sammukäitlejate A/B-testimine
Hargne töövoog, et katsetada eelseisva sammu kaht eri teostust:
// Original workflow will use the existing CallLLMHandler (GPT-4).
// Fork it to test with a different handler.
$forked_id = Queuety::fork_workflow( $workflow_id );
// Modify the forked workflow's state to use a different model.
// (Update the state via a custom step or direct DB update.)
Mis siis, kui? analüüs
Hargne töövoog otsustuspunktis, et uurida eri harusid:
// Workflow is at step 3, about to process data.
// Fork it so we can try two different processing strategies.
$fork_a = Queuety::fork_workflow( $workflow_id );
$fork_b = Queuety::fork_workflow( $workflow_id );
Iga haru jätkab sama algolekuga, kuid seda saab muuta nii, et see liiguks eri rada pidi.
Paralleelne katsetamine
Kui töövoog jõuab kohta, kus soovite paralleelselt proovida mitut lähenemisviisi, hargnege iga lähenemise jaoks eraldi ja võrrelge tulemusi pärast kõigi harude lõppemist.
Harude jälgimine
Iga töövoo logisündmus sisaldab viidet teisele töövoole:
- Algsel töövoo kirjel viitab
context.forked_workflow_iduuele töövoole - Hargnenud töövoo kirjel viitab
context.forked_from_workflow_idalgsele
Töövoo kõigi harude leidmiseks tehke logidest päring:
$logs = Queuety::logger()->for_workflow( $workflow_id );
foreach ( $logs as $entry ) {
if ( 'workflow_forked' === $entry['event'] ) {
$context = json_decode( $entry['context'] ?? '{}', true );
// $context['forked_workflow_id'] is the new workflow
}
}
Piirangud
- Hargnenud töövoog ei päri algse töövoo sündmuslogi ajalugu. Selle sündmuslogi on tühi.
- Töövoogude käivitamise seoseid ei dubleerita. Kui algsel töövool oli käivitatud töövoog, ei saa haru sellest koopiat.
- Hargnemine loob hetkeseisust koopia. Algse töövoo pooleliolevaid töid ei dubleerita.