Förgrening av arbetsflöden
Queuety kan förgrena ett pågående arbetsflöde till en helt oberoende kopia. Det förgrenade arbetsflödet börjar vid samma steg och med samma tillstånd som originalet, men de två arbetsflödena fortsätter oberoende av varandra därifrån. Ändringar i det ena påverkar inte det andra.
Förgrena ett arbetsflöde
PHP API
Anropa Queuety::fork_workflow() med arbetsflödets ID. Det returnerar det nya arbetsflödets ID:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Alternativ | Beskrivning |
|---|---|
<id> |
Arbetsflödes-ID att förgrena (krävs) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Så fungerar det
När du förgrenar ett arbetsflöde:
- Låses och läses raden för det ursprungliga arbetsflödet
- Infogas en ny arbetsflödesrad med samma tillstånd, stegdefinitioner och aktuella steg
- Får det nya arbetsflödet namnet
{original_name}_fork_{timestamp} - Köas det aktuella steget för det förgrenade arbetsflödet
- Registreras en
workflow_forked-logghändelse för både det ursprungliga och det förgrenade arbetsflödet - Fortsätter det ursprungliga arbetsflödet som vanligt
Det förgrenade arbetsflödet är helt oberoende. Det har ett eget arbetsflödes-ID, en egen kopia av tillståndet och egna jobb i kön. Från förgreningspunkten kan arbetsflödena utvecklas åt olika håll.
Användningsområden
A/B-testning av steghanterare
Förgrena ett arbetsflöde för att testa två olika implementationer av ett kommande steg:
// 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.)
Tänk om-analys
Förgrena ett arbetsflöde vid en beslutspunkt för att utforska olika grenar:
// 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 );
Varje förgrening fortsätter med samma indata, men kan ändras så att den följer en annan väg.
Experimentera parallellt
När ett arbetsflöde når en punkt där du vill prova flera tillvägagångssätt parallellt förgrenar du det för varje tillvägagångssätt och jämför resultaten när alla förgreningar är klara.
Spåra förgreningar
Logghändelsen för varje arbetsflöde innehåller en referens till det andra:
- På originalet pekar
context.forked_workflow_idpå det nya arbetsflödet - På förgreningen pekar
context.forked_from_workflow_idpå originalet
Fråga loggarna för att hitta alla förgreningar av ett arbetsflöde:
$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änsningar
- Det förgrenade arbetsflödet ärver inte originalets händelselogg. Det börjar med en tom händelselogg.
- Relationer mellan arbetsflödeskörningar dupliceras inte. Om originalet hade en pågående arbetsflödeskörning får förgreningen ingen kopia av den.
- Förgreningen är en ögonblicksbild av det aktuella tillståndet. Pågående jobb för originalets arbetsflöde dupliceras inte.