Přejít k obsahu

Větvení workflow

Queuety může rozvětvit běžící workflow do zcela nezávislé kopie. Rozvětvené workflow začne ve stejném kroku a se stejným stavem jako původní, ale od té chvíle postupují nezávisle. Změny jednoho neovlivní druhé.

Rozvětvení workflow

PHP API

Zavolejte Queuety::fork_workflow() s ID workflow. Vrátí nové ID workflow:

PHP
use Queuety\Queuety;

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

CLI

Shell
wp queuety workflow fork <id>
Možnost Popis
<id> ID pracovního postupu k rozvětvení (povinné)
Shell
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.

Jak to funguje

Při rozvětvení workflow:

  1. Řádek původního workflow se uzamkne a načte
  2. Vloží se nový řádek workflow se stejným stavem, definicemi kroků a aktuálním krokem
  3. Název nového workflow je {original_name}_fork_{timestamp}
  4. Aktuální krok se zařadí do fronty pro rozvětvené workflow
  5. Do původního i rozvětveného workflow se zaznamená událost protokolu workflow_forked
  6. Původní workflow pokračuje v běžném zpracování

Rozvětvené workflow je zcela nezávislé. Má vlastní ID workflow, kopii stavu i položky ve frontě úloh. Od okamžiku rozvětvení se může každé workflow vyvíjet jinak.

Příklady použití

A/B testování obslužných rutin kroků

Rozvětvěte workflow a otestujte dvě různé implementace nadcházejícího 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 scénářů „co kdyby“

Rozvětvěte workflow v bodě rozhodnutí a prozkoumejte různé větve:

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é rozvětvení pokračuje se stejným vstupním stavem, ale lze ho upravit tak, aby se vydalo jinou cestou.

Experimenty souběžně

Když workflow dosáhne bodu, od kterého chcete souběžně vyzkoušet několik přístupů, rozvětvěte ho pro každý přístup a po dokončení všech rozvětvení porovnejte výsledky.

Sledování rozvětvených workflow

Událost protokolu v každém workflow obsahuje odkaz na to druhé:

  • V původním: context.forked_workflow_id odkazuje na nové workflow
  • V rozvětveném: context.forked_from_workflow_id odkazuje na původní workflow

Dotazem nad protokoly najděte všechna rozvětvení workflow:

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
    }
}

Omezení

  • Rozvětvené workflow nepřebírá historii protokolu událostí původního workflow. Začíná s prázdným protokolem událostí.
  • Vztahy ke spuštěným workflow se nekopírují. Pokud v původním workflow právě běželo další workflow, jeho kopii rozvětvené workflow nedostane.
  • Rozvětvení je snímkem aktuálního stavu. Rozpracované úlohy původního workflow se nekopírují.