Ramificação de fluxos de trabalho
Queuety pode ramificar um fluxo de trabalho em execução e criar uma cópia totalmente independente. O fluxo de trabalho ramificado começa na mesma etapa e com o mesmo estado do original, mas ambos seguem de forma independente a partir desse ponto. As alterações em um não afetam o outro.
Ramificar um fluxo de trabalho
PHP API
Chame Queuety::fork_workflow() com o ID do fluxo de trabalho. Ele retorna o novo ID do fluxo de trabalho:
use Queuety\Queuety;
$forked_id = Queuety::fork_workflow( $workflow_id );
CLI
wp queuety workflow fork <id>
| Opção | Descrição |
|---|---|
<id> |
ID do fluxo de trabalho a ramificar (obrigatório) |
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
Como funciona
Ao ramificar um fluxo de trabalho:
- A linha do fluxo de trabalho original é bloqueada e lida
- Uma nova linha de fluxo de trabalho é inserida com o mesmo estado, as mesmas definições de etapas e a mesma etapa atual
- O nome do novo fluxo de trabalho é
{original_name}_fork_{timestamp} - A etapa atual é enfileirada para o fluxo de trabalho ramificado
- Um evento de registro
workflow_forkedé registrado nos fluxos de trabalho original e ramificado - O fluxo de trabalho original continua sendo processado normalmente
O fluxo de trabalho ramificado é totalmente independente. Ele tem seu próprio ID, sua própria cópia do estado e suas próprias entradas na fila de trabalhos. A partir da ramificação, cada fluxo de trabalho pode seguir caminhos diferentes livremente.
Casos de uso
Testar manipuladores de etapas com testes A/B
Ramifique um fluxo de trabalho para testar duas implementações diferentes de uma próxima etapa:
// 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.)
Análise de cenários hipotéticos
Ramifique um fluxo de trabalho em um ponto de decisão para explorar caminhos diferentes:
// 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 );
Cada ramificação segue com o mesmo estado de entrada, mas pode ser modificada para percorrer caminhos diferentes.
Experimentação em paralelo
Quando um fluxo de trabalho chegar a um ponto em que você queira testar várias abordagens em paralelo, crie uma ramificação para cada abordagem e compare os resultados quando todas forem concluídas.
Acompanhar ramificações
O evento de registro de cada fluxo de trabalho inclui uma referência ao outro:
- No original:
context.forked_workflow_idaponta para o novo fluxo de trabalho - Na ramificação:
context.forked_from_workflow_idaponta para o original
Consulte os registros para encontrar todas as ramificações de um fluxo de trabalho:
$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
}
}
Limitações
- O fluxo de trabalho ramificado não herda o histórico do registro de eventos do original. Ele começa com um registro de eventos vazio.
- As relações de execução de fluxos de trabalho não são duplicadas. Se o fluxo de trabalho original tiver uma execução de outro fluxo em andamento, a ramificação não receberá uma cópia dela.
- A ramificação é uma captura do estado atual. Os trabalhos em andamento do fluxo de trabalho original não são duplicados.