Rozvetvovanie workflowov
Queuety dokáže rozvetviť spustený workflow do úplne nezávislej kópie. Rozvetvený workflow začne na tom istom kroku a v rovnakom stave ako pôvodný, no od tohto momentu pokračujú samostatne. Zmeny v jednom neovplyvnia druhý.
Rozvetvenie workflowu
PHP API
Zavolajte Queuety::fork_workflow() s ID workflowu. Vráti ID nového workflowu:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Možnosť | Popis |
|---|---|
<id> |
ID workflowu, ktorý chcete rozvetviť (povinné) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Ako to funguje
Pri rozvetvení workflowu:
- Riadok pôvodného workflowu sa uzamkne a načíta
- Vloží sa nový riadok workflowu s rovnakým stavom, definíciami krokov a aktuálnym krokom
- Názov nového workflowu je
{original_name}_fork_{timestamp} - Aktuálny krok sa zaradí do frontu pre rozvetvený workflow
- V pôvodnom aj rozvetvenom workflowe sa zaznamená udalosť
workflow_forkedv protokole - Pôvodný workflow pokračuje v spracovaní ako zvyčajne
Rozvetvený workflow je úplne nezávislý. Má vlastné ID workflowu, vlastnú kópiu stavu a vlastné položky vo fronte úloh. Od okamihu rozvetvenia sa každý workflow môže vyvíjať samostatne.
Prípady použitia
Testovanie obslužných rutín krokov A/B testovaním
Rozvetvite workflow a otestujte dve rôzne implementácie nadchádzajúceho kroku:
// 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.)
Analýza scenárov „čo ak“
Rozvetvite workflow v bode rozhodovania a preskúmajte rôzne vetvy:
// 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 );
Každé rozvetvenie pokračuje s rovnakým vstupným stavom, no môžete ho upraviť tak, aby zvolilo inú cestu.
Paralelné experimentovanie
Keď workflow dosiahne bod, v ktorom chcete vyskúšať viacero prístupov súčasne, rozvetvite ho pre každý prístup a po dokončení všetkých rozvetvení porovnajte výsledky.
Sledovanie rozvetvení
Udalosť v protokole každého workflowu obsahuje odkaz na druhý workflow:
- V pôvodnom:
context.forked_workflow_idodkazuje na nový workflow - V rozvetvenom:
context.forked_from_workflow_idodkazuje na pôvodný workflow
Vyhľadajte všetky rozvetvenia workflowu v protokoloch:
$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
}
}
Obmedzenia
- Rozvetvený workflow nepreberá históriu udalostí z pôvodného workflowu. Začína s prázdnym protokolom udalostí.
- Vzťahy k spusteným workflowom sa neduplikujú. Ak mal pôvodný workflow spustený podriadený workflow, rozvetvený workflow jeho kópiu nedostane.
- Rozvetvený workflow je snímkou aktuálneho stavu. Žiadne rozpracované úlohy pôvodného workflowu sa neduplikujú.