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:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Možnost | Popis |
|---|---|
<id> |
ID pracovního postupu k rozvětvení (povinné) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Jak to funguje
Při rozvětvení workflow:
- Řádek původního workflow se uzamkne a načte
- Vloží se nový řádek workflow se stejným stavem, definicemi kroků a aktuálním krokem
- Název nového workflow je
{original_name}_fork_{timestamp} - Aktuální krok se zařadí do fronty pro rozvětvené workflow
- Do původního i rozvětveného workflow se zaznamená událost protokolu
workflow_forked - 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:
// 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:
// 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_idodkazuje na nové workflow - V rozvětveném:
context.forked_from_workflow_idodkazuje na původní workflow
Dotazem nad protokoly najděte všechna rozvětvení workflow:
$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í.