Preskočiť na obsah

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:

PHP
use Queuety\Queuety;

$forked_id = Queuety::fork_workflow( $workflow_id );

CLI

Shell
wp queuety workflow fork <id>
Možnosť Popis
<id> ID workflowu, ktorý chcete rozvetviť (povinné)
Shell
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.

Ako to funguje

Pri rozvetvení workflowu:

  1. Riadok pôvodného workflowu sa uzamkne a načíta
  2. Vloží sa nový riadok workflowu s rovnakým stavom, definíciami krokov a aktuálnym krokom
  3. Názov nového workflowu je {original_name}_fork_{timestamp}
  4. Aktuálny krok sa zaradí do frontu pre rozvetvený workflow
  5. V pôvodnom aj rozvetvenom workflowe sa zaznamená udalosť workflow_forked v protokole
  6. 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:

PHP
// 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:

PHP
// 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_id odkazuje na nový workflow
  • V rozvetvenom: context.forked_from_workflow_id odkazuje na pôvodný workflow

Vyhľadajte všetky rozvetvenia workflowu v protokoloch:

PHP
$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ú.