Darbo eigos šakojimas
Queuety gali išskaidyti vykdomą darbo eigą į visiškai nepriklausomą kopiją. Išskaidyta darbo eiga pradedama nuo to paties žingsnio ir su ta pačia būsena kaip pradinė, tačiau nuo tada abi darbo eigos vykdomos nepriklausomai. Vienos pakeitimai neveikia kitos.
Darbo eigos šakojimas
PHP API
Iškvieskite Queuety::fork_workflow() ir perduokite darbo eigos ID. Grąžinamas naujos darbo eigos ID:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Parinktis | Aprašymas |
|---|---|
<id> |
Išsišakojamos darbo eigos ID (privalomas) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Kaip tai veikia
Išskaidžius darbo eigą:
- Pradinės darbo eigos eilutė užrakinama ir nuskaitoma
- Įterpiama nauja darbo eigos eilutė su ta pačia būsena, žingsnių apibrėžtimis ir dabartiniu žingsniu
- Naujos darbo eigos pavadinimas yra
{original_name}_fork_{timestamp} - Dabartinis žingsnis įtraukiamas į išskaidytos darbo eigos eilę
- Abiejų darbo eigų žurnale įrašomas įvykis
workflow_forked - Pradinė darbo eiga vykdoma toliau kaip įprasta
Išskaidyta darbo eiga yra visiškai nepriklausoma. Ji turi savo darbo eigos ID, atskirą būsenos kopiją ir atskirus užduočių eilės įrašus. Nuo išskaidymo momento abi darbo eigos gali laisvai skirtis.
Naudojimo atvejai
Žingsnių apdorojimo funkcijų A/B testavimas
Išskaidykite darbo eigą, kad išbandytumėte dvi skirtingas būsimo žingsnio realizacijas:
// 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.)
Analizė „kas, jeigu“
Išskaidykite darbo eigą sprendimo taške, kad išbandytumėte skirtingas šakas:
// 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 );
Kiekviena išskaidyta darbo eiga pradedama su ta pačia įvesties būsena, tačiau ją galima pakeisti, kad būtų pasirinkti skirtingi keliai.
Lygiagretus eksperimentavimas
Kai darbo eiga pasiekia tašką, kuriame norite lygiagrečiai išbandyti kelis metodus, išskaidykite ją kiekvienam metodui ir palyginkite rezultatus, kai visos išskaidytos darbo eigos bus užbaigtos.
Išskaidytų eigų stebėjimas
Kiekvienos darbo eigos žurnalo įraše yra nuoroda į kitą darbo eigą:
- Pradinėje darbo eigoje:
context.forked_workflow_idnurodo naują darbo eigą - Išskaidytoje darbo eigoje:
context.forked_from_workflow_idnurodo pradinę darbo eigą
Ieškokite žurnaluose, kad rastumėte visas darbo eigos išskaidytas kopijas:
$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
}
}
Apribojimai
- Išskaidyta darbo eiga nepaveldi pradinės darbo eigos įvykių žurnalo istorijos. Jos įvykių žurnalas pradedamas tuščias.
- Darbo eigų vykdymo ryšiai nedubliuojami. Jei pradinė darbo eiga vykdė kitą darbo eigą, išskaidyta kopija jos negauna.
- Išskaidyta kopija yra dabartinės būsenos momentinė kopija. Pradinės darbo eigos tuo metu vykdomos užduotys nedubliuojamos.