워크플로우 분기
Queuety는 실행 중인 워크플로우를 완전히 독립적인 사본으로 분기할 수 있습니다. 분기된 워크플로우는 원본과 같은 단계 및 같은 상태에서 시작하지만, 그 시점부터 두 워크플로우는 독립적으로 진행됩니다. 한쪽의 변경 사항은 다른 쪽에 영향을 주지 않습니다.
워크플로우 분기하기
PHP API
워크플로우 ID를 사용해 Queuety::fork_workflow()를 호출하세요. 새 워크플로우 ID가 반환됩니다:
PHP
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
셸
wp queuety workflow fork <id>
| 옵션 | 설명 |
|---|---|
<id> |
분기할 워크플로 ID(필수) |
셸
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
작동 방식
워크플로우를 분기하면 다음 작업이 수행됩니다:
- 원본 워크플로우 행을 잠그고 읽습니다.
- 동일한 상태, 단계 정의 및 현재 단계를 가진 새 워크플로우 행을 삽입합니다.
- 새 워크플로우의 이름은
{original_name}_fork_{timestamp}입니다. - 분기된 워크플로우의 현재 단계가 대기열에 추가됩니다.
- 원본 및 분기된 워크플로우 양쪽에
workflow_forked로그 이벤트가 기록됩니다. - 원본 워크플로우는 평소처럼 처리를 계속합니다.
분기된 워크플로우는 완전히 독립적입니다. 자체 워크플로우 ID와 상태 사본, 작업 대기열 항목을 가집니다. 분기 시점 이후 각 워크플로우는 자유롭게 서로 다른 경로로 진행할 수 있습니다.
사용 사례
단계 핸들러 A/B 테스트
곧 실행할 단계의 두 가지 구현을 시험하려면 워크플로우를 분기하세요:
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.)
가정 분석
결정 지점에서 워크플로우를 분기해 여러 경로를 살펴보세요:
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 );
각 분기는 동일한 입력 상태에서 진행하지만, 서로 다른 경로를 따르도록 수정할 수 있습니다.
병렬 실험
워크플로우에서 여러 접근 방식을 병렬로 시험하려는 지점에 도달하면 각 접근 방식마다 분기하고, 모든 분기가 완료된 뒤 결과를 비교하세요.
분기 추적하기
각 워크플로우의 로그 이벤트에는 다른 워크플로우를 가리키는 참조가 포함됩니다:
- 원본에서는
context.forked_workflow_id가 새 워크플로우를 가리킵니다. - 분기에서는
context.forked_from_workflow_id가 원본을 가리킵니다.
로그를 조회해 워크플로우에서 분기된 모든 항목을 찾으세요:
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
}
}
제한 사항
- 분기된 워크플로우는 원본의 이벤트 로그 기록을 상속하지 않습니다. 빈 이벤트 로그로 시작합니다.
- 실행 워크플로우 관계는 복제되지 않습니다. 원본 워크플로우에 실행 중인 실행 워크플로우가 있었다면 분기에는 복사본이 생기지 않습니다.
- 분기는 현재 상태의 스냅샷입니다. 원본 워크플로우에서 진행 중인 작업은 복제되지 않습니다.