İçeriğe geç

İş Akışında Zamanda Yolculuk

Queuety, bir iş akışını önceki bir adıma geri sarıp yürütmeyi o noktadan sürdürmenizi sağlar. Bir adım hatalı çıktı ürettiğinde, farklı bir yapılandırmayla yeniden denemek istediğinizde veya tüm iş akışını baştan başlatmadan bozuk verileri kurtarmanız gerektiğinde kullanışlıdır.

Geri sarma, İş Akışı Olay Günlüğü özelliğine bağlıdır. Hedef adım için olay günlüğünde state_after verileri bulunmalıdır.

İş akışını geri sarma

PHP API

Geri sarılacak iş akışı kimliği ve adım diziniyle Queuety::rewind_workflow() çağrısını yapın:

PHP
use Queuety\Queuety;

// Rewind workflow 42 to step 1.
// The state is restored to the snapshot taken after step 1 completed,
// and step 2 is enqueued for re-execution.
Queuety::rewind_workflow( $workflow_id, to_step: 1 );

to_step parametresi, tamamlanmış durumu geri yüklenecek adımın sıfır tabanlı dizinidir. Yürütme sonraki adımdan (to_step + 1) devam eder.

CLI

Kabuk
wp queuety workflow rewind <id> <step>
Seçenek Açıklama
<id> İş akışı kimliği (gerekli)
<step> Geri sarılacak adım dizini, 0 tabanlı (gerekli)
Kabuk
wp queuety workflow rewind 42 1

Nasıl çalışır

Bir iş akışını N. adıma geri sardığınızda:

  1. Olay günlüğünde, N. adım tamamlandıktan sonra kaydedilen state_after değeri sorgulanır
  2. Anlık görüntü yoksa RuntimeException fırlatılır
  3. İş akışı satırı kilitlenir
  4. İş akışı durumu, mevcut iş akışı satırındaki ayrılmış tüm anahtarlar (_steps, _queue, _priority vb.) korunarak anlık görüntüyle değiştirilir
  5. current_step N + 1 olarak, status ise running olarak ayarlanır
  6. error_message ve failed_at alanları temizlenir
  7. N + 1 dizinindeki adım işlenmek üzere kuyruğa alınır
  8. Bir workflow_rewound günlük olayı kaydedilir

Ardından çalışan, kuyruğa alınan adımı işler ve iş akışı bu noktadan itibaren normal şekilde devam eder.

Gereksinimler

Geri sarma, olay günlüğünde state_after verisinin bulunmasını gerektirir. Olay günlüğü bunu her step_completed olayı için otomatik olarak kaydeder. Olay günlüğü budanmışsa (WorkflowEventLog::prune() aracılığıyla) ve hedef adımın durumu artık mevcut değilse geri sarma başarısız olur.

Olay günlüğü saklama süresinin, geri sarmaya ihtiyaç duyabileceğiniz dönemi kapsadığından emin olun.

Kullanım alanları

Hatalı bir adım işleyicisini düzeltme

Bir adım işleyicisindeki hata yanlış çıktı ürettiyse düzeltmeyi dağıtıp geri sarabilirsiniz:

PHP
// Step 2 (CallLLMHandler) produced garbled output due to a prompt bug.
// After fixing CallLLMHandler, rewind to step 1 so step 2 runs again
// with the corrected handler.
Queuety::rewind_workflow( $workflow_id, to_step: 1 );

Farklı yapılandırmayla yeniden deneme

Bir adım harici etkenler (API hız sınırı, hatalı kimlik bilgileri) nedeniyle başarısız olduğunda, yapılandırmayı düzeltip yeniden çalıştırmak için geri sarın:

PHP
// Step 3 failed because the API key was expired.
// After updating the key, rewind to step 2 so step 3 retries.
Queuety::rewind_workflow( $workflow_id, to_step: 2 );

Hatalı verilerden kurtarma

Önceki bir adım duruma hatalı veri eklediyse bilinen iyi bir anlık görüntüye geri sarın:

PHP
// Step 0 fetched correct data, but step 1 corrupted it.
// Rewind to step 0 to restore the good state and re-run step 1.
Queuety::rewind_workflow( $workflow_id, to_step: 0 );

Yeniden denemeyle karşılaştırma

Özellik retry_workflow() rewind_workflow()
Nereden devam eder Başarısız adım Önceki herhangi bir adım
Durum Mevcut iş akışı durumu Olay günlüğünden geri yüklenir state_after
Gereksinim İş akışının durumu failed olmalı Hedef adımda olay günlüğü anlık görüntüsü
Sonraki durum running running
Günlük olayı yok workflow_rewound