İçeriğe geç

İş Akışı Dallandırma

Queuety, çalışan bir iş akışının tamamen bağımsız bir kopyasını oluşturabilir. Dallandırılan iş akışı, orijinaliyle aynı adımda ve aynı durumla başlar; ancak bu noktadan sonra iki iş akışı birbirinden bağımsız ilerler. Birindeki değişiklikler diğerini etkilemez.

İş akışını dallandırma

PHP API

İş akışı kimliğiyle Queuety::fork_workflow() çağrısını yapın. Yeni iş akışı kimliğini döndürür:

PHP
use Queuety\Queuety;

$forked_id = Queuety::fork_workflow( $workflow_id );

CLI

Kabuk
wp queuety workflow fork <id>
Seçenek Açıklama
<id> Çatallanacak iş akışı kimliği (gerekli)
Kabuk
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.

Nasıl çalışır

Bir iş akışını dallandırdığınızda:

  1. Orijinal iş akışı satırı kilitlenir ve okunur
  2. Aynı durum, adım tanımları ve geçerli adımla yeni bir iş akışı satırı eklenir
  3. Yeni iş akışının adı {original_name}_fork_{timestamp} olur
  4. Geçerli adım, dallandırılan iş akışı için kuyruğa alınır
  5. Hem orijinal hem de dallandırılan iş akışına bir workflow_forked günlük olayı kaydedilir
  6. Orijinal iş akışı normal şekilde işlemeye devam eder

Dallandırılan iş akışı tamamen bağımsızdır. Kendine ait bir iş akışı kimliği, durum kopyası ve iş kuyruğu girdileri vardır. Dallandırma noktasından itibaren her iş akışı serbestçe farklı yollardan ilerleyebilir.

Kullanım alanları

Adım işleyicilerini A/B testiyle sınama

Yaklaşan bir adımın iki farklı uygulamasını sınamak için bir iş akışını dallandırın:

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.)

Olası durum analizi

Farklı dalları incelemek için bir iş akışını karar noktasında dallandırın:

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 );

Her dal aynı girdi durumuyla ilerler, ancak farklı yollar izleyecek şekilde değiştirilebilir.

Paralel denemeler

Bir iş akışı birden fazla yaklaşımı paralel olarak denemek istediğiniz bir noktaya geldiğinde, her yaklaşım için iş akışını dallandırın ve tüm dallar tamamlandıktan sonra sonuçları karşılaştırın.

Dalları izleme

Her iş akışındaki günlük olayı diğerine bir referans içerir:

  • Orijinalde: context.forked_workflow_id yeni iş akışını gösterir
  • Dalda: context.forked_from_workflow_id orijinal iş akışını gösterir

Bir iş akışının tüm dallarını bulmak için günlükleri sorgulayın:

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
    }
}

Sınırlamalar

  • Dallandırılan iş akışı, orijinalin olay günlüğü geçmişini devralmaz. Temiz bir olay günlüğüyle başlar.
  • İş akışını çalıştırma ilişkileri çoğaltılmaz. Orijinal iş akışında çalışan bir iş akışı çalıştırma adımı varsa dal bunun kopyasını almaz.
  • Dal, mevcut durumun anlık görüntüsüdür. Orijinal iş akışının devam eden işleri çoğaltılmaz.