Rozgałęzianie przepływu pracy
Queuety może utworzyć w pełni niezależną kopię uruchomionego przepływu pracy. Rozgałęziony przepływ pracy rozpoczyna od tego samego kroku i z tym samym stanem co oryginał, ale od tej chwili oba przepływy działają niezależnie. Zmiany w jednym nie wpływają na drugi.
Rozgałęzianie przepływu pracy
PHP API
Wywołaj Queuety::fork_workflow(), podając identyfikator przepływu pracy. Zwróci ono identyfikator nowego przepływu:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Opcja | Opis |
|---|---|
<id> |
Identyfikator przepływu pracy do rozdzielenia (wymagany) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Jak to działa
Podczas rozgałęziania przepływu pracy:
- Wiersz oryginalnego przepływu pracy jest blokowany i odczytywany
- Wstawiany jest nowy wiersz przepływu pracy z tym samym stanem, definicjami kroków i bieżącym krokiem
- Nowy przepływ pracy otrzymuje nazwę
{original_name}_fork_{timestamp} - Bieżący krok jest dodawany do kolejki dla rozgałęzionego przepływu pracy
- W dzienniku zdarzeń obu przepływów pracy zapisywane jest zdarzenie
workflow_forked - Oryginalny przepływ pracy jest nadal przetwarzany normalnie
Rozgałęziony przepływ pracy jest całkowicie niezależny. Ma własny identyfikator, kopię stanu i wpisy w kolejce zadań. Od momentu rozgałęzienia każdy przepływ może swobodnie podążać inną ścieżką.
Zastosowania
Testy A/B procedur obsługi kroków
Rozgałęź przepływ pracy, aby przetestować dwie różne implementacje nadchodzącego 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.)
Analiza hipotetycznych scenariuszy
Rozgałęź przepływ pracy w punkcie decyzyjnym, aby sprawdzić różne gałęzie:
// 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żda kopia rozpoczyna od tych samych danych wejściowych, ale można ją zmodyfikować tak, aby podążała inną ścieżką.
Równoległe eksperymenty
Gdy przepływ pracy osiągnie punkt, w którym chcesz równolegle wypróbować kilka podejść, rozgałęź go osobno dla każdego z nich i porównaj wyniki po zakończeniu wszystkich kopii.
Śledzenie rozgałęzień
Zdarzenie w dzienniku każdego przepływu pracy zawiera odwołanie do drugiego:
- W oryginalnym przepływie:
context.forked_workflow_idwskazuje nowy przepływ pracy - W rozgałęzionym:
context.forked_from_workflow_idwskazuje oryginalny przepływ pracy
Aby znaleźć wszystkie rozgałęzienia danego przepływu pracy, wyszukaj w dziennikach:
$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
}
}
Ograniczenia
- Rozgałęziony przepływ pracy nie dziedziczy historii dziennika zdarzeń oryginału. Zaczyna z pustym dziennikiem.
- Powiązania między przepływami pracy a ich uruchomieniami nie są kopiowane. Jeśli w oryginalnym przepływie trwa uruchomienie run-workflow, rozgałęziony przepływ nie otrzymuje jego kopii.
- Rozgałęzienie jest migawką bieżącego stanu. Zadania będące w toku w oryginalnym przepływie pracy nie są kopiowane.