Forgrening af workflows
Queuety kan forgrene et kørende workflow til en fuldstændig uafhængig kopi. Det forgrenede workflow starter ved samme trin og med samme tilstand som originalen, men de to workflows fortsætter uafhængigt derfra. Ændringer i det ene påvirker ikke det andet.
Forgrening af et workflow
PHP API
Kald Queuety::fork_workflow() med workflow-ID'et. Den returnerer det nye workflow-ID:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Valgmulighed | Beskrivelse |
|---|---|
<id> |
Workflow-id, der skal forgrenes (påkrævet) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Sådan fungerer det
Når du forgrener et workflow:
- Den oprindelige workflowrække låses og læses
- En ny workflowrække indsættes med samme tilstand, trindefinitioner og aktuelle trin
- Det nye workflows navn er
{original_name}_fork_{timestamp} - Det aktuelle trin sættes i kø for det forgrenede workflow
- En
workflow_forked-loghændelse registreres for både det oprindelige og det forgrenede workflow - Det oprindelige workflow fortsætter som normalt
Det forgrenede workflow er helt uafhængigt. Det har sit eget workflow-ID, sin egen tilstandskopi og sine egne jobposter i køen. Fra forgreningspunktet kan workflowsene udvikle sig forskelligt.
Anvendelsesområder
A/B-test af trinhåndterere
Forgren et workflow for at teste to forskellige implementeringer af et kommende trin:
// 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.)
Hvad nu hvis-analyse
Forgren et workflow ved et beslutningspunkt for at afprøve forskellige grene:
// 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 );
Hver forgrening fortsætter med samme inputtilstand, men kan ændres til at følge en anden sti.
Parallelle eksperimenter
Når et workflow når et punkt, hvor du vil afprøve flere tilgange parallelt, skal du forgrene det for hver tilgang og sammenligne resultaterne, når alle forgreninger er fuldført.
Sporing af forgreninger
Loghændelsen for hvert workflow indeholder en henvisning til det andet:
- På originalen peger
context.forked_workflow_idpå det nye workflow - På forgreningen peger
context.forked_from_workflow_idpå originalen
Forespørg i loggene for at finde alle forgreninger af et 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
}
}
Begrænsninger
- Det forgrenede workflow overtager ikke hændelsesloghistorikken fra originalen. Det starter med en tom hændelseslog.
- Relationer til run-workflows duplikeres ikke. Hvis det oprindelige workflow havde et kørende run-workflow, får forgreningen ikke en kopi af det.
- Forgreningen er et øjebliksbillede af den aktuelle tilstand. Job, der er under behandling for det oprindelige workflow, duplikeres ikke.